I have a question that is going to keep bugging me until I ask it, even though 
I'm fairly certain I will not be happy with the answer...

The following is the system supplied Cobol compile procedure, IGYWC:

//IGYWC  PROC  LNGPRFX='IGY.V3R3M0',SYSLBLK=3200
//COBOL  EXEC PGM=IGYCRCTL,REGION=2048K          
//STEPLIB  DD  DSNAME=&LNGPRFX..SIGYCOMP,        
//             DISP=SHR                          
//SYSPRINT DD  SYSOUT=*                          
//SYSLIN   DD  DSNAME=&&LOADSET,UNIT=SYSALLDA,   
//             DISP=(MOD,PASS),SPACE=(TRK,(3,3)),
//             DCB=(BLKSIZE=&SYSLBLK)            
//SYSUT1   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))   
//SYSUT2   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))   
//SYSUT3   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))   
//SYSUT4   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))   
//SYSUT5   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))   
//SYSUT6   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))   
//SYSUT7   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))   

This can be executed with something like the following:

//FJS1      JOB CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID 
//          JCLLIB ORDER=(IGY.SIGYPROC)           
//*-----------------------------------------------
//COMPILE   EXEC PROC=IGYWC,LNGPRFX=IGY           
//COBOL.SYSIN DD DISP=SHR,DSN=FJS.PDSE.COBOL(OBJ1)
//COBOL.SYSLIB DD  DISP=SHR,DSN=FJS.PDSE.COBOL
//             DD  DISP=SHR,DSN=APPL.PROD.COPYLIB

Specifically, I am compiling Cobol source found in FJS.PDSE.COBOL(OBJ1) and 
including copybooks that are found in either FJS.PDSE.COBOL or 
APPL.PROD.COPYLIB.

In this case APPL.PROD.COPYLIB is the production copylib and 
FJS.PDSE.COBOL contains my private source code (including copybooks).

If I wanted to compile without my private library I obviously would just have
//COBOL.SYSLIB DD  DISP=SHR,DSN=APPL.PROD.COPYLIB
in place of the two PDS's specified in the first example.

What I would like, but cannot seem to figure out how to accomplish, is to 
have a DD for APPL.PROD.COPYLIB in the actual proc, and allow a developer 
to, if desired, add just their own private library statements in their JCL.

There appears to be no way to do this.  If the JCL just has
//COBOL.SYSLIB DD  DISP=SHR,DSN=FJS.PDSE.COBOL
then APPL.PROD.COPYLIB is no longer included in the concatenation.

Obviously I could have APPL.PROD.COPYLIB in the proc and just have the 
calling JCL concatenate both libraries explicitly.  But this seems to me to 
defeat the reason for having the SYSLIB specified in the proc; since you have 
to override it when including another library.

The way we've gotten around it so far is to have something like this in the 
proc:

//SYSLIB   DD  DSN=&CLIB1,DISP=SHR
//         DD  DSN=&CLIB2,DISP=SHR  
//         DD  DSN=&CLIB3,DISP=SHR  
//         DD  DSN=&CLIB4,DISP=SHR  
//         DD  DSN=&CLIB5,DISP=SHR  
//         DD  DSN=&CLIB6,DISP=SHR

and have the PROC step changed like this:
//IGYWC  PROC  LNGPRFX='IGY.V3R3M0',SYSLBLK=3200,
//         CLIB1='APPL.PROD.COPYLIB',
//         CLIB2='APPL.PROD.COPYLIB',
//         CLIB3='APPL.PROD.COPYLIB',
//         CLIB4='APPL.PROD.COPYLIB',
//         CLIB5='APPL.PROD.COPYLIB'

And the JCL to execute the proc would be this:
//COMPILE   EXEC PROC=IGYWC,LNGPRFX=IGY,
//             CLIB1='FJS.PDSE.COBOL'

This works, but:
- It requires you know ahead of time (when building the PROC) the maximum 
number of copylibs that will ever be used.
- It seems silly to have to include the same library over and over.

I have a similar issue with the link (bind) step.  I always want to concatenate 
the SCEELKED library and our PROD load library.  And optionally one or more 
developer libraries.  Or possibly an IMS library and/or a CICS library.

Thanks for any thoughts,

Frank

-- 
Frank Swarbrick
Senior Systems Analyst - Mainframe Applications
FirstBank Data Corporation
Lakewood, CO  USA

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