Job Control Language (JCL) is a scripting language used on IBM mainframe operating systems to instruct the Job Entry Subsystem (that is, JES2 or JES3) on how to run a batch program or start a subsystem.

JCL is characterized by a pair of slashes "//" that start each statement. The slashes date back from when punched cards were used to submit JCL code for execution. If the cards were mistakenly put back to front in the reader the slashes wouldn't be read first (instead, the sequence numbers would be), so the card deck could be rejected.

The basic syntax of JCL for z/OS hasn't changed since the 1960's; it is the same as JCL for OS/360.



Each “Job” starts with a JOB statement and ends with an empty // card image. Each “Step” within a “Job” has one EXEC statement and any number of DD statements, one for each dataset accessed. The following is a brief description of these, and a few other JCL statements. Jobname, stepname, progname, procstepname, procname and ddname are from 1 to 8 alpha-numeric characters, starting with an alphabetic character. Some installations may have further restrictions, especially about jobnames. Keyword parameters (THING=STUFF) may appear in any order, after any positional parameters; most of them are optional. There must be no spaces between parameters, or what follows will be interpreted as a comment. (Spacing has been left for readability.) Not all parameters have been described.

'//*' is used to comment the lines in JCLs.


//jobname JOB (accounting information), CLASS=x, MSGCLASS=x, REGION=nK, TIME=(m,s)

Accounting information is installation-dependant, and may be enclosed between brackets or quotation marks. It is typically used for charging departments according to CPU and I/O use.

The CLASS parameter determines in which “initiator” the job will run, and determines default values for region-size, priority, maximum CPU time allowed, etc.

The MSGCLASS parameter determines how job output is to be printed or filed.

The REGION parameter specifies the maximum amount of virtual storage that the job may use. An amount of K or M may be specified, within installation limits specified by the job-class.

The TIME parameter specified the maximum total CPU usage (in minutes, seconds) that may be used by all steps of the job. The maximum allowed is normally 1439 minutes - the value 1440 means that the job will not be timed.


//stepname EXEC PGM=progname, PARM=”parm”, COND=condition, REGION=nK, TIME=(m,s)

Progname is the name of the program to be executed. If the program can not be found in the standard “linklist” libraries, then the libraries specified in JOBLIB or STEPLIB DD statements will be searched (see below).

The PARM parameter is used to pass optional data to the program. At program execution time, register 1 points to a parameter list.

The COND parameter specifies those conditions under which the job-step is to be skipped, and NOT run. It often causes confusion and has been replaced by IF statements in recent releases of the operating system.

REGION and TIME parameters are as for the JOB statements but apply to a single job-step.


//procstepname EXEC PROC=procname, param1=foo, ...


//procstepname EXEC procname, param1=foo, ...

Procname is either the name of a catalogued or in-stream procedure (see below). The values of param1, etc. depend on what symbolic keywords are defined in the procedure. Procedures are collections of predefined JCLs.


//ddname DD DSN=datasetname, DISP=disposition, UNIT=unit, VOL=SER=volser, SPACE=space, DSORG=dsorg, DCB=dcb


//ddname DD *


//ddname DD DATA,DLM=@@


//ddname DD SYSOUT=msgclass

In the DSN parameter, datasetname is the name of the dataset to be accessed or allocated. If it is not catalogued, then UNIT (and VOL) parameters must be supplied. A member of a partitioned dataset is referred to by enclosing the member-name in parentheses; e.g. MY.LIBRARY(MYPROGRM). If a datasetname is not supplied, the system will provide one; this can only be used for files that will not be kept beyond this step. To allocate a temporary dataset to be passed to further jobsteps but not then kept, use DSN=&&TEMPNAME, for example.

The DISP parameter specifies whether the dataset is to be created or whether it already exists, and whether it is to be kept or deleted after the job-step finishes (either successfully or unsuccessfully). The disposition consists of up to three sub-parameters in brackets. Some examples:

DISP=(OLD,DELETE,KEEP)  already exists, is to be deleted unless the step fails
DISP=SHR                already exists and other tasks may read it at the same time
DISP=(NEW,CATLG,DELETE) will be created and catalogued unless the step fails

The default, if not specified, is (NEW,DELETE).

The UNIT and VOL parameters can be quite complex, but here are two simple examples:

UNIT=SYSDA                 any system direct access device (normally for temporary files)
UNIT=3390,VOL=SER=ABC123   allocate on a specific DASD pack

The SPACE parameter specifies the primary and secondary space allocation (in blocks, tracks or cylinders) and the number of directory blocks for a partitioned dataset. Some examples:

SPACE=(TRK,1)                   just 1 track and no secondaries
SPACE=(CYL, (50,25))            50 cylinders of space plus up to 15 times 25 cylinders of secondary
SPACE=(4096,(10000),ROUND,RLSE) space equivalent to 10,000 blocks, each of 4,096 bytes,
                                rounded to the nearest cylinder size, and unused space
                                released at the end of the job-step.

The DSORG parameter specifies the dataset organization of the dataset. Some possibilities are PS (physical sequential), DA (direct access), IS (ISAM - no longer supported) and PO (partitioned).

The DCB parameter specifies any sub-parameter that a program could specify in its Data Control Block for this DD statement. A common possibility is RECFM (Record format - FB (fixed, blocked), U (undefined), etc.).

