Symbolic parameter
A name starting with an ampersand in JCL that is replaced with a value before the job runs, so the same JCL can be reused with different values.
Also written JCL symbol, symbolic, SET statement, &SYSUID, system symbol
A symbolic parameter is a placeholder in JCL. You write &ENV or &HLQ where a value should go, and before the job runs, z/OS replaces it with the value you supplied.
Values come from three places. A PROC can set defaults on its PROC statement. The EXEC statement that calls the PROC can override them, as in EXEC ACCTPROC,ENV=TEST. A job can also set values with a SET statement, such as // SET HLQ=ZBANK. Some symbols are supplied by the system, such as &SYSUID, which becomes the user ID of the person who submitted the job.
A full stop ends the symbol's name. That means building a dataset name needs two full stops: &HLQ..DATA becomes ZBANK.DATA. The first full stop ends the symbol and the second stays in the name. Forgetting this is a very common mistake.
Symbols are what let one PROC serve development, test and production. You can see the JCL after the values were filled in under JESJCL in the job's output, which is the quickest way to check a substitution.
Where can I learn this hands-on?
Right here, at ZedBank. You take a junior job at a simulated bank and learn each part of the work by doing it, with Zed beside you. There's nothing to install.
Start at ZedBankRelated
- PROCA reusable piece of JCL stored as a member and invoked by name, so common steps are written once.
- JCLJob Control Language: the language used to tell the mainframe what programs to run, in what order, and with what files.
- EXEC statementThe JCL statement that starts a step by naming the program or procedure to run.
- DD statementThe JCL statement that connects a name inside a program to a real dataset outside it.
- High-level qualifierThe first part of a dataset name, which usually identifies the owner and drives how security and storage rules apply.