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