Job Control Language (JCL) is a scripting language used on IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem.[1] The purpose of JCL is to say which programs to run, using which files or devices[2] for input or output, and at times to also indicate under what conditions to skip a step. Parameters in the JCL can also provide accounting information for tracking the resources used by a job as well as which machine the job should run on.
There are two distinct IBM Job Control Languages:
They share some basic syntax rules and a few basic concepts, but are otherwise very different.[3]
The VM operating system does not have JCL as such; the CP and CMS components each have command languages.