Cataloged Procedures (or simply "procs") are reusable collections of JCL statements stored in a library that can be invoked by multiple jobs. They help standardize common processes, reduce JCL coding effort, and maintain consistency across your organization's batch environment.
Key Benefit:
Cataloged procedures enable code reuse, standardization, and maintenance simplification by centralizing commonly used JCL statement groups in libraries that can be referenced by many jobs.
Cataloged procedures are typically stored in special system libraries designated for procedures:
SYS1.PROCLIB
: System-provided proceduresuser.PROCLIB
: User or application-specific procedures123456//MYPROC PROC [parameters] //STEP1 EXEC PGM=program1 //DD1 DD DSN=dataset1,DISP=SHR //STEP2 EXEC PGM=program2 //DD2 DD DSN=dataset2,DISP=SHR // PEND
1234//JOBNAME JOB (ACCT),'NAME' //STEP1 EXEC PROC=MYPROC // or simply: //STEP1 EXEC MYPROC
1234567//MYPROC PROC INDS='MY.INPUT.DS', // OUTDS='MY.OUTPUT.DS' //STEP1 EXEC PGM=MYPROG //INDD DD DSN=&INDS,DISP=SHR //OUTDD DD DSN=&OUTDS,DISP=(NEW,CATLG), // SPACE=(CYL,(10,5)),UNIT=SYSDA // PEND
1234//JOBNAME JOB (ACCT),'NAME' //STEP1 EXEC MYPROC, // INDS='ACTUAL.INPUT.DATASET', // OUTDS='ACTUAL.OUTPUT.DATASET'
JCL allows modification of procedure statements at execution time:
123//JOBNAME JOB (ACCT),'NAME' //STEP1 EXEC MYPROC //STEP1.STEP1.INDD DD DSN=OVERRIDE.DATASET,DISP=SHR
The override format is stepname.procstepname.ddname
.
123//JOBNAME JOB (ACCT),'NAME' //STEP1 EXEC MYPROC //STEP1.STEP1.NEWDD DD DSN=ADDITIONAL.DATASET,DISP=SHR
1234//JOBNAME JOB (ACCT),'NAME' //STEP1 EXEC MYPROC, // REGION=8M, // TIME=10
This overrides parameters for all steps in the procedure.
1234//JOBNAME JOB (ACCT),'NAME' //STEP1 EXEC MYPROC, // STEP2.REGION=8M, // STEP2.TIME=10
This overrides parameters only for STEP2 within the procedure.
12345//JOBNAME JOB (ACCT),'NAME' //JCLLIB JCLLIB ORDER=(SYS1.PROCLIB,USER.PROCLIB) //STEP1 EXEC PROC1 //STEP2 EXEC PROC2 //STEP3 EXEC PROC3
Multiple procedures can be called in sequence within a single job.
Issue | Possible Cause | Solution |
---|---|---|
Procedure not found | Incorrect procedure name or library | Verify procedure name and add a JCLLIB statement if needed |
JCL error in procedure | Syntax error in the procedure code | Fix the procedure source and resubmit to the procedure library |
Parameter substitution failure | Incorrect parameter format or missing parameter | Check parameter syntax and ensure all required parameters are provided |
Override not working | Incorrect override syntax | Verify the stepname.procstepname.ddname format is correct |
Cataloged procedures often require security management: