Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
🖥 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

  1. Cataloged Procedures - Stored in procedure libraries
  2. In-stream Procedures - Defined within the JCL

Creating In-stream Procedure

//procname PROC parameters
//... JCL statements ...
//         PEND

Symbolic Parameters

Use & prefix for substitution:

  • &param - 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=&REGION
//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