+ All Categories
Home > Documents > JCL - Job Control Language

JCL - Job Control Language

Date post: 18-Nov-2014
Category:
Upload: mfkar
View: 1,371 times
Download: 30 times
Share this document with a friend
Description:
JOB CONTROL LANGUAGE(JCL)Objectives• Focus of this course is to effectively convey the JCL concepts and fundamentals • Intended to provide the benefits. – Competence with the tools and utilities used with JCL – Ability to setup and execute jobs successfully Expectation It’s a 7 unit training course designed to demand approximately 9 hrs of training timePrerequisites• Basic knowledge of mainframe concepts • Dependency • This course is intended to be after TSO/ISPF and Cobol sessions and b
207
JOB CONTROL LANGUAGE(JCL)
Transcript
Page 1: JCL - Job Control Language

JOB CONTROL LANGUAGE(JCL)

Page 2: JCL - Job Control Language

Objectives

• Focus of this course is to effectively convey the JCL concepts and fundamentals

• Intended to provide the benefits.– Competence with the tools and utilities used

with JCL– Ability to setup and execute jobs successfully

Expectation

It’s a 7 unit training course designed to demand approximately 9 hrs

of training time

Page 3: JCL - Job Control Language

Prerequisites

• Basic knowledge of mainframe concepts• Dependency • This course is intended to be after TSO/ISPF and Cobol sessions

and before VSAM session.

Page 4: JCL - Job Control Language

Course Outline

MODULE1

• Introduction - Job Control Language

• Basic Terminology & JCL Statement Format

• Positional vs Keyword Parameters• Relationship of Job Control

Language to the operating system

Page 5: JCL - Job Control Language

Course Outline (Contd)

MODULE2

• Job statement• Positional Parameters in JOB statement - Accounting &

Programmer• Keywords Parameters on the JOB statement - MSGLEVEL,

MSGCLASS, CLASS• MSGLEVEL• MSGCLASS• NOTIFY• TIME• REGION• RESTART• TYPRUN

Page 6: JCL - Job Control Language

Course Outline (Contd)

MODULE 3

• Basic Terminology & JCL statement format

• Positional Parameters - PGM, PROC

• Keywords Parameters -TIME,REGION

• Parameters -PARM

MODULE 4

• DD Statement

• Positional Parameters on DD Statement

• Keyword Parameters - DSN, DISP, DCB

• Keyword Parameters- VOL,LABEL,UNIT

• SPACE Parameter

Page 7: JCL - Job Control Language

Course Outline(Contd)MODULE 5• IBM Utilities• System Utility Programs• DataSet Utility Programs• Independent Utility Programs

MODULE 6• Concatenation of Dataset & Rules• Temporary Dataset• Referbacks• Special DD Statements-JOBLIB &STEPLIB Statements• JCLLIB Statements

Page 8: JCL - Job Control Language

Course Outline(Contd)

• Symbolic Parameters

• SET & Special DD names

• INCLUDE Statement

MODULE 7

• Catalogued Procedures

• Instream Procedures

• Modifying Procedures

MODULE 8

• Keyword Parameter=COND

• Commonly Occuring Abend Codes

• IF/THEN/ELSE/ENDIF Statement

• Operators

Page 9: JCL - Job Control Language

Course Outline(Contd)

MODULE 9• Uses of GDG

• Define a GDG

• Delete a GDG

MODULE 10

• JES2 Control Statements

• JES3 Control Statements

MODULE 11

• DFSORT

Page 10: JCL - Job Control Language

References

• MVS JCL by Doug Lowe• IBM Job Control Language Course notes• MVS JCL Primer by Saba Zamir & Ranade• www.mvshelp.com

 

Page 11: JCL - Job Control Language

MODULE 1

Page 12: JCL - Job Control Language

Introduction - Job Control Language

• Job Control Language is the means of communication between an application program and the computer's operating system (the IBM OS 390 MVS Operating System). JCL carries specific orders through control statements.

• What Can I Do With JCL?– submit a job to the operating system – request resources needed to run the job– control the system’s processing of the job

• What is needed to Write JCL?– access to the IBM mainframe computer – a valid TSO user ID

Page 13: JCL - Job Control Language

Introduction - Job Control Language (Contd)

• Functions of JCL– It identifies your Job to the system.– It describes the Job’s requirements.– It directs the execution of the program(s)– It describes the devices(readers,printers etc.) and

resources(datasets) needed by the program(s).– JCL statements provide information that the operating system

needs to execute a job– A job is something that you want to accomplish with the aid of a

mainframes, e.g. copy a data set, execute a program, or process multiple job steps. You need to supply the information that the job requires and instruct the computer what to do with this information. You do this with JCL statements

Page 14: JCL - Job Control Language

Basic Terminology and JCL statement Format

• JCL Statement Format– Job Control Language (JCL) is very precise. It has specific rules

of grammar and syntax that must be followed. JCL must not contain any irregularities. The JCL will be rejected if it contains typographical errors (including extra or missing spaces or commas), fields in the wrong order, etc. JCL and JES2 statements (except for comments) must not contain lower case letters.

Page 15: JCL - Job Control Language

Basic Terminology and JCL statement Format(Contd)

• BASIC TYPES OF JCL STATEMENTS– JOB STATEMENT :Provides accounting information as well as job

name to each job.– EXEC STATEMENT: calls specified program or procedure for

execution.– DD STATEMENT:provides details about the various resources used

by the program.– COMMENT STATEMENT: The comment statement contains

comments. It is used primarily to document a program and its resource requirements.

– DELIMITER STATEMENT: The delimiter statement signifies the end of a job step.

– NULL STATEMENT: The null statement signifies the end of a job.

Page 16: JCL - Job Control Language

JCL statement Format(Contd)• JCL Parameter Fields

– Each Job Statement is logically divided into:• Identifier Field• Name Field• Operation Field• Parameter Field• Comment Field

Page 17: JCL - Job Control Language

Job Control Language Format (Contd)

// L110 JOB (00124,'MONTHLY STATISTICS'),

// CLASS=P,MSGCLASS=P,REGION=0M

// LST11008 EXEC PGM=TEST

// LST11018 EXEC LST11018,ENV=IPHP,UNITCT=CART,CTL=IPHP,

// UNITDA=PRODDA

// SYSIN DD *

// SYSPRINT DD SYSOUT=*

Identifier Field

Name Field Operation Field

Parameter Field

Page 18: JCL - Job Control Language

Job Control Language Format(Contd)

• Identifier field– The identifier field indicates to the system that a statement is a

JCL statement rather than data. The identifier field consists of the following:

• Columns 1 ,2 and 3 of all JCL,indicates if it is a JCL statement,delimiter statement or a comment statement

– // indicates it is a JCL statement– /* indicates it is a JES2 statement or a delimiter

statement– //* indicates it is a Comment statement

Page 19: JCL - Job Control Language

Job Control Language Format(Contd)

• Name field– The name field associates a name with the JCL statement so

that the system can refer to it.– For JCL statements, code the name as follows:

• The name must begin in column 3.• The name is 1 through 8 alphanumeric or national ($, #, @)

characters.• The first character must be an alphabetic or national ($, #,

@).• The name must be followed by at least one blank.

Page 20: JCL - Job Control Language

Job Control Language Format(Contd)

• Operation field– The operation field specifies the statement function. Code the

operation field as follows:• The operation field follows the name field.• The operation field must be preceded and followed by at

least one blank.• The Operation field is required and begins anywhere in

columns 4 through 15.

Page 21: JCL - Job Control Language

Job Control Language Format(Contd)

• Parameter, or operand field– The parameter field, also sometimes referred to as the operand

field, contains parameters separated by commas and there should be no blanks between parameter fields . Code the parameter field as follows:

• The parameter field follows the operation field.• The parameter field must be preceded by at least one blank.

– The Operand Field provides details and instructions necessary for the system to perform the job. It is composed of one or more parameters, separated by commas.

– There are positional parameters, which appear in a specific order, and keyword parameters, which are of the form KEYWORD=VALUE.

Page 22: JCL - Job Control Language

Job Control Language Format(Contd)

• Comments field– The comments field contains any information you deem helpful

when you code the control statement. Code the comments field as follows:

• The comments field follows the parameter field.• The comments field must be preceded by at least one blank

and ends in column 71.• You can code comments after the parameter field even

though you continue the parameter field on a subsequent statement

Page 23: JCL - Job Control Language

Job Control Language (Contd)

• All JCL statements cannot be continued to the next line.They are

– Comment statement

– Delimiter statement

– Null statement

• The comment and parameter fields of other JCL statements can be continued in the next line.When one continues the comment field to next line he has to leave the column 72 with a non blank character.

• (check the validity to continue comment statement – anish)

• Code // in columns 1 and 2 of the following statement to be continued.

• Continue the interrupted parameter or field beginning in any column from 4 through 16.

• //NAME OPERATION PARAMETER,

• // PARAMETER, PARAMETER

Page 24: JCL - Job Control Language

Positional vs Keyword Parameters

• Positional Parameters:– Must be first and in specific order.– Absence must be indicated by comma.– If last one is absent no comma necessary.– If all later ones absent no commas necessary.– If all positional parameters absent no commas necessary.

• TIME=(5,0) is not necessary TIME=(5) is enough• TIME=(,30) is same as TIME=(0,30) but TIME=(30) is not

correct.

Page 25: JCL - Job Control Language

Positional vs Keyword Parameters

• Keyword Parameters– Appears after positional parameters.– Can be in any order with respect to one another.– Need not indicate the absence of a keyword parameter.– Below statements are valid

• //NAME OPERATION K1=A,K2=B• //NAME OPERATION K2=B,K1=A

Page 26: JCL - Job Control Language

SAMPLE JCL CODE

//L110 JOB (00124,'MONTHLY STATISTICS'),

// CLASS=P,MSGCLASS=P,REGION=0M

//JOBLIB DD DSN=IPHP.DUMMY,DISP=SHR

// DD DSN=IPHP.BT.PGMLIB,DISP=SHR

// DD DSN=IPHP.OL.PGMLIB,DISP=SHR

// DD DSN=IMSS.RESLIB,DISP=SHR

//LST11008 EXEC LST11008,ENV=IPHP,UNITDA=PRODDA,CTL=IPHP

//LST11018 EXEC LST11018,ENV=IPHP,UNITCT=CART,CTL=IPHP,

// UNITDA=PRODDA

//LST11020 EXEC LST11020,ENV=IPHP,UNITCT=3490,

// UNITDA=PRODDA

Page 27: JCL - Job Control Language

MODULE 2

Page 28: JCL - Job Control Language

JOB statement• The Job statement names a job, supplies accounting and

billing information, and supplies options to control processing of the job.

• The JOB statement is always your first JCL statement. It signals the beginning of a job and the end of any previous job and assigns a name to your job. //L116 JOB (00124,‘PROGRAMMER NAME'), // CLASS=J,MSGCLASS=Z,REGION=0M,MSGLEVEL=(0,0),

// NOTIFY=&SYSID,TIME=(2,30),TYPRUN=SCAN,RESTART=STEP2 • The JOB card requires

the Jobname, which appears on the header page of your output, the word JOB in the Operation field, the accounting information for your job, the programmer's name.

Page 29: JCL - Job Control Language

Positional Parameters in JOB statement - Accounting & Programmer

• Accounting Information on the JOB card

– (pano,room,time,lines,cards,forms,copies,log,linect)• Pano indicates the programmers account number, room

indicates programmers room number, time indicates an estimate of job’s execution time in minutes etc..

– Code a comma in place of each omitted sub parameter when other sub parameters follow.

– May or may not be required depending on the installation.

• Programmer Name

– The PROGRAMMER name can be a maximum of 20 characters.

Page 30: JCL - Job Control Language

Keyword Parameters in JOB statement –CLASS,MSGCLASS,MSGLEVEL

• The CLASS Parameter– The CLASS parameter is used to assign your job to a job processing

class. The CLASS parameter specifies the class in which the job will be run and it depends on the characteristics of Job.

– CLASS=n where n varies from A-Z or from 0-9.– If one does not specify the CLASS parameter the installation

establishes a default CLASS.– Three resources are the controlling factors in determining the class to

be system assigned:• 1) REGION size 2) TAPE DRIVE QUANTITY 3) CPU time

