JCLintermediate

JCL Procedures (PROCs) and Symbolic Parameters

Understand how cataloged and in-stream PROCs let JCL be templated and reused across jobs via symbolic parameters.

A PROC packages a reusable sequence of job steps into a single named template, and symbolic parameters let each invocation of that template plug in different values — dataset names, dates, region sizes — without duplicating the underlying JCL. This is a core interview topic because virtually every production shop's real batch schedule runs almost entirely through cataloged PROCs rather than raw, one-off JCL.

A PROC is a form letter template with blanks like {{CUSTOMER_NAME}} — the template itself never changes, but each mail merge run fills in different names and addresses without anyone retyping the letter body.

Key Concepts

1
A PROC can be cataloged (stored as a member in a procedure library, referenced via EXEC PROCNAME) or in-stream (defined inline at the top of the job before being invoked later in the same job). Symbolic parameters, written with a leading ampersand like &DSNAME or &REGION, are placeholders inside the PROC body that get substituted with actual values supplied on the EXEC statement invoking the PROC, or defaulted within the PROC itself via a SET statement.
2
The practical benefit is enormous: a single PROC encoding 'compile, link, and run this type of program' can be shared by hundreds of jobs, each supplying only the handful of values that actually differ (source member name, load library, run parameters). When the shop needs to change a compiler option or add a step, updating the one PROC propagates the change everywhere it's invoked, instead of needing hundreds of individual job edits.
3
Interviewers often ask you to trace symbolic substitution: given a PROC with &LIB defaulting to 'PROD.LOADLIB' and a calling EXEC statement that overrides it to 'TEST.LOADLIB', you need to correctly identify which value wins (the override) and explain that override happens at invocation time, not by editing the PROC itself.