The syntax using stepname (not procstep name) is used because there is no 
nested procedure in that refer back.  By that I mean, the reference is not to a 
DD within a proc invoked by the procedure.  That is how I've always viewed it.  
I reread the JCL manual concerning backward references and it does not make 
that clear.  But it does say


*.stepname.ddname Asks the system to copy the data set name from DD statement, 
ddname, in an earlier step, stepname, in the same job.
*.stepname.procstepname.ddname Asks the system to copy the data set name from a 
DD statement in a cataloged or in-stream procedure. Stepname is the name of 
this job step or an earlier job step that calls the procedure, procstepname is 
the name of the procedure step that contains the DD statement, and ddname is 
the name of the DD statement.


>From which I imply that if you invoke a proc and want to refer to/override a 
>DD in that proc, you need to add procstep name to your reference, else its any 
>DD in the same job.  JCL in the job that invokes the proc would need procstep 
>name.  JCL within the proc would not.  How many levels of nesting would that 
>remain true?  I suspect just the one.  I did not have much success having a 
>proc invoke a proc and try to override, in Job JCL or within the first proc, 
>DD statements in the nested proc.


    Cliff


________________________________


>The proc author probably wouldn't do in that manner.  Look at excerpt below, 
>notice how LKED SYSLIN is referencing a dsn from a previous step?
>------------------------------------------------------------------------
>SYS1.PROCLIB(IBMZCPLG) - 01.01                          Columns 0000
> ===>                                                          Scroll ==
>//*********************************************************************
>//* PRE-LINK-EDIT STEP
>//*********************************************************************
>//PLKED    EXEC PGM=EDCPRLK,COND=(8,LT,PLI)
>//    ...
>//SYSMOD   DD  DSN=&&PLNK,DISP=(,PASS),UNIT=SYSALLDA,SPACE=(CYL,(1,1)),
>//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=&SYSLBLK)
>//*********************************************************************
>//* LINK-EDIT STEP
>//*********************************************************************
>//LKED     EXEC PGM=IEWL,PARM='XREF',COND=((8,LT,PLI),(8,LE,PLKED))
>//    ...
>//SYSLIN   DD  DSN=*.PLKED.SYSMOD,DISP=(OLD,DELETE)
>
Suppose the end user calls this with:
//FOOBAR  EXEC  PROC=IBMZXPLG,...

Doesn't the referback need to cite the job step, as in:
//SYSLIN   DD  DSN=*.FOOBAR.PLKED.SYSMOD,DISP=(OLD,DELETE)

... but the author of the PROC can't know a priori the callers jobstep name.

-- gil



----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to