specified for JOB execution• REGION size is controlled by the 'REGION=' parameter on the

JOB or EXEC statement.• The quantity of CPU time is specified with the 'TIME=' parameter

on the JOB card as defined in the JCL manual.

Page 31: JCL - Job Control Language

MSGCLASS

• The MSGCLASS Parameter– The MSGCLASS parameter assigns the job log for a job to a

particular sysout output class.MSGCLASS specifies the default print class for all output data sets generated by the job.

– MSGCLASS = n, where n is any value from A – Z or from 0 – 9. If omitted, the default MSGCLASS=A (Printer) is set by the installation. The job log contains the JOB statement, the JCL for the job, JCL processing messages, in-stream and cataloged procedure statements, and JES2 messages and MVS operator messages, if any.

Page 32: JCL - Job Control Language

MSGLEVEL

• The MSGLEVEL Parameter– The MSGLEVEL parameter is used to control the amount of

system messages generated for a Job.The following job log elements can be controlled:

• The JOB statement.• All JCL in the job's input stream including all JCL statements

and JES2 control (JECL) statements.• In-stream and cataloged procedure statements for a

procedure invoked by a job step.• JCL substitution and processing messages.

Page 33: JCL - Job Control Language

MSGLEVEL(Contd)

• Values for 'statements' in the MSGLEVEL keyword can be one of these:– 0 – Print only JOB statements – 1 – Print all JCL and JES statements & messages – 2 – Print only JCL & JES statements

• Values for 'messages' in the MSGLEVEL keyword can be one of these:– 0 – Prints only JCL messages if the job ABENDs and JES

messages also– 1 – Prints JCL and JES messages – The default value supplied if MSGLEVEL is omitted is (1,1).

Page 34: JCL - Job Control Language

MSGLEVEL(Contd)

– JES and MVS operator messages concerning the job's processing, including those for allocations of devices/volumes, start/stop of job steps and the job, and the disposition of the data sets used.

• Syntax: MSGLEVEL=({statements},{allocation messages}) • Examples:

– Print minimal job log:• // MSGLEVEL=(0,0)

– Print everything in job log :• // MSGLEVEL=(1,1)

Page 35: JCL - Job Control Language

NOTIFY

• NOTIFY: – This parameter notifies TSO session of the completion of a job.

The message to the TSO terminal indicates whether the job was cancelled or ABENDed.

– On your JCL JOB card, use the NOTIFY parameter as follows: • //jobname JOB (accounting info,'description',)

// NOTIFY=userid where userid is 1 through 7 alphanumeric characters and must be valid one.– NOTE: If you are logged on at the time the job completes, the

message will appear immediately. If not, the message will appear the next time you begin a TSO session.

Page 36: JCL - Job Control Language

TIME

• TIME– The TIME parameter specifies the maximum CPU time allocated

for a job. If a job uses less than the amount specified, then the account is billed only for the time used. If a job tries to use more time than the maximum specified, the job will terminate with an S322 ABEND. The TIME parameter has two positional subparameters, minute and second.

• TIME=(min,sec) or TIME=min or TIME=(,sec) • The time parameter on the job card does not override the

step parameter. (Warning : If you put a time parameter on steps in your job and also a time parameter on the job card, the time parameter on the job card must be larger than the combined step parameters or the job will abend.)

Page 37: JCL - Job Control Language

TIME (Contd)

• TIME=NOLIMIT or TIME=1440 – Indicates that the Job can use the processor for the unlimited period of time.( ie : 24 hrs)

• TIME=MAXIMUM – Indicates that the Job can use the processor for the maximum amount of time ie: 357912 mins.(248.55 days)

Page 38: JCL - Job Control Language

REGION

• REGION: – The REGION parameter specifies the amount of computer

memory allocated for your job. If the REGION parameter is omitted, the system uses a default region size set by the installation.

– Region=0M and default value

Page 39: JCL - Job Control Language

RESTART

• RESTART :– It specifies the new starting step for a Job.

• RESTART=STEP2 – starts from the STEP2• RESTART=Procname.Stepname – starts from the a step

within a cataloged procedure• RESTART=* - starts from the first step.

Note: Datasets created in or after restarted step of previous run may still exist and should be deleted first.

Page 40: JCL - Job Control Language

TYPRUN

• TYPRUN : It tells the system either to check the JCL or hold it for later execution.

• It has four options – – TYRUN=COPY – requests the Job to be printed as a sysout

dataset but not to be processed– TYPRUN=HOLD – requests the Job to be released by the

operator before it will be processed.The JCL will be checked before HOLD.

– TYPRUN=JCLHOLD – requests to hold the Job before completing JCL processing.

– TYPRUN=SCAN – requests the system to scan the JCL for

syntax errors.

Page 41: JCL - Job Control Language

Exercises

1.Identify the following as valid or invalid examples of job names.

If invalid,why?

1.//JOB13

2.//RUN#2

3.//*RUN#5

4.//$ABCD

5.//TEST#4675

6.//1@PAY011

Page 42: JCL - Job Control Language

Exercises(Contd)

2.Use the following information and code a job statement

JOBNAME - ABC1

ACCOUNT# - D4123

PGM.NAME - YOUNG

MESSAGE CLASS - E

PRINT ALL JCL STATEMENTS

PRINT ALL MESSAGES

Page 43: JCL - Job Control Language

Exercises(Contd)

3.Use the following information and code a job statement

JOBNAME - ABC2

ACCOUNT# - 123-34

PGM.NAME - SMITH

MESSAGE CLASS - C

PRINT ONLY JOB STATEMENT

NO MESSAGES

Page 44: JCL - Job Control Language

Exercises(Contd)

4.Use the following information and code a job statement

JOBNAME - ABC3

ACCOUNT# - 4123

PGM.NAME - TIGER

MESSAGE CLASS - D

NOTIFY - ABC

PRINT ALL JCL STATEMENTS

NO MESSAGES

Page 45: JCL - Job Control Language

Exercises(Contd)

5.Use the following information and code a job statement

JOBNAME - ABC4

ACCOUNT# - 4123,25

PGM.NAME - YOUR NAME

MESSAGE CLASS - E

NOTIFY - ABC

EXECUTION CLASS - A

Page 46: JCL - Job Control Language

MODULE 3

Page 47: JCL - Job Control Language

EXEC Statements

• EXEC Statement:– EXEC (execute) statement to names the program to be

executed or invokes cataloged or in-stream procedure that the job is to execute

– The EXEC statement marks the beginning of each step in a job or a procedure.

– A job can have a maximum of 255 job steps.• Syntax • //LST1108 EXEC LST1108• //LST1109 EXEC PGM=PGM1

Page 48: JCL - Job Control Language

EXEC Statements (Contd..)

//JOBNAME JOB (‘KINWN’,TIME=(0,5)……..

//STEPNAME EXEC PGM=TEST1

//STEPNAME EXEC PROC

 

IdentifierName Field

OperationParameter Field

Col 3

Col 1

Comment field

(72-80)

Page 49: JCL - Job Control Language

EXEC Statement (Contd)

• Name field:– It must be unique within the job.– The stepname must begin in column 3.– It can contain max of 8 alphanumeric or national characters– The first character must be a alphabet.

• Operation Field:– This field consists of characters EXEC and can start in any

column.– The word EXEC must be preceded and followed by a blank.

Page 50: JCL - Job Control Language

EXEC Statement (Contd)

• Comment field:– The comments field follows the parameter field after at least one

intervening blank.• Parameter field:

– EXEC statement has 2 types of parameter fields.• Positional Parameter Field• Keyword Parameter Field.

Page 51: JCL - Job Control Language

Positional Parameters

• The two positional parameter of EXEC statements are:– PGM

• It refers to a program name or a procstepname.• The program name must be 8 characters long.

– PROC or Procedure name• It refers to procedure name.

Page 52: JCL - Job Control Language

Positional Parameters (Contd)

• PGM parameter:– It is used to name the program that the system is to execute.– Coded as first parameter in EXEC statement.– The specified program must be a load member of a partitioned

data set (PDS) used as a system library, a private library, or a temporary library.

– PGM=program-name • Program name specifies the member name or the alias of the

program to be executed.

Page 53: JCL - Job Control Language

Positional Parameters(Contd)

– These statements indicate that the system is to search the private library DEPT12.LIB4 for the member named USCAN, read the member into storage, and execute the member.

//JOB8 JOB BOB,MSGLEVEL=(2,)

//JOBLIB DD DSNAME=DEPT12.LIB4,DISP=(OLD,PASS)

//STEP1 EXEC PGM=USCAN

Page 54: JCL - Job Control Language

Positional Parameters(Contd)

• PROC parameter – It is used to specify that the system is to call and execute a

cataloged or in-stream procedure.– Syntax

{PROC=procedure-name} or {procedure-name}• procedure-name Identifies the procedure to be called and

executed:• The member name or alias of a cataloged procedure.• The name on the PROC statement that begins an in-stream

procedure. The in-stream procedure must appear earlier in this job.

Page 55: JCL - Job Control Language

Positional Parameters(Contd)

– This statement EXECutes the cataloged or in-stream procedure named OPERATE.

• //BK EXEC OPERATE– This statement EXECutes the cataloged or in-stream procedure

named PAYWKRS.• //SP3 EXEC PROC=PAYWKRS

Page 56: JCL - Job Control Language

Keywords Parameters(Contd)

• Region– This parameter is used to specify the amount of central or virtual

storage that the steps requires(inclusive of the storage for all the programs in the step to be executed.)

• Syntax:– REGION [.procstepname ]={valueK}

{valueM}– valueK Specifies the required storage in kilobytes– valueM Specifies the required storage in megabytes– A JOB statement REGION parameter applies to all steps of the

job and overrides any EXEC statement REGION parameters.

Page 57: JCL - Job Control Language

Keywords Parameters(Contd)

• Example– The system assigns 40K bytes of central (real) storage to this

job step.

//MKBOYLE EXEC PROC=A,ADDRSPC=REAL,REGION=40K

//STP6 EXEC PGM=CONT,REGION=120K– The system assigns a region of 120K bytes. When the

ADDRSPC parameter is not specified, the system defaults to ADDRSPC=VIRT.

Page 58: JCL - Job Control Language

Keywords Parameters(Contd)

• ADDRSPC –(Address Space) Indicates the type of storage for the present step.– This parameter cannot override the specific type of storage coded

in the job statement but can override the system default.– Syntax=ADDRSPC[procstepname]={VIRT/REAL}

• VIRT - requests virtual storage.The system can page the job step.

• REAL - requests real storage.The system cannot page the job step and must place the job step in central storage.

• The system uses the EXEC statement ADDRSPC parameter only when no ADDRSPC parameter is on the job statement.

