JCL Quick Study for Interview

Here is a quick study for IBM mainframe JCL for quick preparation for your interviews

DSN - Data Set Naming rules:

  • Dataset Name must not end with a period.
  • A DSN can contain only national characters and '-'. Hyphen is not allowed in a PDS member.
  • Maximum 44 characters allowed.
  • Each qualifier must be 1-8 alphanumeric characters, the first character should be alphabetic.

JCL Limits:

Here is a table with limitations on the maximum and minimum in JCL,

Description Maximum Minimum
Number of Steps 255 1
Number of DD State 3273 0
Number of Instream PROCS 15 0
Job Execution time 248.5 Days 0
Job Name 8 Chars 1
Accounting Information size 142 0
Programmers Name 20 0
Step name 8 Chars 1
Symbolic Parameter 100 Chars 1
Time 1439,59 0
Blocksize 32,760 BYTES
Dataset Name 44
Concatenated Dataset 255 PS
Output message 16777215
GDG limit 255 active


DSN - Data Set Spacing:

  • One block constitutes 32KB of formatted memory/ 42KB of Unformatted memory. 
  • 6 blocks makes one Track & 15 Tracks makes one cylinder.

Rules for Overriding Parameters:

  • A PGM parameter cannot be override.
  • The parameters for each step do not need to be coded in the same order as they appear on the procedure EXEC statement.
  • To add/override a parameter on an EXEC statement, use parm.procstep=value.
  • If a parameter which does not exist is coded on the EXEC statement, the parameter will be added.
  • All parameters for each step must be coded in the order the first step must be coded first, second step second and so on.

Overriding DD Statements:

  • DD statement overrides precede the DDname with the proc step name (PROC.DDNAME).
  • The JCL parameter is replaced, unless it does not exist on the original statement, in which case it is added.
  • For the DCB parameter, each sub parameter can be overridden.
  • DD statement overrides should carry DD names that already exist in the step to take effect.
  • DD statement overrides must be coded preceding any added DD statements for the proc step (for concatenated dd).
  • DD override statements must be listed in the order in which they are shown in the proc.
  • DD override statements are only in effect for the duration of the run.

Overriding concatenated datasets:

  • If you specify only one DD, it overrides the first DSN alone.
  • If you want to override specific DSN, use DD blank for other DSNs.
  • If you want to override each DSN, use corresponding DD name.
  • If you don't want any of the DSN in step, use DD DUMMY for that.
  • All DD statements after override with DUMMY will be ignored.
  • You must specify a separate DD statement for each DD in the concatenation.
  • You can ADD additional DD statements in the overriding JCL.

Dataset Concatenation:

  • Max 255 PS can be concatenated.
  • Max 16 PDS can be concatenated.
  • DatAsets with different record lengths can be concatenated as long as the dataset with the largest blocksize appears first.
  • PDS libraries can be concatenated

INSTREAM Data / SYSIN:

  • You can pass more than 80 characters to a cobol ACCEPT verb. by specifying , followed by X in 71 and 72 columns.
  • Maximum PARM Length = 100 bytes

Override:

  • If the step name is not specified, override applied only to FIRST step.
  • Additions should be followed by modifications. i.e modifications first.
  • To omit a parameter, just name it, but dont pass the value.

Special DD Names:

  • SYSUDUMP - Prints the program area, content of registers and gives a trace back of subroutines called.
  • SYSABEND - SySUDUMP + Nucleus.
  • SYSMDUMP - SYABEND in machine format.

Referback:

  • * (asterik) is a referback operator Parameters.
  • DCB, DSN, OUTPUT, PGM and VOL=SER can be refered back.

Disposition (DISP):

  • DISP = (Start status, Normal End Status, Abend status).
  • Default = (NEW, DELETE, DELETE) for a new dataset.
  • 'PASS' disposition is applicable only for normal end status.
  • The DISP parameter on the DD statement, or the TSO ALLOCATE command, can be used to put a lock on a system data set so that you can update the data set. Specify DISP=OLD whenever you update a data set.
  • If you code DISP=SHR in your JCL, realize that the data set you are updating may be simultaneously updated by another user, resulting in an unusable data set.

