Chase, John wrote:
Hi, All,

Got a little puzzle here we can't seem to figure out.  A batch job consists
of three jobsteps, each of which invokes a multi-step PROC.  Example:

//JOBNAME  JOB ...
//STEP01   EXEC PROC1
//STEP02   EXEC PROC2,COND=(0,LT)
//STEP03   EXEC PROC3,COND=(1,LT)

Each PROC is structured the same, with the same COND on each procstep:

//PROCn   PROC
//PSTEP1  EXEC PGM=PROGn1,COND=(0,LT)
//PSTEP2  EXEC PGM=PROGn2,COND=(0,LT)
//PSTEP3  EXEC PGM=PROGn3,COND=(0,LT)
//....

Jobsteps 1 and 2 complete with RC=0, as does each procstep in PROC1 and
PROC2.

Jobstep 3, procstep 1 completes with RC=1 or higher, and the programmer
expects the remainder of the job to be flushed; but all remaining procsteps
are executed.  The job finally abends S0C7 in a later procstep because a
dataset that was intended to be populated in the first procstep is either
empty or non-existent.

The puzzle:  Why is the remainder of PROC3 executed when its first procstep
produces RC>0?

TIA,


When you specify a parameter on the EXEC statement
that invokes a proc, and do not specify a stepname,
which is what you have above, the parameter applies
to all steps (except for the PARM parameter, which
doesn't apply here). So for PROC3 the COND parameter
is effectively COND=(1,LT) on each step.

Now for the first step, 1 LT 0 is false, so the
step runs (wonderfulness of COND, eh?). Now if
the first step produces RC of 1, the next step
should run (1 LT 1 is false, so step runs) but
if the first step produces RC > 1, then step
2 should not run (1 LT 2 is true, so step will
not run). So for step 1 producing RC of 1, I
would expect subsequent steps to run; but if
any step produces RC > 1, then remaining steps
should flush.

Kind regards,

-Steve Comstock

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to