   job control language (jcl) is a name for scripting languages used on ibm mainframe operating systems to instruct the system on how to run a batch job or start a subsystem. there are two distinct job control languages: one for the operating system lineage that begins with dos/360 and whose latest member is z/vse; and the other for the lineage from os/360 to z/os. they share some basic syntax rules and a few basic concepts, but are otherwise very different. other mainframe batch systems had some form of job control language, whether called that or not; their syntax was totally different from ibm versions, but they usually provided similar capabilities. interactive systems include "command languages"&mdash;command files (such as pcdos ".bat" files) can be run non-interactively, but these usually do not provide as robust an environment for running unattended jobs as jcl. on some computer systems the job control language and the interactive command language may be different. for example tso on z/os systems uses clist or rexx as command languages along with jcl for batch work. on other systems these may be the same. ==features common to dos and os jcl== ===jobs, steps and procedures=== for both dos and os the unit of work is the job. a job consists of one or several steps, each of which is a request to run one specific program. for example, before the days of relational databases, a job to produce a printed report for management might consist of the following steps: a user-written program to select the appropriate records and copy them to a temporary file; sort the temporary file into the required order, usually using a general-purpose utility; a user-written program to present the information in a way that is easy for the end-users to read and includes other useful information such as sub-totals; and a user-written program to format selected pages of the end-user information for display on a monitor or terminal. in both dos and os jcl the first "card" must be the job card, which: * identifies the job. * usually provides information to enable the computer services department to bill the appropriate user department. * defines how the job as a whole is to be run, e.g. its priority relative to other jobs in the queue. procedures (commonly called procs) are pre-written jcl for steps or groups of steps, inserted into a job. both jcls allow such procedures. procs are used for repeating steps which are used several times in one job, or in several different jobs. they save programmer time and reduce the risk of errors. to run a procedure one simply includes in the jcl file a single &
IBM_mainframe_operating_systems Job_scheduling Scripting_languages