Frank Swarbrick wrote:
New z/OS shop here...

So I have a cataloged proc 'FJS.PDSE.PROC(DLIBATCH)' that looks like this:
//DLIBATCH PROC DLIPGM=,DLIPSB=,DBRC=N //DLI EXEC PGM=DFSRRC00, // PARM=(DBB,&DLIPGM,&DLIPSB,,,,,,,,,,,&DBRC) //IMSACB DD DISP=SHR,DSN=&SYSUID..IMS.ACBLIB // DD DISP=SHR,DSN=SYS4.IMS.ACBLIB //IEFRDER DD DUMMY //SYSUOUT DD SYSOUT=* // PEND
I can execute it from a job that looks like this:
//FFND05   JOB CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
//PROCLIBS JCLLIB ORDER=(FJS.PDSE.PROC) //JOBLIBS INCLUDE MEMBER=JOBLIBS //*------------------------------------------------------ //FFND05 EXEC DLIBATCH,DLIPGM=FFND05,DLIPSB=FFUNDGO //CEEOPTS DD * **LE RUN-TIME OPTIONS** RPTOPTS(ON) //DFSVSAMP DD * **IMS VSAM BUFFER OPTIONS, ETC.** 32768,10 //FFUNDDB DD DSNAME=FJS.FFND.IMS.FFUNDDB,DISP=SHR //FFUNDIN DD DSNAME=FJS.FFND.IMS.FFUNDIN,DISP=SHR //FFMOTBL DD DSNAME=FJS.FFND.FFMOTBL,DISP=SHR //DRPT DD SYSOUT=* //MRPT DD SYSOUT=* // We don't have IMS in production yet (which is what the DLIBATCH proc is for). Currently we have jobs that execute procs that execute our programs. So I'd like to continue this with our IMS (DL/I) jobs. So I modified the above FFND05 to look like this:

//FFND05    JOB CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
//PROCLIBS JCLLIB ORDER=(FJS.PDSE.PROC) //JOBLIBS INCLUDE MEMBER=JOBLIBS //*------------------------------------------------------- //FFND05 PROC //FFND05 EXEC DLIBATCH,DLIPGM=FFND05,DLIPSB=FFUNDGO //FFUNDDB DD DSNAME=FJS.FFND.IMS.FFUNDDB,DISP=SHR //FFUNDIN DD DSNAME=FJS.FFND.IMS.FFUNDIN,DISP=SHR //FFMOTBL DD DSNAME=FJS.FFND.FFMOTBL,DISP=SHR //DRPT DD SYSOUT=* //MRPT DD SYSOUT=* // PEND //*------------------------------------------------------- //FFND05 EXEC PROC=FFND05 //CEEOPTS DD * **LE RUN-TIME OPTIONS** RPTOPTS(ON) //DFSVSAMP DD * **IMS VSAM BUFFER OPTIONS, ETC.** 32768,10 //

The FFND05 proc would end up being a cataloged proc, of course, but I can't even get it to work. My two DD's in the main JCL (CEEOPTS and DFSVSAMP) cause the following errors to be issued:
22 IEFC611I OVERRIDDEN STEP NOT FOUND IN PROCEDURE
23 IEFC611I OVERRIDDEN STEP NOT FOUND IN PROCEDURE

This appears to be "as documented", since the MVS JCL manual says:
"Modifying or additional JCL statements apply to one level of nesting only. You can use statements to modify statements in a procedure only for the level of nesting at which the EXEC statement for that procedure appears."
http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/iea2b670/5.3.2

I am at a loss what do to. Our goal was that when testing we would execute the production proc and override the DD names to the names of test files.

The following does work:
//FFND05 JOB CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //PROCLIBS JCLLIB ORDER=(FJS.PDSE.PROC) //JOBLIBS INCLUDE MEMBER=JOBLIBS //*--------------------------------------------------- //FFND05 PROC //FFND05 EXEC DLIBATCH,DLIPGM=FFND05,DLIPSB=FFUNDGO //CEEOPTS DD DUMMY //DFSVSAMP DD DISP=SHR,DSN=FJS.PDSE.CNTL(VSAMBUF) //FFUNDDB DD DSNAME=FJS.FFND.IMS.FFUNDDB,DISP=SHR //FFUNDIN DD DSNAME=FJS.FFND.IMS.FFUNDIN,DISP=SHR //FFMOTBL DD DSNAME=FJS.FFND.FFMOTBL,DISP=SHR //DRPT DD SYSOUT=* //MRPT DD SYSOUT=* // PEND //*--------------------------------------------------- // EXEC PROC=FFND05 // But as soon as I try to add a line after "EXEC PROC=FFND05" to override a DD I get the error.


What did your override look like? It should be something like:

//          EXEC PROC=FFND05
//FFND05.FFMOTBL  DD  DSN=THE.OTHER.GUY

that is, stepname.ddname (you might make the stepname,
(name on the EXEC statement) different from the name
of the PROC, although it should work either way.



Any thoughts? The one thing I can think of, and perhaps this really is the way to go, is to not code the DD's directly in to the JCL, but rather to have something like this:

//FFND05 PROC //FFND05 EXEC DLIBATCH,DLIPGM=FFND05,DLIPSB=FFUNDGO //DFSVSAMP INCLUDE MEMBER=DFSVSAMP //FFUNDDB INCLUDE MEMBER=FFUNDDB //FFUNDIN INCLUDE MEMBER=FFUNDIN //FFMOTBL INCLUDE MEMBER=FFMOTBL //DRPT DD SYSOUT=* //MRPT DD SYSOUT=* // PEND
The production job might look like this:
//FFND05 JOB CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //PROCLIBS JCLLIB ORDER=(PROD.PDSE.PROC) //JOBLIBS INCLUDE MEMBER=JOBLIBS // EXEC PROC=FFND05
Whereas a test job could look like this:

//FFND05 JOB CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //PROCLIBS JCLLIB ORDER=(FJS.PDSE.PROC,PROD.PDSE.PROC) //JOBLIBS INCLUDE MEMBER=JOBLIBS // EXEC PROC=FFND05
(I added my private proclib to the JCLLIB card.)

This might be useful for other reasons. But it still does not allow me to override or even add new DD statements to the outer job. For example I might want a CEEOPTS to set special runtime options during my test. Or perhaps I want one of the reports (DRPT or MRPT) to have different attributes for some reason.

I haven't actually tried the above yet (using the INCLUDE MEMBER for the DD's), but I think it should work for DD's that are unique, in that every job that refers to them has them defining the same files. I didn't do it for DRPT and MRPT because these are more generic. Though I guess this is a bad example, because they are just SYSOUT's. But I imagine there are cases where the same DD in two different jobs refer to two different files, and thus the INCLUDE MEMBER would not work.

Anyway...

Thanks,
Frank




Kind regards,

-Steve Comstock
The Trainer's Friend, Inc.

303-393-8716
http://www.trainersfriend.com

  z/OS Application development made easier
    * Our classes include
       + How things work
       + Programming examples with realistic applications
       + Starter / skeleton code
       + Complete working programs
       + Useful utilities and subroutines
       + Tips and techniques

==> Check out the Trainer's Friend Store to purchase z/OS  <==
==> application developer toolkits. Sample code in four    <==
==> programming languages, JCL to Assemble or compile,     <==
==> bind and test.                                         <==
==>   http://www.trainersfriend.com/TTFStore/index.html    <==

----------------------------------------------------------------------
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