JCL
Job Control Language: the language used to tell the mainframe what programs to run, in what order, and with what files.
Also written Job Control Language, job control
JCL stands for Job Control Language. It is not a programming language in the usual sense, with no loops and no arithmetic. It is a way of describing a piece of work: run this program, give it these files, then run that one.
Every batch job is written in JCL. It names the job, lists the steps, and for each step says which program to execute and which datasets to connect to the names the program expects. When the job is submitted, the system reads the JCL, allocates everything described, and runs the steps in order.
Its reputation for being fussy is earned. Statements begin with two slashes, fields sit in specific positions, continuation rules are strict, and a misplaced comma produces an error rather than a guess.
But the scope is small. There are three statements doing almost all the work, JOB, EXEC and DD, and once those click, most JCL is recognisable. Learning to read it comes well before learning to write it, and reading it is most of the job.
Related terms
- JobA unit of batch work submitted to the system, made up of one or more steps that run in order.
- JOB statementThe first statement in every job, giving it a name and telling the system who is running it and how to treat it.
- 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.
- Batch processingRunning work in bulk, without anyone watching, usually on a schedule. The overnight run that settles a day of transactions.
- SubmitHanding JCL to the system to be run, which queues it as a job and gives it a job number.