– Example• //CAC1 EXEC PGM=A,ADDRSPC=VIRT• //CAC2 EXEC PROC=B,ADDRSPC=REAL,REGION=8K

Page 59: JCL - Job Control Language

Keywords Parameters(Contd)• TIME parameter

– It is used to specify the maximum amount of time that a job step may use the processor or to find out through messages how much processor time a step used.

– You can use the TIME parameter on an EXEC statement to increase or decrease the amount of processor time available to a job step over the default value.

– TIME [.procstepname ]= {([minutes ][,seconds ])} {1440 } {NOLIMIT } {MAXIMUM } {}– Minutes : Specifies the maximum number of minutes the step

can use the processor. The minutes must be a number from 0 through 357912 (248.55 days).

Page 60: JCL - Job Control Language

Keywords Parameters(Contd)

– Seconds :Specifies the maximum number of seconds that the step can use the processor, in addition to any minutes that are specified. The seconds.

– NOLIMIT: Indicates that the step can use the processor for an unlimited amount of time.

– 1440: Indicates that the step can use the processor for an unlimited amount of time.

– MAXIMUM : Indicates that the step can use the processor for the maximum amount of time.

• Coding TIME=MAXIMUM allows the step to run for 357912 minutes.

Page 61: JCL - Job Control Language

Keywords Parameters(Contd)

• This statement specifies that the maximum amount of time the step can use the processor is 12 minutes, 10 seconds.– //STEP1 EXEC PGM=GRYS,TIME=(12,1 )

• This statement specifies that the maximum amount of time the step can use the processor is 30 seconds.– //FOUR EXEC PGM=JPLUS,TIME=(,3 )

• This statement specifies that the maximum amount of time the step can use the processor is 5 minutes.– //INT EXEC PGM=CALC,TIME=5

• This statement specifies that the step can have unlimited use of the processor. Therefore, the step can use the processor and can remain in a wait state for an unspecified period of time, if not restricted by the JOB statement TIME parameter.– //LONG EXEC PGM=INVANL,TIME=NOLIMIT

Page 62: JCL - Job Control Language

PARM Parameter

• PARM : – Passes control information to the job step when the step is

initiated.– This is useful for passing runtime information to an application

program– Syntax = PARM[procstepname]= information.– Information can be of 100 characters.

//STEP1 EXEC PGM=IEFBR14,PARM=(19980316,

// 19980322)

//STEP2 EXEC PGM=IEFBR14,PARM=('START=03/18/98',

// 'STOP=03/22/98')

Page 63: JCL - Job Control Language

PARM Parameter (Contd)

• PARM parameter– It is used to pass variable information to the processing program

executed by this job step. – Syntax

• PARM [.procstepname ]=subparameter• PARM [.procstepname ]=(subparameter,subparameter)• Subparameter: Consists of the information to be passed to

the processing program.– The length of the subparameters passed must not exceed 100

characters inclusive of commas passed to the processing program.

Page 64: JCL - Job Control Language

PARM Parameter (Contd)

– The system passes P1,123,P2=5 to the processing program named APG22.

• //RUN3 EXEC PGM=APG22,PARM='P1,123,P2=5‘

– The system passes MT5 to the first step of the procedure named PROC81. If PROC81 contains more steps and their EXEC statements contain PARM parameters, the system nullifies those PARM parameters.

• //EXEC PROC=PROC81,PARM=MT5

Page 65: JCL - Job Control Language

Exercises

1.What is the error in the following JCL statements

i)//step#three exec pgm=hkbc762

ii)//step#3 exec pgm=hkbc762

iii)//step#3 exec pgrm=hkbc762

2.What is the difference between the following statements

i)//step1 exec pgm=accpay

ii)//step1 exec accpay

Page 66: JCL - Job Control Language

MODULE 4

Page 67: JCL - Job Control Language

DD Statement• DD (data definition)

– This statement is used to convey information about the data that will be read or written within Job.

– Syntax: //ELECSTD DD // DSN=PSET.CDRS.SAS.CDRS341.ELECSTD.FLATFILE,

// DISP=SHR – The DD statement consists of the characters // in columns 1 and 2

and four fields: name,operation (DD), parameter, and comments.

