🖥 JCL
JCL Procedures
Intermediate 🕑 20 min read
👁 0 views
What are JCL Procedures?
Procedures (PROCs) are reusable sets of JCL statements stored in a library. They help standardize job submissions and reduce coding effort.
Types of Procedures
- Cataloged Procedures - Stored in procedure libraries
- In-stream Procedures - Defined within the JCL
Creating In-stream Procedure
//procname PROC parameters //... JCL statements ... // PEND
Symbolic Parameters
Use & prefix for substitution:
- ¶m - Symbolic parameter
- &&dsname - Temporary data set
- &SYSUID - System symbolic (user ID)
Overriding Procedure Steps
Override format: stepname.ddname
- Override EXEC parameters
- Override DD statements
- Add new DD statements
INCLUDE Statement
Include JCL from a library member:
// INCLUDE MEMBER=membername
SET Statement
Set symbolic parameter values:
// SET param=value
Code Example
//****************************************
//* IN-STREAM PROCEDURE EXAMPLE
//****************************************
//MYPROC PROC HLQ='DEFAULT.HLQ',
// PGM=MYPROG,
// REGION=64M
//*
//STEP1 EXEC PGM=&PGM,REGION=®ION
//STEPLIB DD DSN=&HLQ..LOADLIB,DISP=SHR
//INPUT DD DSN=&HLQ..INPUT,DISP=SHR
//OUTPUT DD DSN=&HLQ..OUTPUT,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(5,1),RLSE)
//SYSPRINT DD SYSOUT=*
// PEND
//*
//****************************************
//* EXECUTING THE PROCEDURE
//****************************************
//STEP01 EXEC MYPROC,HLQ='PROD.SYSTEM'
//*
//****************************************
//* OVERRIDING PROCEDURE DD
//****************************************
//STEP02 EXEC MYPROC
//STEP1.INPUT DD DSN=TEST.INPUT.FILE,DISP=SHR
//STEP1.SYSPRINT DD SYSOUT=H
//*
//****************************************
//* ADDING DD TO PROCEDURE STEP
//****************************************
//STEP03 EXEC MYPROC
//STEP1.NEWDD DD DSN=EXTRA.FILE,DISP=SHR
//*
//****************************************
//* USING SET STATEMENT
//****************************************
// SET ENV=PROD
// SET DATE=20231215
//STEP04 EXEC PGM=REPORT,
// PARM='&ENV,&DATE'
//*
//****************************************
//* USING INCLUDE
//****************************************
// INCLUDE MEMBER=STDALLOC
//RUNPGM EXEC PGM=MAINPROG