Extract Invocation Id Expression from all sequencers in proj

A forum for discussing DataStage<sup>®</sup> basics. If you're not sure where your question goes, start here.

Moderators: chulett, rschirm, roy

Post Reply
mak
Participant
Posts: 24
Joined: Thu Oct 16, 2003 9:15 pm

Extract Invocation Id Expression from all sequencers in proj

Post by mak »

Hi

Is there a way to extract Invocation Id Expression from all sequencers in project?

Thanks in advance
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

First, help us out by exlaining what "Invocation Id Expression" would be and what you mean by extract. Also, how are you planning on using this information?
-craig

"You can never have too many knives" -- Logan Nine Fingers
mak
Participant
Posts: 24
Joined: Thu Oct 16, 2003 9:15 pm

Post by mak »

craig,

sorry for delayed response.

By Invocation id expression, i mean the expression we used to create a unique DSJobinvocationId for Job Activity in sequencer.

Here is a sample expression we are using.
SequencerName:"_":PrevJob.$JobName:"_":DSJobInvocationId

Where SequencerName is a jobparameter.

we are migrating from 7.x to 8.1 and facing some issues with DSJobInvocationId expression evaluation. The above expression does not evaluate completely in v8.1 but works fine in 7. This issue is with IBM support now.

Meanwhile, we are looking to find out all invocation ids from the project and figure out a way to change them.

based on the following post, i found a solution to find all invocations.
viewtopic.php?t=99047&postdays=0&postor ... lt&start=0

RECORD 15 and RECORD 17 in DS_JOBOBJECTS where DS_JOBOBJECTS.OLETYPE='CJSJobActivity' give DSJobInvocationId for a JobActivity in a sequencer.

What is the difference between these? Also is there a way to quickly to modify the DSJobinvocation by updating DS_JOBOBJECTS? we have about 5000 invocations to modify.
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

I honestly don't know the difference between whatever function records 15 & 17 provide as that's secret repository, inner circle stuff. :wink:

I would suggest your best method to make a mass change like that is to export the multi-instance jobs and make the change to the dsx using your editor of choice. Then re-import of course.

Out of curiousity, what does "does not evaluate completely" mean? Which bit is not working?
-craig

"You can never have too many knives" -- Logan Nine Fingers
mak
Participant
Posts: 24
Joined: Thu Oct 16, 2003 9:15 pm

Post by mak »

Thanks for quick reply.

After looking at dsx file, looks like RECORD 15 is Description, RECORD 17 is DisplayValue from DSRECORD.

And Regarding the issue,

in v7

SequencerName:"_":PrevJob.$JobName:"_":DSJobInvocationId evaluates to XYZ_PREVJOB_INSTANCE1
XYZ_PREVJOB_INSTANCE2 etc.,

and in v8

it just evaluates to XYZ_PREVJOB and if two instances run parallelly second instance fails with
Controller problem: Error calling DSRunJob(......) code=-2 [Job is not in the right state (compiled and not running)]

If we change the order of the variables in the expression it works.
SequencerName:"_":DSJobInvocationId:"_":PrevJob.$JobName
kduke
Charter Member
Charter Member
Posts: 5227
Joined: Thu May 29, 2003 9:47 am
Location: Dallas, TX
Contact:

Post by kduke »

The record types in DS_JOBOBJECTS vary by OLETYPE. OLETYPE is a field in the table. The ROOT record is a special record where job level data is stored like parameter names and their defaults.

DSJobActivity is pretty much what it looks like. These records store Stages which run other jobs in this job sequence. These records store invocation ids and parameter names and values.

Craig is correct this is inner workings of DataStage and can change from release to release. So be careful. You can find what to change this way. I would not update these records directly.
Mamu Kim
Post Reply