– A DD statement is required for each data set.– Each ddname should be unique within the job step.– The ddname is 1 through 8 alphanumeric or national ($, #, @)

characters.– The first character must be alphabetic or national ($, #, @).– The ddname must be followed by at least one blank.

Page 68: JCL - Job Control Language

DD Statement (Contd)

• Name field:– Each ddname should be unique within the job step.

• Operation Field: – The operation field consists of the characters DD and must be

preceded and followed by at least one blank. It can begin in any column.

• Comments Field:– The comments field follows the parameter field after at least one

intervening blank.• Parameter Field:

– A DD statement has two kinds of parameters: positional and keyword.

Page 69: JCL - Job Control Language

Positional Parameters on DD Statement

• “ * “ specifies that data follows immediately; no keyword parameters may follow. The data may not contain any records beginning with // or /*.– A cataloged or in-stream procedure cannot contain a DD *

statement.– You can code more than one DD * or DD DATA statement in a

job step in order to include several distinct groups of data for the processing program. Precede each group with a DD * or DD DATA statement and follow each group with a delimiter statement.

Page 70: JCL - Job Control Language

Positional Parameters on DD Statement (Contd)

• DATA : – It specifies that data follows immediately; keyword parameters

may follow the DATA positional parameter. The data may contain records beginning with //, but none beginning with /*.

• DUMMY : – It specifies that if the file is an output file, the output is to be

discarded. If the file is an input file,it specifies that there is no data.

• Example

//MYDS DD DSNAME=REPORT

//A DD DSNAME=FILE

Page 71: JCL - Job Control Language

Keyword Parameters on DD Statement

• DSNAME:Specifies the name of a data set.– Unqualified Name :1 through 8 alphanumeric or national ($, #,

@) characters, a hyphen, or a character X C0 . The first character must be alphabetic or national ($, #, @).

– Qualified Name: Multiple unqualified names joined by periods.• The maximum length of a qualified data set name is 44 characters,

including periods.• Data Set Name for Temporary Data Set• A temporary data set is a data set that you create and delete within

a job.When you use DSNAME for a temporary data set, code the name as two ampersands (&&) followed by a character string 1 to 8 characters in length– &&dsname Specifies the name of a temporary data set.

Page 72: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• Data Set Name for Dummy Data Set :– NULLFILE– Specifies a dummy data set. NULLFILE has the same effect as

coding the DD DUMMY parameter. NULLFILE must be coded as a single-word parameter.

Page 73: JCL - Job Control Language

Keyword Parameters on DD Statement t (Contd)

• //DD1 DD DSNAME=ALPHA,DISP=(,KEEP),//UNIT=342 ,VOLUME=SER=389984– DD statement DD1 defines a new data set and names it ALPHA.

DD statements in later job steps or jobs may retrieve this data set by specifying ALPHA in the DSNAME parameter, unit information in the UNIT parameter, and volume information in the VOLUME parameter.

• //DDSMS1 DD DSNAME=ALPHA.PGM, //DISP=(NEW,KEEP),DATACLAS=DCLAS1,//MGMTCLAS=MCLAS1,STORCLAS=SCLAS1– DD statement DDSMS1 defines a new SMS-managed data set

and names it ALPHA.PGM. DD statements in later job steps or jobs may retrieve this data set by specifying ALPHA.PGM in the DSNAME parameter.

Page 74: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• DISP : – Used to instruct the system as to the current status of a data set– It also indicates the steps to be taken with the dataset upon

successful or unsuccessful execution of a Job – Syntax DISP=(status,normal-disposition,abnormal-disposition)

• status - indicates current status of dataset– NEW – the dataset does not exist and should be created– OLD – the dataset exists and should be allocated for

exclusive use– SHR – the dataset exists and should be allocated for

shared use– MOD – the dataset is allocated for exclusive use and is

positioned at the end of the data, so additional records may be added after last record

Page 75: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• normal-disposition – specifies how the dataset is to disposed upon normal execution of job

– DELETE – the dataset is deleted . If the dataset was retrieved from catalog, it is also uncataloged

– KEEP – the dataset is retained– CATLG – the dataset is retained and catalog entry is made – UNCATLG – the dataset is retained but it’s catalog entry remove– PASS – Normal disposition only. The dataset is retained for use

by a later job step• abnormal-disposition – specifies how the dataset is to be disposed

upon abnormal execution of job– DELETE – the dataset is deleted . If the dataset was retrieved

from catalog, it is also uncataloged – KEEP – the dataset is retained– CATLG – the dataset is retained and catalog entry is made – UNCATLG – the dataset is retained but it’s catalog entry remove

Page 76: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

– MVS assumes default values for DISP parameter • If status subparameter is omitted MVS assumes it as NEW• If normal-disposition subparameter is omitted the default

depends on the status subparameter– If status subparameter is NEW the normal disposition

subparameter is DELETE else KEEP• If abnormal disposition subparameter is omitted it takes

whatever value specified in normal disposition subparameter– DISP=SHR – Allocates an existing dataset for shared access,

normal and abnormal disposition parameter default is KEEP

Page 77: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

– DISP=OLD – allocates an existing dataset for exclusive access, normal and abnormal disposition default set to KEEP

– DISP=MOD – if dataset exists, extend it else create it. The access is exclusive, normal and abnormal disposition default is set to KEEP

– DISP=(NEW,CATLG) – allocates a new dataset and catalogs it, abnormal disposition set to CATLG

– DISP=(OLD,DELETE) – allocates and exiting dataset and deletes it , abnormal disposition set to DELETE

– DISP=(,KEEP,DELETE) – allocates a new dataset and keeps it if job step ends normally, if job step ends abnormally the dataset is deleted

– DISP=(NEW,CATLG,DELETE) – the dataset is created, cataloged if the job step ends normally and deletes it if job step ends abnormally

Page 78: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• DCB Parameter:describes the dataset. – //DD1A DD

DSNAME=EVER,DISP=(NEW,KEEP),UNIT=3380,– //

DCB=(RECFM=FB,LRECL=326,BLKSIZE=23472),– // SPACE=(23472,(2 ,4 ))

• DD statement DD1A defines a new data set named EVER on a 3380. The DCB parameter contains the information necessary to complete the data control block.

Page 79: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• Important subparameters of DCB parameter:• BLKSIZE : specifies the number of bytes (characters) per

block,where b is a multiple of the LRECL.• LRECL : specifies the logical record length (n) for fixed or variable

length records; omit LRECL for records of undefined length.

Page 80: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• RECFM : specifies the record format. Common values for RECFM are – U for undefined-length records, – V or VB for variable-length or variable-blocked records, – F or FB for fixed-length or fixed-blocked records, and – FA, FBA, or VBA for fixed, fixed-blocked, or variable-blocked

records with a printer control character as the first byte of data.

Page 81: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• UNIT : – It specifies whether the dataset is to reside on disk or tape; device can

be DISK for disk datasets, TAPE for cartridge tape datasets, or REEL for reel (round) tape datasets.

• UNIT= [device_address]– Each I/O device is assigned a hardware address when a system is

generated– Device address is expressed as a three/four hexadecimal digits

• //JOB1 JOB A123,’NAME’• //STEP1 EXEC PGM=PGM1• //DATA1 DD DSN=FILE1,• // UNIT=S04

– Here when the Job is executed PGM1 is executed and a dataset called FILE1 which resides on a device identified by its hardware address S04 is accessed

Page 82: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• UNIT= [device_type] – Device type is identified by the model number assigned to that

device by IBM.– It is installation specific

• //JOB2 JOB A124,’NAME’• //STEP1 EXEC PGM2• //DATA1 DD DSN=FILE2,• // UNIT=3390

– Here when the JOB2 is submitted PGM2 is executed and a dataset called FILE2 which resides on a 3390 disk unit is accessed

Page 83: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• UNIT=[device_group_name]– Device group name is symbolic name which is assigned to a

group of devices when system is generated– Devices are grouped together based on their functions

• //JOB3 JOB A125,’NAME’• //STEP2 EXEC PGM=PGM3• //DATA2 DD DSN=FILE3,• // UNIT=TESTDA

– Here when JOB3 is submitted PGM3 is executed which accesses FILE3. The file can reside on any of devices which are grouped under symbolic name TESTD

Page 84: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• UNIT=[device,DEFER]– It defers the mounting of volume that UNIT references, until

dataset that resides on it is opened• //JOB4 JOB S123,’NAME5’• //STEP2 EXEC=PGM4• //NAME DD DSN=DATA3,• // UNIT=(TAPE,DEFER)

– Here when JOB4 is submitted, PGM4 is executed. The dataset UNIT parameter along with DEFER subparameter is used to specify that dataset resides on TAPE and tape need not be mounted until system specifically requests it.

Page 85: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• UNIT=[AFF=ddname] – AFF subparameter is used to reference a device that specified in

a prior DD statement– AFF stands for affinity– Advantage is AFF subparameter forces datasets into same

device and thus saving storage space on available I/O devices• //JOB1 JOB D13,KIRAN• //STEP1 EXEC PGM=PGM1• //NAME1 DD DSN=DATA1• // UNIT=CART• //NAME2 DD DSN=DATA2• // UNIT=AFF=NAME1

– Here the datasets NAME1 & NAME2 resides in the same unit.

Page 86: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• VOL parameter– Specifies the volume on which the dataset resides; name is either a disk

pack or a tape name. – This parameter can be omitted for an existing catalogued data set.

• VOL=SER– This is used to request specific volumes

• //JOB1 JOB D12,’GIREESH’• //STEP1 EXEC PGM=PGM1• //NAME1 DD DSN=DATA1,• // VOL=SER=23456

• VOL=REF subparameter– This is used to specify a volume which has been previously defined

within same Job, but not in current step– VOL=REF=*referback

Page 87: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

//JOB1 JOB C123,’JANNET’//STEP1 EXEC PGM=PGM1//DD1 DD DSN=DATA1,// VOL=SER=VOL1//DD2 DD DSN=DATA2,// VOL=REF=*.STEP1.DD1

Here when the Job is submitted the program PGM1 is executed the dataset DD1 is accessed from volume whose serial number is VOL1. The reference is again made to same volume number in DD2 via the Reference sub parameter.

Page 88: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• Space parameter:– Used to specify the storage requirements on direct access devices– Syntax SPACE= (CYL,(primary,secondary,directory),RLSE) = (TRK,(primary,secondary,directory),RLSE) = (BLK,(primary,secondary,directory),RLSE)– primary – specifies how many units of space to allocate for the

dataset’s primary extents. – secondary – if the file requires space more than what is allocated

in primary extent, secondary extents can be used to allocate upto 15 times.

– directory – this is used only for partitioned datasets• this is used to record the names and locations of members

created within partitioned datasets• It should be a number that specifies how many 256-byte

blocks are to be contained in the directory of a PDS

Page 89: JCL - Job Control Language

Keyword Parameters on DD Statement (Contd)

• RLSE – – It specifies that any unused space is to be released when the job

step is finished with the data set. • This parameter is optional; it should be coded for sequential

data sets only.• Example

– SPACE=(TRK,(20,5),RLSE)– The maximum space that could be allocated is: 20 + 5(15) = 95

tracks.

Page 90: JCL - Job Control Language

Exercises

1.Write a DD statement for creating a new dataset with the following

features

1.The dataset should be deleted once the step completes

2.The dataset should be deleted once the step abends

3.It should be sequential dataset with primary and

secondary allocation of 2 blocks each.

4.The unused space should be freed once the step finishes

5.The logical record length be 80,block size of 800

and record format as FB

Page 91: JCL - Job Control Language

Exercises(Contd)

2.Write a DD statement for creating a new dataset with the following

features

1.The dataset is to be kept at the end of step

2.The dataset is a partitioned dataset and it is to reside on the tape

3.Specify a primary allocation of 10 blocks and secondary allocation

of 5 blocks

Page 92: JCL - Job Control Language

MODULE 5

Page 93: JCL - Job Control Language

IBM UTILITIES

• What is a Utility?– A set of used and tested programs that perform a variety of useful

functions.– Assist in organizing and maintaining data.– Examples of uses of Utility Programs:

• Copy files from one storage medium to another (e.g. card to disk, tape to print).

• Back up and restore disk-packs. • Catalog, scratch or rename files. • Copy and compress partitioned data sets and so on.

• Utility programs are controlled by two types of statements– JCL statements– UTILITY statements

Page 94: JCL - Job Control Language

IBM UTILITIES (Contd.)

• Each Utility program falls into one of the three classes

– System Utility Programs

– Data set Utility Programs

– Independent Utility Programs

• The selection of a specific utility program is dependent on the nature

of the job to be performed.

Page 95: JCL - Job Control Language

System Utility Programs

• System Utility Programs

– Used to maintain and manipulate system and user data

– Maintain libraries and catalog entries

– Initiate volumes

– Volume and data set backup

– List VTOC, directories and catalog.

• Examples :

– A System Utility Program can be used to rename a data set.

– It can also be used to move or copy collections of data.

Page 96: JCL - Job Control Language

System Utility Programs(Contd.)

• System Utility Programs (starts with IEH)

– IEHATLAS

– IEHINITT

– IEHLIST

– IEHMOVE

– IEHPROGM

– IEHSTATR

Page 97: JCL - Job Control Language

Dataset Utility Programs

• Data set Utility Programs

– Used to reorganize, change or compare data (data set or record level)

– Allows to manipulate PDS/ SEQ data sets (fields within a logical record to entire data sets)

– Controlled by JCL and utility statements

– The programs are executed as jobs

• Examples:

– Data set Utility Programs can be used to compare records in sequential or partitioned data sets.

– They can also be used to copy, compress or merge partitioned data sets.

Page 98: JCL - Job Control Language

Dataset Utility Programs(Contd.)• Data set Utility Programs (starts with IEB)

– IEBCOMPR

– IEBCOPY

– IEBDG

– IEBEDIT

– IEBGENER

– IEBIMAGE

– IEBISAM

– IEBPTPCH

– IEBUPDTE

Page 99: JCL - Job Control Language

Dataset Utility Programs(Contd.)

• IDCAMS UTILITY– IDCAMS, also known as Access Method Services, is used to

perform the following tasks:• Create a VSAM data set, VSAM alternate index, or catalog

• List a catalog entry for a data set, file/catalog contents • Copy a file or catalog • Print all or part of a data set in character or hex format • Build a backup copy of a VSAM data set, catalog, non-VSAM

data set, or an alternate index • Convert non-VSAM to VSAM data set, VSAM to SAM format,

CVOLs to ICF catalogs, VSAM catalog entries to ICF catalog entries

• Alter the attributes of a catalog or data set • Catalog or Uncatalog VSAM/non-VSAM data set and GDGs

Page 100: JCL - Job Control Language

Dataset Utility Programs(Contd.)

• Verify a VSAM data set's software end-of-file indicator.• Delete a VSAM or non-VSAM data set or volume records,

catalog, path, GDG, alias, candidate volume, alternate index, page space, or truename catalog entry

• Attach a user catalog to the master catalog • Create a MVS paging space, generation data group (GDG) • Collect data set and volume info. on migration utility • Connect catalogs to one another • Import/Export VSAM data sets, catalogs • Load a VSAM file from SAM, ISAM, or VSAM records • Unload a VSAM data set • Merge ICF catalogs or recreate ICF entries • Rename VSAM data sets • Move a catalog and VSAM/non-VSAM data sets

Page 101: JCL - Job Control Language

Dataset Utility Programs (Contd.)

• Sample IDCAMS JCL:

//JS10 EXEC PGM=IDCAMS,REGION=1024K,PARM=parameters

//STEPCAT DD DSN=...,DISP=SHR Optional STEPCAT

//anyname DD DSN=... Optional file

//SYSPRINT DD SYSOUT=* IDCAMS Messages file

//SYSIN DD * Control Statements file

control statements...

/*

Page 102: JCL - Job Control Language

Dataset Utility Programs (Contd.)

• IEBGENER Utility – IEBGENER is a generalized copy utility used to perform the

following tasks: • Produce a backup copy of a sequential data set, or a member

of a PDS or PDSE. • Produce a PDS or PDSE, or a member of either, from a

sequential file.• produce an "edited" sequential data set, PDS, PDSE, or a

member in either • Handle double-byte character set data DBCS data

• Produce printed list of either sequential data sets or

PDS/PDSE members • Reblock a data set or change its logical record length

• Provide exit or editing capabilities for label processing, input

data editing, key creation, or permanent I/O error processing.

Page 103: JCL - Job Control Language

Dataset Utility Programs(Contd.)

• Sample IEBGENER JCL:

//JS10 EXEC PGM=IEBGENER,REGION=1024K

//SYSPRINT DD SYSOUT=* Messages

//SYSUT1 DD DSN=...,DISP=... Sequential Input File

//SYSUT2 DD DSN=...,DISP=... Output File

//SYSIN DD * Control Statements

control statements...

/*

Page 104: JCL - Job Control Language

Dataset Utility Programs(Contd.)

• Sample JCL to copy one file to another file:

//JS10 EXEC PGM=IEBGENER

//SYSPRINT DD SYSOUT=*

//SYSUT1 DD DSN=MY.DSN.IN,

// DISP=SHR

//SYSUT2 DD DSN=MY.DSN.OUT,

// DISP=(,CATLG),

// VOL=SER=volser,

// SPACE=(TRK,(30,30),RLSE)

//SYSIN DD DUMMY

//SYSUDUMP DD SYSOUT=*

Page 105: JCL - Job Control Language

Dataset Utility Programs(Contd.)

• IEBCOPY:– IEBCOPY is a generalized copy utility used to perform the following

tasks:• IEBCOPY is used to copy all or part of a Partitioned Data Set (PDS)

or PDSE. Selected members of a PDS or PDSE can be copied to another or the same PDS or PDSE and/or renamed.

• A sequential backup copy of a PDS or PDSE can be made. A PDS or PDSE can be refreshed from a sequential copy previously created by an unload. You can load a PDS to an SMS managed PDSE. Copying a PDSE to a PDS can be done, but application information stored in the directory of the PDSE will be lost. Altering RLD counts for load modules in place can also be done

• Is used to "compress" a PDS when all of its unused internal space has been exhausted. The compress operation reorganizes a PDS so that all previously unused space inside the PDS is reclaimed. .

Page 106: JCL - Job Control Language

Dataset Utility Programs(Contd.)

• Sample IEBCOPY JCL: //JS10 EXEC PGM=IEBCOPY,REGION=1024K, // PARM='SIZE=nnnnnnnnK' Optional PARM //SYSPRINT DD SYSOUT=* IEBCOPY Messages //ddname1 DD DSN=...,DISP=... Input File

//ddname2 DD DSN=...,DISP=... Output File

//SYSUT3 DD UNIT=SYSDA,SPACE=(TRK,(30,30),RLSE) Work file 1

//SYSUT4 DD UNIT=SYSDA,SPACE=(TRK,(30,30),RLSE) Work file 2

//SYSIN DD * Control Statements control statements... /*

Page 107: JCL - Job Control Language

Dataset Utility Programs(Contd.)

• Sample JCL to compress a PDS:

//JS10 EXEC PGM=IEBCOPY,REGION=1M

//SYSPRINT DD SYSOUT=*

//I1 DD DSN=my.pds, same PDS for I1 & O1

// DISP=OLD

//*

//O1 DD DSN=my.pds,

// DISP=OLD

//SYSIN DD *

COMP1 C O=O1,I=((I1,R))

Page 108: JCL - Job Control Language

Dataset Utility Programs(Contd.)

• Sample JCL to unload a PDS to a tape:

//STEP1 EXEC PGM=IEBCOPY,REGION=1024K

//SYSPRINT DD SYSOUT=*

//I1 DD DSN=my.pds, PDS to unload

// DISP=OLD

//*

//O1 DD DSN=my.pds.tape.copy, tape to unload PDS to

// DISP=(,CATLG),

// UNIT=TAPE,

// VOL=SER=

//SYSIN DD *

COPY1 C O=O1,I=((I1,R))

Page 109: JCL - Job Control Language

Dataset Utility Programs(Contd.)

• Sample JCL to copy 4 members from one PDS to another:

//PDSCOPY EXEC PGM=IEBCOPY,REGION=1024K

//SYSPRINT DD SYSOUT=*

//I1 DD DSN=my.pds.input, copy from here

// DISP=SHR

//*

//O1 DD DSN=my.pds.output, to here

// DISP=SHR

//SYSIN DD *

COPY1 C O=O1,I=((I1,R))

SELC1 S M=MEMBER1,MEMBER2

SELC2 S M=((MEMBER3,NEWMEM3),MEMBER4) rename MEMBER3 to NEWMEM3

Page 110: JCL - Job Control Language

Dataset Utility Programs(Contd.)

• IEBCOMPR : • IEBCOMPR is a data set utility used to compare two sequential

data sets, two partitioned data sets or two PDSEs at the logical record level to verify a backup copy.

• Fixed, variable, or undefined records from blocked or unblocked data sets or members can also be compared.

• Should not use IEBCOMPR to compare load modules. • Two sequential data sets are considered equal, that is, are

considered to be identical, if: – The data sets contain the same number of records.– Corresponding records and keys are identical .

Page 111: JCL - Job Control Language

Dataset Utility Programs(Contd.)

• Two partitioned data sets or two PDSEs are considered equal if: – Corresponding members contain the same number of records – Note lists are in the same position within corresponding

members – Corresponding records and keys are identical – Corresponding directory user data fields are identical

Page 112: JCL - Job Control Language

Dataset Utility Programs(Contd.)

• Sample JCL to compare Two Partitioned Data Sets

//DISKDISK JOB ...

//STEP1 EXEC PGM=IEBCOMPR

//SYSPRINT DD SYSOUT=A

//SYSUT1 DD DSNAME=PDSSET1,UNIT=disk,DISP=SHR,

// DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000),

// VOLUME=SER=111112

//SYSUT2 DD DSNAME=PDSSET2,UNIT=disk,DISP=SHR,

// DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000),

// VOLUME=SER=111113

//SYSIN DD *

COMPARE TYPORG=PO

/*

Page 113: JCL - Job Control Language

Independent Utility Programs(Contd.)

• Independent Utility Program

– Used when the operating system is not available

– Load the universal character set buffer and the forms control buffer for a printer

– Controlled only by the utility statements

– The programs are not invoked by calling a program

• Examples:

– Independent Utility Program can be used to initialize a direct access volume and to assign alternate tracks.

– They can also be used to dump and restore the data contents of a direct-access volume

• Independent Utility Program (starts with ICA)

– ICAPRTBL

Page 114: JCL - Job Control Language

Independent Utility Programs(Contd)

Utility Control Statement Coding Rules

//STEPNAME EXEC PGM=IEHLIST

//SYSIN DD *

(COL.4) (COL.72)

LISTVTOC DSNAME=dsname, x

VOL=device=serial, FORMAT

(COL.16)

Page 115: JCL - Job Control Language

UTILITIES (Contd.)

• Utility Control Statement Coding Rules

– Utility Control Statement do not start with a //

– Must be coded in columns 4 through 71

– If the statement exceeds col.71, then use the continuation rules

– Continuation rules

– Break the statement at a comma

– Code a nonblank character in col.72

– Continue the statement in col.16 of the following line

– The utility control statement is coded right after the //SYSIN DD statement.

//SYSIN DD *

( the word DATA may be used instead of the * )

Page 116: JCL - Job Control Language

UTILITIES (Contd.)– Utility Control Statement Coding Rules

• The utility control statement may also be coded as a sequential data set or a member of a PDS on the //SYSIN DD statement

//SYSIN DD DSNAME=TSOI044.CNTL,DISP=SHR

//SYSIN DD DSNAME=TSOI044.CNTL(member),DISP=SHR• The utility control statement may also be coded as a DUMMY

data set if no editing is required. DUMMY may be coded when using IEBGENER

• The abbreviation DSN for DSNAME is not accepted in the utility control statement. You must always code DSNAME

• VOL=device=serial field in the utility control statement. Here, device is the same as unit=device in the DD statement. The serial is the same as the VOL=SER=serial in the DD statement.

Page 117: JCL - Job Control Language

Exercises

1.Write down the JCL code for moving “WELCOME TO USSWI” to a dataset ABC.DFG.SEQ

2.Assume that the above dataset is a partitioned dataset move the above

data to its member.

3.Write down the JCL code for renaming and deleting 2 members of a dataset ABC.SDE.DEL

4.Write down the JCL code for copying 4 members of the dataset

ABC.SDE.DEL to ADS.MER.NEW

Page 118: JCL - Job Control Language

MODULE 6

Page 119: JCL - Job Control Language

Concatenation of Datasets & Rules

Concatenation is the grouping a set of separate datasets into a single

logical dataset

Rules of Concatenation

1.Maximum of 255 sequential datasets

2.Maximum of 16 partitioned datasets

3.Partioned and sequential datasets cannot be mixed

4.Members of a partitioned datasets are treated as sequential datasets

5.RECFM must be the same on each data being concatenated

6.Coding rules specify that the ddname to be omitted after the first

dataset to be concatenated

Page 120: JCL - Job Control Language

Temporary Dataset

A Temporary Dataset is one that is created and deleted

in the same job.There are three ways of creating a temporary dataset

1.Omit the DSN

//A DD UNIT=SYSDA,SPACE=(TRK,1)

2.Code the name with && such as DSN=&&WORK

3.Code the name with & such as DSN=&&WORK

To retain the dataset even after the current step ends ,the

Temporary dataset has to be passed to the next step

by coding PASS in the second sub-option of the DISP

parameter

Page 121: JCL - Job Control Language

Referbacks

Refeback or backward reference is used to obtain the values

from the same parameters in other steps.The presence of *

indicates that referback is being used.

Example:-

//STEP1 EXEC…..

//DD1 DD DSN= A.B.C,….

//STEP2 EXEC ……..

//DD2 DD DSN=*.STEP1.DD1

Page 122: JCL - Job Control Language

Special DD Statements

• Use special DD statements to specify private catalogs, private libraries, and data sets for storage dumps and checkpoints

• Some of the special DD statements are JOBLIB, STEPLIB, JCLLIB, SYSOUT, SYSIN, SYSPRINT

Page 123: JCL - Job Control Language

JOBLIB & STEPLIB

• JOBLIB statement:– Identifies a private library that the system is to search for the

program named in each EXEC statement PGM parameter in the job.

– Only if the system does not find the program in the private library, does it search system libraries.

– Syntax //JOBLIB DD parameter [,parameter ]...[comments ]– The JOBLIB DD statement must immediately follow the JOB

statement– There must be no intervening EXEC or other DD statements

between the JOB statement and the JOBLIB statement.

Page 124: JCL - Job Control Language

JOBLIB & STEPLIB(Contd)

– The JOBLIB statement must precede the EXEC statement– If its location is cataloged, it must specify the unit and volume

serial number of device containing the program to be executed– We can concatenate job libraries

• Code a JOBLIB statement• Follow this statement with DD statements that define other

private libraries. Omit a ddname for these subsequent DD statements

– Do not include a JOBLIB DD statement in an in-stream or cataloged procedure.

Page 125: JCL - Job Control Language

JOBLIB & STEPLIB(Contd)

//JOB1 JOB A123,’BHASKAR’

//JOBLIB DD DSN=M1.TEST.LOADLIB,

// DISP=SHR

//STEP1 EXEC PGM=PGM1

//STEP2 EXEC PGM=PGM2 – Here both the programs PGM1 & PGM2 exists in library

M1.TEST.LOADLIB

//JOB2 JOB A124,’ANNA’

//JOBLIB DD DSN=PROGRAM1,

// DISP=SHR,UNIT=333,

// VOL=SER=PACK1 – Here both UNIT and VOL subparameters are included as

PROGRAM1 is uncataloged

Page 126: JCL - Job Control Language

JOBLIB & STEPLIB(Contd)

//L140 JOB (00124,'PURGE PGM'),

// CLASS=N,MSGCLASS=P,TIME=1440,REGION=6M

//JOBLIB DD DSN=IPHP.BT.PGMLIB,DISP=SHR

// DD DSN=IPHP.OL.PGMLIB,DISP=SHR

// DD DSN=SYS5.PROSERV.EXITS,DISP=SHR

// DD DSN=S00P.BT.PGMLIB,DISP=SHR

// DD DSN=S00P.OL.PGMLIB,DISP=SHR

Page 127: JCL - Job Control Language

JOBLIB & STEPLIB(Contd)

• STEPLIB statement:– Create a private library.– Identify a private library that the system is to search for the

program named in the EXEC statement PGM parameter.– If the system does not find the program in the private library,

only then does the system search the system libraries.– Syntax //STEPLIB DD parameter [,parameter ]...[comments ] – Overriding a JOBLIB

• If the system lib is defined in a STEPLIB DD statement then the system will ignore the JOBLIB DD statement for that step.

Page 128: JCL - Job Control Language

JOBLIB & STEPLIB(Contd)• //PAYROLL JOB BAKER,MSGLEVEL=1• //JOBLIB DD DSNAME=LIB5.GROUP4,DISP=(OLD,PASS)• //STEP1 EXEC PROC=SNZ12• //STEP2 EXEC PGM=SNAP1• //STEPLIB DD DSNAME=LIBRARYP,DISP=(OLD,PASS),• // UNIT=335 ,VOLUME=SER=55566• //STEP3 EXEC PGM=A153• //STEP4 EXEC PGM=SNAP11• //STEPLIB DD DSNAME=*.STEP2.STEPLIB,• // DISP=(OLD,KEEP)

– The system searches LIBRARYP for program SNAP10; LIBRARYP is passed to subsequent steps of this job. The STEPLIB DD statement in STEP4 refers to the LIBRARYP library defined in STEP2; the system searches LIBRARYP for SNAP11. Since a JOBLIB DD statement is included, the system searches for programs SNZ12 and A1530 first in LIB5.GROUP4, then in SYS1.LINKLIB.

Page 129: JCL - Job Control Language

JCLLIB• JCLLIB Statement

– JCLLIB is used to identify a private library or a system library from which INCLUDE groups and JCL procedures are to be retrieved.

– The order in which the library names appear on the JCLLIB statement is the order in which they are searched for any JCL procedures (PROCs) and INCLUDE groups referenced by this job.

– Syntax //[name ]JCLLIB ORDER=(library [,library ]...)[comments ]

– The private libraries that you specify on the JCLLIB statement must comply with following rules:

The private library must be cataloged. The private library must be accessible to the job.– JCLLIB statement should be coded after JOB statement and before first

exec statement.– //JCLLIB DD DSN=MMA2.PROCLIB,DISP=SHR

Page 130: JCL - Job Control Language

Special DD Names

• SYSOUT Statement:– Specifies one character output class associated with SYSOUT

dataset– Syntax SYSOUT=class– If SYSOUT=* then output class specified in MSGCLASS

parameter of JOB statement is used– Routes the system output to the class associated with output

device indicated– class can be any alphanumeric character from A – Z, 0 – 9 or *

Page 131: JCL - Job Control Language

Special DD Names(Contd)

• SYSIN DD Statement

– The SYSIN DD statement is used to identify in-stream data sets.

– The data sets are marked by a DD * or a DD DATA parameter.

– Actually, these DD statements can have any DD name and SYSIN can be one of these DD names.

– Syntax:

//SYSIN DD *

or

//SYSIN DD DATA ,DLM=xx

– Subparameter Definition:

In the above syntax, the following subparameters are used:

Page 132: JCL - Job Control Language

Special DD Names(Contd)

• * - indicates data than terminates with the /* Statement.• DATA - indicates the data may contain special characters.• DLM - indicates the two characters in the data that will

terminate the data set – Examples:

//STEPA EXEC PGM=PROGRAM1

//SYSIN DD DATA,DLM=MY

data record 1

data record 2

...

data record n

MY end of data

Page 133: JCL - Job Control Language

Special DD Names(Contd)

• SYSPRINT Statement : – SYSPRINT is job control statement used for defining a

sequential dataset for messages.The dataset can be written into the system output device,a tape volume or a DASD volume.

– The block size for the SYSPRINT data set must be a multiple of 121.

Page 134: JCL - Job Control Language

Special DD Names(Contd)

• SYSUDUMP DD Statement :– Produces a dump of user areas. The dump is formatted, so that

it can be printed directly. – Example

//STEP2 EXEC PGM=A

//SYSUDUMP DD SYSOUT=A

• The SYSUDUMP DD statement specifies that you want the dump routed to system output class A.

Page 135: JCL - Job Control Language

Special DD Names(Contd)

• SYSMDUMP DD Statement :

– Produces a dump of the system areas and the program's address space.

– The dump is unformatted and machine-readable, to be used, it must be printed by the interactive problem control system (IPCS).

– Example 2

//SYSMDUMP DD DSNAME=DUMP,DISP=(NEW,KEEP),

// UNIT=3400-6,VOLUME=SER=147958

• The SYSMDUMP DD statement specifies that the dump is to be stored on a tape. Because the LABEL parameter is not coded, the tape must have IBM standard labels.

Page 136: JCL - Job Control Language

Special DD Names(Contd)

• SYSABEND DD Statement :– Produces a dump of user and system areas; this dump contains

all the areas dumped in a SYSUDUMP.– Example

//STEP1 EXEC PGM=PROGRAM1

//SYSABEND DD DSNAME=DUMP,UNIT=3350,DISP=(,PASS,KEEP),

// VOLUME=SER=1234,SPACE=(TRK,(40,20))

//STEP2 EXEC PGM=PROGRAM2

//SYSABEND DD DSNAME=*.STEP1.SYSABEND,

// DISP=(OLD,DELETE,KEEP)

Page 137: JCL - Job Control Language

Symbolic Parameters

• Symbolic Parameters– Variables used in the PROC statement to substitute default or

supplied values.– Specified with an ‘&’ symbol. They are used to override

parameters in the DD statement. They can be used in in-stream as well as catalogued procedures.

– In a typical situation there may be many programmers who are using the same JCL for opening, reading and writing into data sets. The only difference being the parameters required to access the data sets. In such a situation symbolic parameters are a convenient means of assigning different parameters to commonly used JCL procedures. Symbolic parameters can be used with parameters sub parameters and hard coded values as well.

Page 138: JCL - Job Control Language

Symbolic Parameters (Contd)• Rules for coding symbolic parameters:

– A symbolic parameter can be 1 to 8 alphanumeric or national characters including ampersand. The first character should be ampersand(&) and the second character must be alphabetic or national. The subsequent characters can be alphanumeric or national.

– They must be coded in the operand field only.//NAME OPERATION OPERAND COMMENTS//DD1 DD SYMBOLIC PARAMETER COMMENTS– Value assigned to a symbolic parameter may be overridden by another

provided the redefinition is within the same job. If not overridden the same value will be assigned to it each time it is called.

– There is no restriction on the length of the value assigned to a symbolic parameter but, the assignment must fit on the same line. It cannot continue to the next line.

Page 139: JCL - Job Control Language

Symbolic Parameters (Contd)

– If positional parameters are coded as symbolic parameters then a period should be inserted between them .

– Symbolic parameters cannot be concatenated with other symbolic parameters or other regular parameters to produce a new symbolic parameter. They can be concatenated retaining the value originally assigned to them.

– Concatenated parameters cannot exceed 120 characters.

– If a symbolic parameter is defined then it must be assigned a

value and used within the procedure that defined that parameter.

Page 140: JCL - Job Control Language

Symbolic Parameters (Contd)

• Example:

// MYPROC PROC NAME=‘MY.FILE’, STUFF=‘SHR’

// EXEC PGM=MYPGM

// DD1 DD DSN=&NAME, DISP=&STUFF

// PEND

Page 141: JCL - Job Control Language

SET & INCLUDE Statement

The SET statement is another way of assigning values to Symbolic parameters The values of the Symbolic parameter set by a SET statement will remain in effect until the end of the Job or until changed by another SET statement

Example:- //MYPROC PROC A=ABC B=SYSDA //STEP1 EXEC PGM=IEFBR14 //DD1 DD DSN=A.B.C,DISP=SHR, // VOL=SER=&A, // UNIT=&B //SET1 SET A=ADC,B=SYSDA

Page 142: JCL - Job Control Language

SET & INCLUDE Statement(Contd)

Using the INCLUDE statement you can copy statements from any member of the PDS listed in the JCLLIB statement

For Example:-

//MYJOB JOB

//DD1 JCLLIB ORDER=COMMON.PDS

//STEP1 EXEC PGM=IEFBR14

//INDD DD DSN=A.B.C,DISP=SHR

//INC1 INCLUDE MEMBER=COMMON

Page 143: JCL - Job Control Language

Exercise

1.Write down the JCL code for creating a temporary dataset

and using it in the next step.

2.Write down the JCL code for concatenating three datasets in the

reverse order.

3.Write down the JCL code for concatenating three members of a

dataset and store the result in a new member

4.Use symbolic parameters for overriding JCL parameters and

try the same using SET statement

Page 144: JCL - Job Control Language

MODULE 7

Page 145: JCL - Job Control Language

Instream Procedures

• Instream Procedures

– An in-stream procedure is different in that they are not members of partitioned datasets.

– They are included in input stream of job itself. – Rules for coding IN-STREAM PROC’s

• They must begin with PROC statement• They end with PEND statement• They must be coded immediately after JOB statement &

before first EXEC statement• No more than 15 in-stream procedures can be coded in a

Job.

Page 146: JCL - Job Control Language

Instream Procedures (Contd)

//JOB1 JOB (A123),NAME

//INST1 PROC

//STEP1 EXEC PGM=PROGRAM1

//DD1 DD DSN=FILE1,DISP=SHR

//STEP2 EXEC PGM=PROGRAM1

//DD2 DD DSN=FILE2,DISP=DHR

// PEND

//STEP3 EXEC INST1– The EXEC statements between PROC & PEND statements are

not executed when they are first encountered in the Job Stream, but are saved as a procedure so that they can be executed later. It is executed when the EXEC statement mentioning the IN-STREAM procedure is encountered

Page 147: JCL - Job Control Language

Catalogued Procedures

• Catalogued Procedures– A procedure that you catalog in a library is called a cataloged

procedure. – A cataloged procedure may consist of these JCL statements:

CNTL, command, DD, ENDCNTL, EXEC, IF/THEN/ELSE/ENDIF, INCLUDE, OUTPUT JCL, and SET. Optionally, a cataloged procedure can begin with a PROC statement and end with a PEND statement. If coded, PROC must be the first statement in the procedure.

Page 148: JCL - Job Control Language

Catalogued Procedures(Contd)

– Cataloging a Procedure• The library containing cataloged procedures is a partitioned

data set (PDS) or a partitioned data set extended (PDSE). The system procedure library is SYS1.PROCLIB. The installation can have many more procedure libraries with different names. You can also have procedures in a private library. The name of a cataloged procedure is its member name or alias in the library.

• When a cataloged procedure is called, the calling step receives a copy of the procedure; therefore, a cataloged procedure can be used simultaneously by more than one job.

Page 149: JCL - Job Control Language

Modifying Procedures

• JCL Overrides– It is done whenever there is a need to override one or more

parameters in procedures. For example there is a JCL coded in a procedure, which accesses a specific data set for a specific file name. Instead of having to rewrite the procedure for the new data set name we can easily override this parameter in the DD statement without actually changing the contents of the original procedure. The overrides for a procedure are activated only for the duration of the job in which they exist. The original parameters stay intact.

– Syntax //MYPROC EXEC PROCNAME //PROCSTEP.DDNAME DD MOD_PARAMETER1, // MOD_PARAMETER2

Page 150: JCL - Job Control Language

Modifying Procedures(Contd)

– MYPROC is the stepname in the job that the procedure will be executed from, PROCNAME is the name of the procedure whose parameters will be overridden. PROCSTEP is the stepname in the procedure whose parameters will be overridden. DDNAME is the ddname of the DD statements containing those parameters. The DD operation field may be followed by one or more modified parameters

Page 151: JCL - Job Control Language

Modifying Procedures(Contd)

• Sample JCL for overriding parameters in a procedure :

In the input stream:

//JOB1 JOB ,'H.H. MORRILL'

//ADD1 OUTPUT COPIES=2

//STEPA EXEC PROC=P

//PS1.OUTA OUTPUT CONTROL=DOUBLE,COPIES=5

//PS1.DSB DD OUTPUT=*.ADD1

//PS1.DSE DD *

. (data) .

/*

Page 152: JCL - Job Control Language

Modifying Procedures(Contd)

//PS2.OUTB OUTPUT DEFAULT=YES,DEST=STL

In SYS1.PROCLIB member P:

//PS1 EXEC PGM=R15

//OUTA OUTPUT CONTROL=PROGRAM

//DSA DD SYSOUT=C,OUTPUT=*.OUTA

//DSB DD SYSOUT=D,OUTPUT=*.OUTA

//PS2 EXEC PGM=T48

//DSC DD SYSOUT=A

Page 153: JCL - Job Control Language

Exercise

1.Which of the following can be included in a procedure?

i)JOB statement ii)EXEC statement iii)DD * statement iv)//(delimiter)

2.Which of the following statements in starting a procedure is right?

i)inproc proc ii) proc inproc

Page 154: JCL - Job Control Language

MODULE 8

Page 155: JCL - Job Control Language

KEYWORD PARAMETER=COND

• COND:

– This parameter is used to test the return codes from previous job steps inorder to determine if the present step is to be executed or bypassed.

– Syntax= COND[.procstepname]=(code,relational

operator,[stepname])

– Condition codes can range from 0 to 4095. Common condition codes are:

• 0 no errors or warnings detected

• 4 possible error (warning) detected but execution is possible.

• 8 serious error detected, likely to fail.

• 12 severe error detected, execution impossible.

• 16 terminal error, execution cannot continue

Page 156: JCL - Job Control Language

KEYWORD PARAMETER=COND (Contd)

– If the return code on the JOB statement is satisfied ,the COND parameter coded in the JOB statement will over ride COND parameter coded in the EXEC statement.

– The relational operators that can be used are GT, GE, LT, LE, EQ & NE.

Page 157: JCL - Job Control Language

KEYWORD PARAMETER=COND (Contd)

• Examples– //STEP6 EXEC PGM=DISKUTIL,COND=(4,GT,STEP3)– In this example, if the return code from STEP3 is 0 through 4,

the system bypassesSTEP6. If the return code is greater than 4 the system executes STEP6.

– If COND=EVEN the MVS executes the Jobstep whether or not the previous step has abended.

– COND=ONLY is used for steps that perform recovery processing that should be invoked only in the event of an abend. It helps MVS to execute the Jobstep only if a previous step has abended.

Page 158: JCL - Job Control Language

Common Abend Codes

• ABEND CODE 013 – ERROR ID: IEC141I – DESCRIPTION: The system could not OPEN one of your

datasets properly,generally because of an incorrect DCB parameter (BLKSIZE), or it could not find the specified member of a partitioned dataset.

– CORRECTIVE PROCEDURE: Check the BLKSIZE in the DCB

parameter to insure that it matches the BLKSIZE of the dataset.

Page 159: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE 0C1 – ERROR ID: none – DESCRIPTION: The computer tried to execute an invalid

machine instruction and an operation exception occurred. – CORRECTIVE PROCEDURE: Check the overlaying portion of

your program. Accidentally overlaying part of your program with data (subscript out of range) or bad addresses will produce this error.

Page 160: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE 0C4 – ERROR ID: none – DESCRIPTION: This is a storage protection violation generally

caused by your program trying to STORE data in memory that is not allocated for your use.

– CORRECTIVE PROCEDURE: Make sure any subscripts used do not exceed the boundary specified. Correct all bad addresses in a store-type statement.

Page 161: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE 106 – ERROR ID: none – DESCRIPTION: A system software or disk problem occurred

during the execution of a LINK or LOAD instruction. – CORRECTIVE PROCEDURE: Insure that the load request in the

problem was specified correctly and was not incorrectly modified, then resubmit the job

Page 162: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE 213 – ERROR ID: IEC143I – DESCRIPTION: The system tried to open a DASD data set and

encountered difficulties. This ABEND customarily occurs when the dataset name specified in the DSNAME parameter does not exist.

– CORRECTIVE PROCEDURE: If the dataset is catalogued, make sure the spelling is correct. If the dataset is not catalogued, insure that the proper volume was specified on the VOL=SER parameter

Page 163: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE 222 – ERROR ID: IEF301I – DESCRIPTION: The operator cancelled the job. – CORRECTIVE PROCEDURE: If no message is given in

JESMSG,contact the operator for an explanation. Many times the error is caused by improperly accessing a magnetic tape

Page 164: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE 2F3 – ERROR ID: none – DESCRIPTION: The job was executing when a system failure

occurred – CORRECTIVE PROCEDURE: Resubmit the job if your results

are unsatisfactory and contact Technical Support for a job cost reimbursement

Page 165: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE 322 – ERROR ID: none – DESCRIPTION: Execution of a job, job step, or catalogued

procedure step took longer than the time specified. • If no time was specified in the TIME parameter on your job

card, the job was given the default value of 30 seconds. – CORRECTIVE PROCEDURE: Check for program errors, such

as endless loops. • Correct any such errors and rerun the job. • If no such errors were found, increase the time and rerun the

job.

Page 166: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE 613 – ERROR ID: IEC147I – DESCRIPTION: An input/output (I/O) error occurred during

execution of an OPEN instruction for a dataset on magnetic tape.

• The error resulted in either reading or writing incorrectly a tape label or mark, or positioning a tape volume.

• This error typically occurs in standard label processing for multiple tape files.

– CORRECTIVE PROCEDURE: Rerun the job, since malfunctioning equipment has likely produced the error

Page 167: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE 722 – ERROR ID: none – DESCRIPTION: The system cancelled your job because an

output limit was exceeded for lines being printed or cards being punched.

– CORRECTIVE PROCEDURE: Assuming that the program is correct, increase the appropriate specification by use of a MAIN card.

• IF lines were exceeded (default=5000), the LINES parameter (in thousands) should be increased accordingly.

• If cards were exceeded (default=500), the CARDS parameter (in hundreds) should be increased

Page 168: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE 804 – ERROR ID: none – DESCRIPTION: Your job requested more virtual storage

(memory) than the amount that was available. – CORRECTIVE PROCEDURE: Increase the REGION parameter

on the abending step's EXEC card.• If no region parameter was specified, the default value for

the procedure being executed was assumed

Page 169: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE 806 – ERROR ID: none – DESCRIPTION: This error occurred during execution of a LINK

or LOAD instruction. The system was unable to locate a load module.

– CORRECTIVE PROCEDURES: Make sure the spelling of the load module name or program name is correct or that the appropriate STEPLIB or JOBLIB DD card defining which library the load module resides in is included in you JCL stream.

Page 170: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE 813 – ERROR ID: IEC149I – DESCRIPTION: During execution of an OPEN instruction for a

dataset on magnetic tape, the dataset name on the header label of the tape did not match that specified on the DD card.

– CORRECTIVE PROCEDURE: Insure that the DD statement specifies the correct DSNAME, volume serial number, and label for the tape being accessed.

Page 171: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE 913 – ERROR ID: IEC150I – DESCRIPTION: An OPEN instruction was issued for a RACF-

protected dataset on a DASD volume which your userid was not authorized to access.

• RACF only allows you to access datasets with a high level qualifier the same as your userid or which you have been explicitly given access permission to by the owner of the dataset.

– CORRECTIVE PROCEDURE: Make sure you have the needed access authority to the dataset.

Page 172: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE A13 – ERROR ID: IEC151I – DESCRIPTION: The system tried to OPEN a non-existent

dataset on magnetic tape. The system encountered the end-of-volume tape mark when forward spacing to the file you specified in the LABEL parameter on the DD card.

– CORRECTIVE PROCEDURE: Check the file sequence number and volume serial number from the previous job that created the dataset.

Page 173: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE B37 – ERROR ID: IEC030I – DESCRIPTION: This error results if either one of two situations

occurs.• Firstly, if the DASD volume to which the system has

assigned one of the program's output datasets does not have enough available space to allow the necessary secondary allocations to be made.

• Secondly, this ABEND can occur if the output dataset used all 16 extents of secondary allocations but still required more space.

Page 174: JCL - Job Control Language

Common Abend Codes (Contd)

– CORRECTIVE PROCEDURE: Estimate the space required for the output dataset before rerunning your program.

• If possible, decrease the amount of space requested or if more space is obviously needed increase the primary and or secondary allocations.

Page 175: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE D37 – ERROR ID: IEC031I – DESCRIPTION: An output dataset used all the primary space

and no secondary space was requested. – CORRECTIVE PROCEDURE: Increase the primary allocation or

add a secondary allocation to the space parameter for that output dataset.

Page 176: JCL - Job Control Language

Common Abend Codes (Contd)

• ABEND CODE E37 – ERROR ID: IEC032I – DESCRIPTION: If creating a dataset on tape, all space available

on the volume specified was used and the system attempted to write another record.

• If creating a partitioned dataset on direct access, 16 extents of secondary space were used when the program attempted to write another record.

– CORRECTIVE PROCEDURE: Specify at least one more tape volume or specify more primary space if creating a partitioned dataset.

Page 177: JCL - Job Control Language

Operators

The format of COND parameter is as follows

COND=(value,operator,stepname)

Following are the COND operators

GT greater than

LT less than

EQ equal to

NE not equal to

GE greater than or equal to

LE less than or equal to

Page 178: JCL - Job Control Language

MODULE 9

Page 179: JCL - Job Control Language

GDG-Use of GDGs

• A generation data group (GDG) is a group of functionally and chronologically related data sets.

• They are processed periodically, often by adding a new generation, retaining previous generations, and sometimes discarding the oldest generation.

• Example– An Income Tax report is a generation data group with a new

generation added each year, chronologically and functionally related to previous years. When a new generation is added, the four previous reports must be retained for legal purposes, but the fifth may be discarded.

– Generation data groups are referred to by a name and a relative generation number.

Page 180: JCL - Job Control Language

Define a GDG • For eg; DSN=A1000.TAX.STATE(0) refers to the current Tax report

• DSN=A1000.TAX.STATE(-1) refers to the previous Tax report

• DSN=A1000.TAX.STATE(+1) refers to the new Tax report that is to be created

• Creation of a GDG:– The DEFINE GENERATIONDATAGROUP command creates a

catalog entry for a generation data group (GDG).– A GDG can contain both SMS- and non-SMS-managed

generation data sets.– A generation data set (GDS) cannot be a VSAM data set.

Page 181: JCL - Job Control Language

Define a GDG(Contd)• Example 1: Creation of a GDG & GDS using a model data set. //DEFGDG1 JOB ... //STEP1 EXEC PGM=IDCAMS //GDGMOD DD DSNAME=GDG01,DISP=(,KEEP),

// SPACE=(TRK,(0)),UNIT=DISK,VOL=SER=VSER03,

// DCB=(RECFM=FB,BLKSIZE=2000,LRECL=100) //SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE GENERATIONDATAGROUP - (NAME(GDG01) - EMPTY - NOSCRATCH - LIMIT(255) ) /*

Page 182: JCL - Job Control Language

Define a GDG(Contd)

//STEP1 EXEC PGM=IEFBR14 //* //* VSER03 must be the volume of GDGs catalog volume //* //GDGDD1 DD DSNAME=GDG01(+1),DISP=(NEW,CATLG),

// SPACE=(TRK,(10,5)),VOL=SER=VSER03, // UNIT=DISK //SYSPRINT DD SYSOUT=* //SYSIN DD * /* //Note : GDGMOD DD, which describes the GDG. When the scheduler processes the DD statement, no space is allocated to GDG01.

The model DSCB must exist on the GDGs catalog volume.

Page 183: JCL - Job Control Language

Define a GDG(Contd)• Example 2: Creation of a GDG & GDS in SMS-managed storage.

– In this example, a GDG is defined with access method services commands and then JCL is used to define a GDS into the newly defined GDG. It is assumed that the storage administrator has created a storage class named GRPVOL1 and a data class named ALLOCL01

//DEFGDG JOB ... //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A //SYSIN DD * DEFINE GENERATIONDATAGROUP - (NAME(ICFUCAT1.GDG02) - EMPTY - NOSCRATCH - LIMIT(255)) /*

Page 184: JCL - Job Control Language

Define a GDG(Contd)

//DEFGDS JOB ...

//STEP1 EXEC PGM=IEFBR14

//GDSDD1 DD DSN=ICFUCAT1.GDG02(+1),DISP=(NEW,CATLG),

// SPACE(TRK,(5,2)),STORCLAS=GRPVOL1,DATACLAS=ALLOC01

//SYSPRINT DD SYSOUT=A

//SYSIN DD *

/*

Note: Because the GDG is created in SMS-managed storage and its

catalog,ICFUCAT1, is on an SMS volume, any dependencies on

pattern DSCBs should be removed

Page 185: JCL - Job Control Language

Deleting a GDGDeleting a GDG Catalog Entries and Model DSCBs

Deleting a Model(undoes a define model)

//S1 EXEC PGM=IDCAMS

//SYSPRINT DD SYSOUT=*

//SYSIN DD *

DELETE EDUC.MODEL PURGE

Deletes a GDG entry(undoes an allocated GDG and deletes all GDGs)

//S2 EXEC PGM=IDCAMS

//SYSPRINT DD SYSOUT=*

//SYSIN DD *

DELETE EDUC.GDG.BASE FORCE

Page 186: JCL - Job Control Language

MODULE 10

Page 187: JCL - Job Control Language

JES2 Control Statements• Job Entry Subsystem 2 (JES2) statements :

– supply the information relating to execution of jobs within a decentralized network of computers

– Rules for coding JES2 statements• JES2 statements are optional and immediately follow the job

statement.• JES2 statements have /* in the identifier field instead of //• JES2 statements cannot be placed inside cataloged procedures

• Basic JES2 Statements– Message Statement :The message statement is used to convey

information to the system operator(s). • Syntax /*MESSAGE message where message stands for the

message which is send to system operator• //JOB1 JOB A123,’MARINA’• /*MESSAGE PLEASE CALL #2344 AFTER JOB COMPLETION

Page 188: JCL - Job Control Language

JES2 Control Statements(Contd)

– JOBPARM :specifies processing options for job• Parameters that can be coded with JOBPARM are

– LINECT – used to specify number of lines to be printed on each page of output

– NOLOG – used to specify that no job log is required – COPIES=n – used to specify the number of copies of output

required– BYTES=n – used to set a limit on size of output in thousands

of bytes– PAGES=n – used to set limit on number of pages of output

produced by a job– //JOB3 JOB A125,’DEEPAK’– /*JOBPARM BYTES=1000,PAGES=100,LINECT=40

Page 189: JCL - Job Control Language

JES2 Control Statements(Contd)

– OUTPUT statement: used to route output to specific nodes• Parameters coded with this are

– LINECT=n – used to specify the number of lines of output per pages of output, n can range from 0 to 255

– FORMS=n – used to identify print forms to which output is routed

– COPIES=n – used to specify the number of copies of output, n can range from 1 to 255

– DEST=destination – used to specify destination of output– PRIORITY statement : used to specify the priority of job that is to

be executed• Must precede JOB statement• Priority numbers can range from 0-15

– /*PRIORITY 4– //JOB1 JOB D12,’ANIL’

Page 190: JCL - Job Control Language

JES2 Control Statements(Contd)

– SETUP statement : used to indicate the tape volumes that will be required in execution of a job

• //JOB1 JOB A127,’ANISH’

• /*SETUP 00123,00250

– NOTIFY statement : used to notify a user of completion of a job

• //L065 JOB (00124),‘GEN TEST',

• /*NOTIFY NODE1.USER

– Here NODE1 is node name, USER is ID of user who will be notified of termination of Job L065.

– SIGNON statement : used to start job at a remote location

• /*SIGNON REMOTEnnnPW1 where nnn identifies the remote node and PW1 is the password associated with remote node at which job is to be executed. Passwords are optional.

Page 191: JCL - Job Control Language

JES2 Control Statements(Contd)

– SIGNOFF statement : used to terminate a job that has been started at a remote node

• //JOB4 JOB S123,’ATUL’• /*SIGNOFF

Page 192: JCL - Job Control Language

JES3 Control Statements

JES3 handles resource management and workflow management before and after execution or processing. The main functions of JES3:• 1.Gather Jobs and data from local and remote input devices. • 2.Present Jobs to the system scheduler for execution. • 3.Monitor the execution.• 4.print the output produced by the jobs on local & remote

devices.

• 5.Remove Jobs from the system when complete

Page 193: JCL - Job Control Language

JES3 Control Statements(Contd)

• Some JES3 statements: • //*Main • //*Format

The //*MAIN statement is used to define the JES3 processor requirements for your job.The //*MAIN statement consists of the characters //*MAIN in columns 1 through 7, a blank in column 8, and the necessary parameters anywhere in columns 9 through 72. You should insert the //*MAIN statement for your job after the JCL JOB statement and before the first EXEC statement in the job. //*MAIN parameter{,parameter} ...

Page 194: JCL - Job Control Language

MODULE 11

Page 195: JCL - Job Control Language

DFSORT

• DFSORT is a program used to sort records in ascending or descending

sequence, or to merge from 2 to 16 different files into one file. • The input and output files processed by DFSORT can be sequential

or VSAM files containing fixed-length or variable-length format records.

• DFSORT can be used in two ways – Stand-alone sort/merge

Here, the DFSORT is invoked directly in an EXEC statement– Internal sort/merge

Here, the DFSORT is invoked from a program written in a high- level language.

Page 196: JCL - Job Control Language

DFSORT (Contd)• Sorting Data Sets

– Sorting is arranging records in either ascending or descending order within a file.

– The job control language (JCL) you need to do a sort depends on whether you run DFSORT with the JCL EXEC statement or call DFSORT from a program.

– The JCL statements you need for most jobs are described below.• //jobname JOB Signals the beginning of a job.• //stepname EXEC Signals the beginning of a job step and tells the operating

system what program to run. //stepname EXEC PGM=SORT

Page 197: JCL - Job Control Language

DFSORT (Contd)

• //STEPLIB DD Defines the library containing the DFSORT program

• //SYSOUT DD Defines the output data set for messages.• //SORTIN DD Defines the input data set. • //SORTWKdd DD Defines a work storage data set for a sort.• //SORTOUT DD Defines the output data set. • //SYSIN DD Precedes the DFSORT program control statements.

Page 198: JCL - Job Control Language

DFSORT (Contd)

• Example

//EXAMP JOB A492,PROGRAMMER

//SORT EXEC PGM=SORT

//STEPLIB DD DSN=A492.SM,DISP=SHR

//SYSOUT DD SYSOUT=A

//SORTIN DD DSN=A123456.SORT.SAMPIN,DISP=SHR

//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(1,1))

//SORTOUT DD DSN=A123456.SORT.SAMPOUT,DISP=OLD

//SYSIN DD *

SORT FIELDS=(110,10,A,145,17,A, 1,75,A),FORMAT=CH

/*

Page 199: JCL - Job Control Language

DFSORT (Contd)• Merging Data Sets

– The MERGE control statement combines two or more identically sequenced files (that is, files that have already been sorted according to an identical set of ascending/descending keys) on one or more keys and makes records available in merged order to an output file.

– The JCL needed for a merge is the same as that for a sort, with the following exceptions:

• Do not use the SORTWKdd DD statement• Instead of the SORTIN DD statement, use SORTINnn DD

statements to define the input data sets.• The SORTINnn DD statements name the input data sets,

and tell how many data sets will be merged. • The value nn is a number from 00 to 99, indicating the

number of data sets to be merged.

Page 200: JCL - Job Control Language

DFSORT (Contd)

• Example

//EXAMP JOB A492,PROGRAMMER

//SORT EXEC PGM=SORT

//STEPLIB DD DSN=A492.SM,DISP=SHR

//SYSOUT DD SYSOUT=A

//SORTIN01 DD DSN=A123456.MASTER,DISP=OLD

//SORTIN02 DD DSN=A123456.NEW,DISP=OLD

//SORTOUT DD DSN=A123456.SORT.SAMPOUT,DISP=OLD

//SYSIN DD *

MERGE FIELDS=(110,5,A,1,75,A),FORMAT=CH

/*

Page 201: JCL - Job Control Language

DFSORT (Contd)

• Copying Data Sets– DFSORT can also copy data sets without any sorting or merging

taking place.– COPY can be used with all of the other DFSORT control

statements except SUM.– The JCL for a copy application is the same as for a sort, except

SORTWKdd DD statement should not be used. – The sample JCL shown as an example below will copy a data

set using the OPTION COPY statement

Page 202: JCL - Job Control Language

DFSORT (Contd)

• Example

//EXAMP JOB A492,PROGRAMMER

//SORT EXEC PGM=SORT

//STEPLIB DD DSN=A492.SM,DISP=SHR

//SYSOUT DD SYSOUT=A

//SORTIN DD DSN=A123456.SORT.SAMPIN,DISP=SHR

//SORTOUT DD DSN=A123456.SAMP.SORTOUT,DISP=OLD

//SYSIN DD *

OPTION COPY

/*

SORT FIELDS=COPY or MERGE FIELDS=COPY can be used instead of OPTION COPY to produce the same results.

Page 203: JCL - Job Control Language

DFSORT (Contd)• Parameters used in SORT

– The parameters used in SORT are INREC,OUTREC,INCLUDE, OMIT, STOPAFT, OUTFIL,SUM

• INREC– Reformats records before they are sorted, copied, or merged

• OUTREC– Reformats records after they are sorted, copied, or merged

• INCLUDE– INCLUDE control statement is used to collect the wanted records

• OMIT– OMIT control statement is used to exclude the unwanted records

• STOPAFT– STOPAFT is used to specify the maximum number of records that

should be accepted for sorting or copying.

Page 204: JCL - Job Control Language

DFSORT (Contd)

• SKIPREC– SKIPREC is used to skip a specified number of records at the

beginning of the input file being sorted or copied.• OUTFIL

– OUTFIL is used to create a multiple output dataset and reports from a single pass over the input data set.

• SUM– SUM is used to add the contents of fields whenever two records

with equal control fields are found. DFSORT places the result in one record and deletes the other, reducing the number of records to be sorted or merged.

– Delete records with duplicate control fields by specifying FIELDS=NONE in a SUM statement

Page 205: JCL - Job Control Language

Tape Management System

• TMS Expiration and Retention Dates• TMS selects volumes for deletion based upon the expiration date

supplied via parameter EXPDT or the retention period supplied via JCL parameter RETPD. The value supplied via RETPD is converted to a date. If no EXPDT or RETPD value is supplied, then the TMS will take the default

retention period which is installation specific. • Certain values supplied for EXPDT are TMS codes, rather than true

dates. The only currently valid TMS codes are explained below:• 98000 - Used for external tapes unknown to TMS; used only when

reading a tape created by an outside agency or when writing to a non-NWRDC tape volume

Page 206: JCL - Job Control Language

Tape Management System(Contd)

• 98nnn - Retain for nnn days before scratching• 99000 - CATLG controlled; i.e., when the dataset is uncataloged,

the tape will subsequently be scratched• 99nnn - Retain for nnn cycles before scratching; this should only be

used with datasets with the same name, not with generation data sets

• 99365 - Retain permanently• Other values on the JCL EXPDT or RETPD parameters:• LABEL=RETPD=0 - A temporary data set. If it is for the first file the

volume remains in scratch status after use.• LABEL=EXPDT=yyyy/ddd - Standard MVS expiration date• LABEL=RETPD=dddd - Standard system retention period

Page 207: JCL - Job Control Language

DFSMS

• Data Facility Storage Management Subsystem, commonly called system managed storage or SMS Controls disk data set allocation and management in an MVS environment. The complementary functions of MVS/DFP and other individual products of the Data Facility family, which, together with RACF provide a system-managed, administrator-controlled storage environment.

• Functions : – Eliminates the need to specify a physical volume when allocating

a data set – Support for the new self reorganizing type of partitioned

datasets, PDSEs– SMS data sets are automatically cataloged at creation, which

eliminates problems accompanying uncataloged data sets.


Recommended