Writing your own master scheduler JCL

To write your own master scheduler JCL, specify the following JCL statements for the master scheduler JCL data set:
//MSTJCLxx JOB
A JOB statement is required.
// EXEC
An EXEC statement is required with PGM=IEEMB860. Program IEEMB860 is the master scheduler that does the IPL processing.

The EXEC statement must contain a time limit of 1440 or the program must be defined as a system task in the program properties table (PPT) to ensure that the master scheduler does not time out. See the description of the SCHEDxx parmlib member in SCHEDxx (PPT, master trace table, and abend codes for automatic restart) for information about allowing your installation to specify programs in the PPT.

The master scheduler (IEEMB860) is defined in the PPT with several options; among them are SYST (system task) and NODSI (no data set integrity). SYST ensures that the master scheduler does not time out. NODSI means that the master scheduler JCL defined data sets are not enqueued or shared by MVS™. This keeps the master scheduler from having to deal with enqueue contention for data sets, such as SYS1.PARMLIB. It also means that it is possible to move members within the data set while the system is trying to read them. This can result in I/O errors. Any manipulation of the data sets defined to the master scheduler JCL should be done with extreme caution.

//STCINRDR DD
This DD statement defines the internal reader where started tasks are to be sent.
//TSOINRDR DD
This DD statement defines the internal reader where TSO logon started tasks are to be sent.
//IEFJOBS DD
This DD statement defines the data set that contains job source JCL for started tasks. This data set can be a PDSE and can be SMS-managed. The data set can also be a concatenation.
//IEFPDSI DD
This DD statement defines the data set that contains procedure source JCL for started tasks. Normally this data set is SYS1.PROCLIB; it can be a concatenation. For useful work to be performed, the data set must at least contain the procedure for the primary JES.
//IEFPARM DD
Optionally, this DD statement defines SYS1.PARMLIB or an equivalent for use by the master scheduler address space following master scheduler initialization; it can be a concatenation. Some subsystems and address spaces use other techniques to read parameter information from SYS1.PARMLIB or other sources.

If you specify this DD statement and there are parmlib statements in the LOADxx member of SYS1.PARMLIB, IEFPARM is ignored, a warning message is issued and the LOADxx parmlib data sets are used. If the specified parmlib statements in LOADxx cannot be found, IEFPARM is ignored, a warning message is issued and the system uses SYS1.PARMLIB as the default. If there are no parmlib data sets specified in LOADxx, the system uses the parmlibs on the IEFPARM DD statement.

If you do not specify this DD statement, the system uses the parmlib data sets specified in the LOADxx member of SYS1.PARMLIB. If no parmlib data sets were specified in LOADxx, or if the specified parmlib data sets cannot be found, the system uses SYS1.PARMLIB as the default. If no SYS1.PARMLIB is cataloged, the system uses the SYS1.PARMLIB on the SYSRES volume.

//SYSUADS DD
Optionally, this DD statement is defined for TSO/E.
//SYSRACF DD
Optionally, this DD statement is defined for RACF®. IBM® suggests the use of ICHRDSNT for the specification of the primary and backup RACF databases. See z/OS Security Server RACF System Programmer's Guide for more information.
Note: You can only specify a primary RACF database name with the SYSRACF DD.
/*
Ends the JCL.
Also:
  • The master scheduler JCL can contain only one step.
  • MVS system commands can be placed in the master scheduler JCL. These commands are read in before the master scheduler is executed. They are normally processed before those commands that are specified in the COMMNDxx member of parmlib.
  • OUTPUT JCL and DD SYSOUT statements can be placed in the master scheduler JCL.
  • The master scheduler JCL can contain a JOBLIB or STEPLIB DD statement (which are usually used for testing).
  • Other DD statements that might be needed during master scheduler processing, such as RACF-related DD statements, can be placed in the master scheduler JCL.
  • The master scheduler JCL no longer has to point to the broadcast data set. You now specify the broadcast data set in the IKJTSOxx member. The master JCL will no longer allocate the broadcast data set. TSO/E will use either the default (SYS1.BRODCAST) or the BROADCAST parameter in IKJTSOxx to allocate the broadcast data set. If you wish to go on using SYS1.BRODCAST, no action is required. If you want to use a broadcast data set other than SYS1.BRODCAST, specify it in IKJTSOxx.
  • All data sets that are defined in the master scheduler JCL and do not specify VOL=SER=volser on the data set name must be cataloged in the master catalog.
  • The master scheduler JCL cannot contain any EXEC PROC statements.
  • Start of changeThe master scheduler JCL runs in the master scheduler's address space. The TIOT size is 12 K, which means that approximately 600 unit allocations can be done in the master scheduler's address space. Therefore, be careful not to exceed this limit when allocating data sets in the master scheduler JCL. Data sets that reside on multiple volumes or that have a data class with a dynamic volume count greater than 1 use more TIOT space than single volume data sets, reducing the number of data sets that can be allocated. For more information about TIOT space calculations, see the description of the TIOT SIZE parameter in the ALLOCxx parmlib member.End of change
  • The master scheduler JCL does not support the following JCL statements:
    • ELSE
    • ENDIF
    • IF/THEN
    • INCLUDE
    • JCLLIB
  • The master JCL can contain the JCL statements COMMAND and SET.
  • The master JCL can contain system symbols. Remember, however, that the system does not process symbols in MSTJCLxx in the same way that it processes symbols in parmlib members. Because MSTJCLxx contains JCL, the system processes symbols in MSTJCLxx during JCL processing. The results of symbolic substitution reflect the substitution rules that are in effect during JCL processing.

    See Sharing parmlib definitions for general information about defining and using system symbols in parmlib. See z/OS MVS JCL Reference for details about using system symbols in JCL.

  • The master JCL cannot contain the &SYSUID symbol. &SYSUID, which is normally allowed in JCL, is not defined for the master JCL.