Symbolic Variables: 

  • Values are passed after the EXEC PROC=PROCNAME separated by comma.
  • SET can be used to set the values for the symbolic parameters.
  • If a period is followed by a symbolic variables, it will be consumed on substitution.

Examples:

SET S1=A, S2=B, S3=C

Symbolic Variables Substituted Value
&S1.&S2.&S3 ABC
&S1&S2&S3 ABC
&S1..&S2..&S3 A.B.C
&S1.&S2..&S3A Syntax Error ==> No such variable S3A
&S1..&S2..&S3.D A.B.CD
&S1..&S2..&S3..D A.B.C.D
A&S2..&C.D AB.CD

Temporary Datasets:

  • It is mandatory to specify the DISP parameter for temp datasets.
  • If PASS is not specified, dataset will not be passed.
  • If DISP is not mentioned Dataset will be deleted in the same step.

System utility programs:

System utility programs are used to list or change information related to data sets and volumes, such as data set names, catalog entries, and volume labels.

IEHLIST  

To list system control data.

IEHPROGM

To build and maintain system control data.

Data Set Utility Programs:

You can use data set utility programs to reorganize, change, or compare data at the data set or record level. These programs are controlled by JCL statements and utility control statements.

IEBCOPY:

  • Copy, compress, or merge partitioned data sets or PDSEs.
  • Add RLD count information to load modules.
  • Select or exclude specified members in a copy operation.
  • Rename or replace selected members of partitioned data sets or PDSEs.

IEBCOMPR:

  • Compare records in sequential or partitioned datasets.

IEBDG:

  • Create a test data set consisting of patterned data.

IEBEDIT:

  • Selectively copy job steps and their associated JOB statements.

IEBGENER:

  • Copy records from a sequential data set or convert a data set from sequential organization to partitioned organization.

IEBUPDTE:

  • Incorporate changes to sequential or partitioned datasets.
  • Register catalog Procedure in System Catalog.

IEFBR14:

  • Dummy program.

IEBISAM:

  • Unload, load, copy, or print an ISAM data set.

IEBPTPCH:

  • Print or punch records in a sequential or partitioned data set

Utility control statements:

  • Utility control statements are used to identify a particular function to be performed by a utility program and, when required, to identify specific volumes or data sets to be processed.
  • Utility control statements are usually included in the input stream. However, they may also be placed in a sequential data set, or in a member of a partitioned data set or PDSE. In either case, the data set
    must have fixed or fixed blocked records with a logical record length of 80.

Procedures (PROC):

  • Nesting of PROC allowed up to 15 levels.
  • A Cataloged PROC cannot have an instream PROC.

Generation Data Groups (GDG):

  • Functionally related datasets.
  • GDG Base can be created using IDCAMS or IEHPROGM utilities.
  • A model dataset lable is a pattern for the dataset label created for any dataset named as a part of the GDG group. The system needs an existing dataset to serve as a model to supply the DCB parameters for a GDG creation.
  • Omitting the generation number will concatenate all generations available.
  • Within a same job use the generation (+1) etc to refer to the dataset created in previous steps.
  • Generation number is assigned only at the completion of a job.

Abend Codes:

Abend Description
S0C1 Operation exception error - e.g Missing DD
SOC4 Memory exception - Eg. subscript
S0C7 Data exception - Numeric data
S013-18 Specified member not available in PDS
S013-20 Invalid BLKSIZE
S122 Operator cancels job with a request dump
S222 Operator cancels job without a dump
S322 Auto cancel of job due to system timeout parameter
S522 Time exceeded in wait state . e.g dataset not available
S722 Auto cancel of job due to LINES parameter in the job
S80A Cannot find enough virtual storage - Increase the REGION value
S806 Load module not found
SB37 Exceeded the primary and secondary spaces allocation
SD37 Secondary space not mentioned or insufficient
SE37 No more space available in volume (no space for PDS members)