DD * is followed by data in the form of 80-byte card images, and the data stream is terminated with a card image having /* in the first two columns (or the next JCL statement).

DD DATA is the same, but may contain JCL statements. It is terminated by a card having @@ in the first two columns (or by the end of the JCL).

DD SYSOUT=msgclass is used for printed output. Specifying SYSOUT=* will result in using the MSGCLASS of the JOB card.

DD statements used for input may be concatenated as follows.



Procedures are JCL skeletons that normally have such things as dataset names replaced by symbols. These symbolic names are then resolved to real names when the procedure is used. Procedures provide a macro ability to JCL.

In older versions of MVS, procedures could only be cataloged to SYS1.PROCLIB and this is still used as a default. Later versions added support for user-defined procedure libraries.

While procedures are normally executed from a procedure library (known as a proclib), they can also be defined within the job that executes them. These are known as inline procedures and this is the usual method for testing them before adding them to a proclib.

The first line is always a PROC statement. It names the procedure and defines any default values for symbolic entries, e.g.


A job could then call up this procedure as follows:


For inline testing the procedure is included first, and is terminated by . .

//     PEND

DOS/VSE also has a JCL language. Its syntax is entirely different, the only similarity being that statements still start with two slashes: "//".

See also: IBM mainframe utility programs

da:Job Control Language de:Job Control Language


  • Art and Cultures
    • Art (https://academickids.com/encyclopedia/index.php/Art)
    • Architecture (https://academickids.com/encyclopedia/index.php/Architecture)
    • Cultures (https://www.academickids.com/encyclopedia/index.php/Cultures)
    • Music (https://www.academickids.com/encyclopedia/index.php/Music)
    • Musical Instruments (http://academickids.com/encyclopedia/index.php/List_of_musical_instruments)
  • Biographies (http://www.academickids.com/encyclopedia/index.php/Biographies)
  • Clipart (http://www.academickids.com/encyclopedia/index.php/Clipart)
  • Geography (http://www.academickids.com/encyclopedia/index.php/Geography)
    • Countries of the World (http://www.academickids.com/encyclopedia/index.php/Countries)
    • Maps (http://www.academickids.com/encyclopedia/index.php/Maps)
    • Flags (http://www.academickids.com/encyclopedia/index.php/Flags)
    • Continents (http://www.academickids.com/encyclopedia/index.php/Continents)
  • History (http://www.academickids.com/encyclopedia/index.php/History)
    • Ancient Civilizations (http://www.academickids.com/encyclopedia/index.php/Ancient_Civilizations)
    • Industrial Revolution (http://www.academickids.com/encyclopedia/index.php/Industrial_Revolution)
    • Middle Ages (http://www.academickids.com/encyclopedia/index.php/Middle_Ages)
    • Prehistory (http://www.academickids.com/encyclopedia/index.php/Prehistory)
    • Renaissance (http://www.academickids.com/encyclopedia/index.php/Renaissance)
    • Timelines (http://www.academickids.com/encyclopedia/index.php/Timelines)
    • United States (http://www.academickids.com/encyclopedia/index.php/United_States)
    • Wars (http://www.academickids.com/encyclopedia/index.php/Wars)
    • World History (http://www.academickids.com/encyclopedia/index.php/History_of_the_world)
  • Human Body (http://www.academickids.com/encyclopedia/index.php/Human_Body)
  • Mathematics (http://www.academickids.com/encyclopedia/index.php/Mathematics)
  • Reference (http://www.academickids.com/encyclopedia/index.php/Reference)
  • Science (http://www.academickids.com/encyclopedia/index.php/Science)
    • Animals (http://www.academickids.com/encyclopedia/index.php/Animals)
    • Aviation (http://www.academickids.com/encyclopedia/index.php/Aviation)
    • Dinosaurs (http://www.academickids.com/encyclopedia/index.php/Dinosaurs)
    • Earth (http://www.academickids.com/encyclopedia/index.php/Earth)
    • Inventions (http://www.academickids.com/encyclopedia/index.php/Inventions)
    • Physical Science (http://www.academickids.com/encyclopedia/index.php/Physical_Science)
    • Plants (http://www.academickids.com/encyclopedia/index.php/Plants)
    • Scientists (http://www.academickids.com/encyclopedia/index.php/Scientists)
  • Social Studies (http://www.academickids.com/encyclopedia/index.php/Social_Studies)
    • Anthropology (http://www.academickids.com/encyclopedia/index.php/Anthropology)
    • Economics (http://www.academickids.com/encyclopedia/index.php/Economics)
    • Government (http://www.academickids.com/encyclopedia/index.php/Government)
    • Religion (http://www.academickids.com/encyclopedia/index.php/Religion)
    • Holidays (http://www.academickids.com/encyclopedia/index.php/Holidays)
  • Space and Astronomy
    • Solar System (http://www.academickids.com/encyclopedia/index.php/Solar_System)
    • Planets (http://www.academickids.com/encyclopedia/index.php/Planets)
  • Sports (http://www.academickids.com/encyclopedia/index.php/Sports)
  • Timelines (http://www.academickids.com/encyclopedia/index.php/Timelines)
  • Weather (http://www.academickids.com/encyclopedia/index.php/Weather)
  • US States (http://www.academickids.com/encyclopedia/index.php/US_States)


  • Home Page (http://academickids.com/encyclopedia/index.php)
  • Contact Us (http://www.academickids.com/encyclopedia/index.php/Contactus)

  • Clip Art (http://classroomclipart.com)
Personal tools