UtilityRunJob error with DataStage 8.1

Post questions here relative to DataStage Enterprise/PX Edition for such areas as Parallel job design, Parallel datasets, BuildOps, Wrappers, etc.

Moderators: chulett, rschirm, roy

Post Reply
marcelo_almeida
Premium Member
Premium Member
Posts: 46
Joined: Wed Jun 28, 2006 9:54 am
Location: Brasília - Brazil

UtilityRunJob error with DataStage 8.1

Post by marcelo_almeida »

Hi,

I am using the routine "UtilityRunJob" within a basic transformer in a parallel job in version 8.1.
I am referring to the routine this way:
UtilityRunJob ( 'JobOD0040B', 'PAR_DATA_MOV_ABERTO =': lnk_02.DATA_MOV_ABERTO_OD: '| SISTEMAS_DATA_EM =': lnk_02.SISTEMAS_DATA_EM, 0, 0)

The job where the basic bransformer is, run normally, however, the job JobOD0040B aborts always with these messages in the log:
"Job control process (pid 34664) has failed"
"Job aborted JobOD0040B"
Changing only the number of pid.

Thank you!
Marcelo Almeida
antoniomarcelo@gmail.com
Brazil
JRodriguez
Premium Member
Premium Member
Posts: 425
Joined: Sat Nov 19, 2005 9:26 am
Location: New York City
Contact:

Post by JRodriguez »

Marcelo,

I would set the basic transfomer to execute sequentially or used a single node config file...or you will be executing the job multiple time as many as your $APT_CONFIG_FILE,

If you really need to execute the 'child' dependent job multiple times then make it multiple instance ...

Have fun ...
Julio Rodriguez
ETL Developer by choice

"Sure we have lots of reasons for being rude - But no excuses
marcelo_almeida
Premium Member
Premium Member
Posts: 46
Joined: Wed Jun 28, 2006 9:54 am
Location: Brasília - Brazil

Post by marcelo_almeida »

Rodriguez,

In fact, the job JobOD0040B runs only once, as the parent job will generate only one record.
The goal is to pass the result as a parameter for the job JobOD0040B.
The transformer is running sequentially.

Thank you!
Marcelo Almeida
antoniomarcelo@gmail.com
Brazil
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

I'm curious why you are not using a Sequence job for this? :?
-craig

"You can never have too many knives" -- Logan Nine Fingers
marcelo_almeida
Premium Member
Premium Member
Posts: 46
Joined: Wed Jun 28, 2006 9:54 am
Location: Brasília - Brazil

Post by marcelo_almeida »

chulett ,

The value I need to pass as a parameter is the result of an SQL query.
To get this result through a sequence would need to write the output into a file and create a routine to read this file in sequence and pass the value as a parameter.
However, I can not write temporary files on the machine.

Thank you!
Marcelo Almeida
antoniomarcelo@gmail.com
Brazil
JRodriguez
Premium Member
Premium Member
Posts: 425
Joined: Sat Nov 19, 2005 9:26 am
Location: New York City
Contact:

Post by JRodriguez »

Marcelo,

How about using a sequence and two jobs. The first one, a server job extracts the value using your SQL and place it in the job's user status area. The second job activity (obOD0040B) will have the previous job user status available to be pass as a parameter value

Search the forum for other poster on this. I rather prefer this method because is more clean


Thanks,

Julio
Julio Rodriguez
ETL Developer by choice

"Sure we have lots of reasons for being rude - But no excuses
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

Exactly... check into the USERSTATUS functionality to pass informaiton between jobs without 'landing' it.
-craig

"You can never have too many knives" -- Logan Nine Fingers
marcelo_almeida
Premium Member
Premium Member
Posts: 46
Joined: Wed Jun 28, 2006 9:54 am
Location: Brasília - Brazil

Post by marcelo_almeida »

I created a test and worked properly when I used the routine changing the $ UserStatus within a server job.

However, I need to do this in a basic transformer inserted in a parallel job. This way is not working, the value is not assigned to the variable $ UserStatus.

Thank you,
Marcelo Almeida
antoniomarcelo@gmail.com
Brazil
platonfi
Premium Member
Premium Member
Posts: 27
Joined: Mon May 26, 2008 1:39 am

Post by platonfi »

marcelo_almeida wrote:I created a test and worked properly when I used the routine changing the $ UserStatus within a server job.

However, I need to do this in a basic transformer inserted in a parallel job. This way is not working, the value is not assigned to the variable $ UserStatus.

Thank you,
There is no way you can read or write userstatus in a parallel job. That has beed clarified througly.
ray.wurlod
Participant
Posts: 54607
Joined: Wed Oct 23, 2002 10:52 pm
Location: Sydney, Australia
Contact:

Post by ray.wurlod »

marcelo_almeida wrote:However, I need to do this in a basic transformer inserted in a parallel job.
Why?
If there's only one record then a server job will be far more efficient.
And then you can use UtilityRunJob properly.
IBM Software Services Group
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
Post Reply