Cataloged Procedures

Purpose

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.

Location & Storage

Cataloged procedures are typically stored in special system libraries designated for procedures:

  • SYS1.PROCLIB: System-provided procedures
  • user.PROCLIB: User or application-specific procedures
  • Other procedure libraries specified via the JCLLIB statement

Basic Syntax

Procedure Definition

jcl
1
2
3
4
5
6
//MYPROC PROC [parameters] //STEP1 EXEC PGM=program1 //DD1 DD DSN=dataset1,DISP=SHR //STEP2 EXEC PGM=program2 //DD2 DD DSN=dataset2,DISP=SHR // PEND

Calling a Procedure

jcl
1
2
3
4
//JOBNAME JOB (ACCT),'NAME' //STEP1 EXEC PROC=MYPROC // or simply: //STEP1 EXEC MYPROC

Procedure with Parameters

jcl
1
2
3
4
5
6
7
//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

Calling a Parameterized Procedure

jcl
1
2
3
4
//JOBNAME JOB (ACCT),'NAME' //STEP1 EXEC MYPROC, // INDS='ACTUAL.INPUT.DATASET', // OUTDS='ACTUAL.OUTPUT.DATASET'

Procedure Overrides

JCL allows modification of procedure statements at execution time:

DD Statement Override

jcl
1
2
3
//JOBNAME JOB (ACCT),'NAME' //STEP1 EXEC MYPROC //STEP1.STEP1.INDD DD DSN=OVERRIDE.DATASET,DISP=SHR

The override format is stepname.procstepname.ddname.

Adding DD Statements

jcl
1
2
3
//JOBNAME JOB (ACCT),'NAME' //STEP1 EXEC MYPROC //STEP1.STEP1.NEWDD DD DSN=ADDITIONAL.DATASET,DISP=SHR

EXEC Statement Override

jcl
1
2
3
4
//JOBNAME JOB (ACCT),'NAME' //STEP1 EXEC MYPROC, // REGION=8M, // TIME=10

This overrides parameters for all steps in the procedure.

Specific Step Override

jcl
1
2
3
4
//JOBNAME JOB (ACCT),'NAME' //STEP1 EXEC MYPROC, // STEP2.REGION=8M, // STEP2.TIME=10

This overrides parameters only for STEP2 within the procedure.

Stacking Procedures

jcl
1
2
3
4
5
//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.

Best Practices

  • Use meaningful procedure names that indicate their function
  • Document procedures with comments at the beginning
  • Parameterize values that might need to change
  • Set reasonable defaults for parameters
  • Include appropriate error handling within the procedure
  • Implement version control for procedure libraries
  • Test procedure changes thoroughly before implementing in production

Troubleshooting

IssuePossible CauseSolution
Procedure not foundIncorrect procedure name or libraryVerify procedure name and add a JCLLIB statement if needed
JCL error in procedureSyntax error in the procedure codeFix the procedure source and resubmit to the procedure library
Parameter substitution failureIncorrect parameter format or missing parameterCheck parameter syntax and ensure all required parameters are provided
Override not workingIncorrect override syntaxVerify the stepname.procstepname.ddname format is correct

Security & Auditing

Cataloged procedures often require security management:

  • Control access to procedure libraries
  • Implement change management for procedure updates
  • Consider using security exits to control procedure execution
  • Audit procedure usage and changes

JES2 vs JES3 Considerations

  • JES2 and JES3 both support cataloged procedures
  • JES3 offers additional procedure libraries that can be defined
  • JES3 provides additional control over procedure execution through its Job Control Table (JCT)
  • When migrating between JES versions, review procedure libraries configuration

Related Concepts