The IEFBR14 JCL utility is a dummy utility provided by IBM and its only purpose is to help meet the requirements that a job must have at least one EXEC statement. The real purpose is to allow the disposition of the DD statement to occur. IEFBR14 doesn’t return any other return codes except ZERO or JCL Error.IEFBR14 utility invokes the following tasks –
- Allocate/Create Datasets
- Delete Datasets
- Uncatlog Datasets
- Catalog Datasets
- Setting return code to zero
IEFBR14 JCL Utility: Creating data set or PDS
//N141231A JOB (123),'XYZ',CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1), // NOTIFY=&SYSUID //************************************************************ //STEP EXEC PGM=IEFBR14 //DDNAME DD DSN=dsname/PDS name, // DISP=(NEW,CATLG,DELETE), // UNIT=SYSALLDA,SPACE=(TRK,1) // DCB=(RECFM=FB,LRECL=80,BLKSIZE=800,DSORG=PO) //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSDUMP DD SYSOUT=*
The dataset can be either a Sequential file(PS) or Partitioned Dataset(PDS). All jobs require JOB and EXEC statements, so this sample contains both:
- The JOB statement marks the beginning of a job, specifies the job name, and also might provide company-specific details or JCL parameters that apply to all job steps within the job.
- The EXEC statement marks the beginning of a job step. In this case, the job step is to run IEFBR14 JCL Utility, which is a program that simply passes control back to z/OS. For steps that call IEFBR14, then, other JCL statements within the step specify any work that z/OS does.
Required: Modify the JOB statement to uniquely identify your job and to provide additional company-specific information.
//N141231A JOB (123),'XYZ',CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1), // NOTIFY=&SYSUID //************************************************************
Syntax rules for the name field are:
- The name must begin in column 3 of the JCL statement.
- The name can be one through eight characters in length.
- The first character in the name must be an alphabetic character (the letters A through Z) or a special character (the symbols #, @, and $).
- The remaining characters can be alphanumeric (the letters A through Z and numbers 0 through 9) or special characters.
- Blank spaces cannot be included in a name.
Required: Modify the EXEC statement to uniquely identify the job step and the utility to be run.
//STEPNAME EXEC PGM=IEFBR14
- Replace stepname with a unique name to identify this step. Syntax rules for stepname are identical to those listed for jobname. Aside from changing the step name, no further changes are required.
Required: Modify this input DD statement to define the data set to be created.
//DDNAME DD DSN=dsname, // DISP=(NEW,CATLG), // UNIT=SYSALLDA,SPACE=(TRK,1)
Replace ddname with a unique name for this JCL DD statement; this label in the name field of a DD statement is known as a ddname. Syntax rules for ddnames are identical to those listed for job and step names on JOB and EXEC statements.
Replace dsname with the name that you want to use for your new data set. Naming and syntax rules for DSN parameter values vary depending on the type of data set you are identifying. If you want to create a permanent data set to store your own collection of JCL samples, you can specify a qualified name that starts with your TSO login ID; for example DSN=USER.JCL
Change the value for the DISP parameter, if necessary. The DISP parameter tells the system about the status of your data set and what to do with it when your job ends, either normally or abnormally. As coded in this sample, the status subparameter value NEW tells the system to create your data set. Only one subparameter value for job-end processing is specified, so the system will add an entry in the system or user catalog (CATLG), whether the job step ends normally or abnormally.
- Change or replace the UNIT parameter, if necessary. Coding UNIT=SYSALLDA tells z/OS to find the most appropriate storage unit for your new data set. You may use this parameter and value to define either an SMS-managed or non-SMS-managed data set. If you are using SMS, however, you may replace the UNIT parameter with the STORCLAS parameter and a storage class name that your company uses.
- Change or replace the SPACE parameter, if necessary. Coding SPACE=(TRK,1) tells z/OS to do one of the following:
- For a non-SMS-managed data set, allocate one track of space for your new data set.
- For an SMS-managed data set, override the space attributes specified through the default data class. If you are defining an SMS-managed data set, you have these choices:
- Leave the SPACE parameter as shown in the sample.
- Replace the SPACE parameter value to specify different space attributes.
- Replace the SPACE parameter and its value with a DATACLAS parameter and data class name that your company uses.
- Remove the SPACE parameter and its value to accept the space attributes defined in the default data class.
SYSPRINT – Used by utility programs for their output.
SYSOUT – Specifies system-defined dd name used for file status codes, system abend codes information, and output of the display statement.
SYSDUMP – Used by the system for dumping when an abend occurs that causes a system dump.
Deleting a data set or PDS
//N141231A JOB (123),'XYZ',CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1), // NOTIFY=&SYSUID //************************************************************ //STEPNAME EXEC PGM=IEFBR14 //SYSPRINT DD SYSOUT=* //DDNAME DD DSN=dsname, // DISP=(OLD,DELETE,DELETE) //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSDUMP DD SYSOUT=*
IEFBR14 JCL Utility: Uncatalog a data set and PDS
To uncatalog the dataset, the disposition should be DISP=(OLD,UNCATLG,DELETE). UNCATLG will do two tasks –
- Removes entry in system or user catalog directory for the dataset.
- All unneeded indexes will be deleted.
//N141231A JOB (123),'XYZ',CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1), // NOTIFY=&SYSUID //************************************************************ //STEPNAME EXEC PGM=IEFBR14 //SYSPRINT DD SYSOUT=* //DDNAME DD DSN=dsname, // DISP=(OLD,UNCATLG,DELETE) //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSDUMP DD SYSOUT=*
Catalog a data set and PDS
To Catalog the dataset, the disposition should be DISP=(OLD,CATLG,DELETE). CATLG will do two tasks –
- Creates entry in system or user catalog directory for dataset.
- All needed indexes will be created.
//N141231A JOB (123),'XYZ',CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1), // NOTIFY=&SYSUID //************************************************************ //STEPNAME EXEC PGM=IEFBR14 //SYSPRINT DD SYSOUT=* //DDNAME DD DSN=dsname, // DISP=(OLD,CATLG,DELETE) //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSDUMP DD SYSOUT=*