Job Control Language Day 1
Job Control Language Day 1
Day 1
JOB CONTROL LANGUAGE
For IBM Mainframe
System 390/
z/OS
Pre-requisites
Programming Fundamentals.
MVS Operating system and its subsystem TSO.
Navigating through ISPF.
References
# Title Authors Publishers
1. MVS JCL Doug Lowe Mike Murarch and Associates
2. System 370/390 JCL GD Brown
3. IBM Manuals
Objectives of the Course
1. To acquaint participants to the specific nature of Job
Control Language.
2. To illustrate the syntax of JCL.
3. To demonstrate the JCL programs, procedures, Various
Data set allocation mechanisms, IBM Utilities
4. To acquaint the participants regarding the importance of
VSAM, GDGs, and concepts of SMS.
Objectives of the Session
1. To learn about JES as a Sub system and its functions.
2. About JCL syntax in general
3. About Job statement.
4. Some sample examples.
A JOB is the execution of one or more related programs
in sequence. Each Program to be executed by a Job is
Called a Step.
Ex: The first program sorts customer names in a sequence
The second program generates a report .
Job Control Language is a set of control statements that
Provides specifications necessary to process a Job.
JOB AND A JCL
J C L
JOB CONTROL LANGUAGE
Determine
the
job
Create
the
JCL
Submit
the
JOB
JES
interprets
JCL and
passes it
to
MVS
MVS does
the work
User
Views and
Interprets
output
JES
collects
the output
and information
about
the JOB
System
Messages
WHY JCL ???
MVS operating system is designed to
work in the batch processing mode
JCL is a powerful and flexible language
that helps to customize the use of local
and remote resources available to one
or more computers
Difference between batch &
interactive processing
Batch processing
Jobs submitted are
executed at later time
User can not interact
Performance measure
is throughput
Snapshot of output is
used for debugging
Interactive processing
Jobs submitted are
executed immediately
User can interact
Performance measure
is response time
Interactive debugging
Various stages of JCL
execution
Input
Conversion
Execution
Output
Hard copy
Purge
Input JES gives a unique job
number
Conversion Check syntax error & Place
it in JES spool
Initiator Taking the job from the
spool and sending it for execution
Output sends the output to printer
Purge After job is processed,it is
purged
Various stages of JCL execution
Stages of Job Processing - INPUT
Job entry or input is how jobs are entered
into the system.
Local and remote card readers
Via a started procedure
Internal reader
From another system via network job entry
Several methods are :
Stages of Job Processing - INPUT
INPUT
SPOOL
JCL
SYSIN
JES
MVS
During input processing , the job is placed out on spool.
At this point in time, a job consists of :
Any JOB Control Language
Any JOB Entry Control Language (JECL) in the Input Stream
Any data SYSIN in the Input Stream
An entry is initialized in the Jobqueue and the job is assigned a
JES Job Number as part of Input Processing
Stages of Job Processing -CONVERSION
SPOOL
JCL
SYSIN
During conversion the JCL for a job is converted to its internal
form, known as Converter/Interpreter text. All of the jobs that
were marked awaiting conversion in the job Queue are converted
MVS
JES
PROCLIB
PROC
Full Syntax checking of the JCL is done at this time
Input to the conversion process consists of the Original JCL and
any cataloged procedure referenced by it
Stages of Job Processing -CONVERSION
JOB INTERPRETER - JES2
JES2
ADDRESS
SPACE
INITIATOR
ADDRESS
SPACE
PAY
JCL
INTERPRETER
PAY
CONTROL
BLOCKS
JES2 gives job to idle initiator
Initiator attaches the interpreter
to build control blocks
Control blocks used to start job
in initiator
Stages of Job Processing -CONVERSION
JOB INTERPRETER - JES3
JES3
ADDRESS
SPACE
INITIATOR
ADDRESS
SPACE
PAY
JCL
INTERPRETER
PAY
CONTROL
BLOCKS
JES Attaches the interpreter
Interpreter builds the control
blocks in the JES address space
JES passes the CONTROL
blocks to an idle initiator to
start execution.
Stages of Job Processing - EXECUTION
1. Initiator Invokes a program called Interpreter which goes thru the
Job Input and creates a series of Control blocks in Scheduler
Work Area , a part of Address space Private Area.
2. It then invokes Allocation routines that decides on what resources
the Job step needs in terms of Units , Volumes and Data sets.
3. Initiator then builds a User region where the Users program
is loaded , control is transferred to Program and the program gets
executed.
4. When the Program execution is over Initiator invokes deallocation
routines to release all the resources that are used.
Stages of Job Processing - EXECUTION
INITIATOR is responsible for the EXECUTION step of the Job
Initiator Eligible Job classes
1 A
2 B,C,D,H,L,T
3 B,C,D,H,L,T
4 B,C
5 B,C
6 C
Stages of Job Processing - EXECUTION
JES selects a job for execution , based upon job CLASS
and job selection PRTY
ex. //PAY JOB PRTY=8,CLASS=A
Allocation ( of data sets and devices necessary for execution )
is performed.
If the program reads any SYSIN data, a copy will be read
from Spool and presented to the program.
If the program creates any SYSOUT data, it will be
Spooled, rather than sent directly to an output device.
Stages of Job Processing - OUTPUT
After the job has terminated, the output created is
analysed and grouped according to SYSOUT
class and output characteristics
Entries are then created in the Job Output Table
(JOT) to reflect these various groupings
Stages of Job Processing - HARDCOPY
During this phase, job output characteristics and
the output is sent to the physical devices.
Stages of Job Processing - PURGE
During Purge processing, all of the resources allocated
to the job in earlier phases can be freed for re-use.
These include :
Spool Space
Jobqueue space
JES job number
JCL PROCESSING
JCL
SYSIN
SYSOUT
SPOOL
JES2 /
JES3
JES2 /
JES3
INITIATOR1
INITIATOR2
PRINTER
INPUT
STREAM
JCL execution
JCL INITIATION
STEP INITIATION
ALLOCATION
PROGRAM EXECUTION
STEP TERMINATION
JOB TERMINATION
JCL
SYSIN
SYSOUT
QUESTIONS ???
JCL is used to write an application program ?
Yes/No
What are the different stages of JCL processing ?
JCL statements
JOB Job identification
EXEC Instruction for execution
DD Source of data to operate
TYPE OF STATEMENTS
JOB CONTROL STATEMENTS
UTILITY CONTROL STATEMENTS
Basic Format of a JCL :
JCL statements are coded in 80 byte
records -
Only 72 of the 80 chars available to code JCL -
last eight columns of each record reserved for an
optional sequence number
Basic Format of a JCL :
JCL FIELD NAMES
1. Identifier field
2. NAME field
3. OPERATION field
4. PARAMETER field
Positional
Keyword
5. COMMENT field
JCL STATEMENT FORMAT
//P123 JOB 1234,AMLAN,CLASS=E
JOBSTATEMENT
Name Parameters
Operation
Identifier Comment
Basic Format of a JCL : ...
Identifier [Name] [Operation] [Parameters]
[Comments]
Identifier
Two slashes ( // ) starting in col 1.
Exceptions -
1) For a delimiter statement, /* starting in col 1
2) For a comment statement , //* starting at col 1
Name
One to eight alphanumeric , starting with a letter
char. Starts from col 3. Valid chars A-Z,0-9 or
national characters ( # , @ , $ )
Basic Format of a JCL : ...
Operation
A valid operation code, such as JOB, EXEC or
DD. Must be preceded and followed by a space.
Parameters
One or more parameters depending on the
operation. Individual parameters are separated
from one another by commas, no intervening
spaces.
Comments
comments may follow parameters, preceded by
one space and not extending beyond col 71
JCL parameters :
JCL parameters :
1) Positional parameters -
Must occur at a specific position within the
parameters field
account for a missing parameter by a comma
2) Keyword parameters -
UNIT=SYSDA ( no spaces )
UNIT is a keyword parameter of value SYSDA
Keyword parameters to come only after all positional
parameters have been coded, order of keyword
parameters immaterial
JCL subparameters :
DCB=(DSORG=PO,LRECL=80,
BLKSIZE=6160)
DCB=(DSORG=PO)
DCB=DSORG=PO
DISP=(,DELETE)
Comma place holders are required only for missing
positional subparameters.
Continuing JCL statements:
...
Break the parameter field with the comma
that follows a parameter or sub-parameter
Slashes in column 1 & 2 of following line
Next parameter or sub parameter starting
anywhere between columns 4 - 16
//SYSUT2 DD DSNAME=...,DISP=...,
// UNIT=SYSDA,VOL=SER=MPS800,
// SPACE=(CYL,(10,5,2)),
// DCB=DSORG=PO
( X ) Avoid continuing comments from line to line.
Guidelines :
JCL cryptic :
Code just one or two parameters per line
align the operation and parameters fields of each
statement
begin job with a group of comment statements that
document a job thoroughly
Name, date of coding, what each job step does, any
special processing requirements
Dont forget to update comments !
JCL statements
JOB Job identification
EXEC Instruction for execution
DD Source of data to operate
JOB STATEMENT
ACCT CLASS
NAME NOTIFY
MSGLEVEL TYPRUN
MSGCLASS PRTY
COND RESTART
USER REGION
PASSWORD PERFORM
TIME
IMPORTANT JOB PARAMETERS
positional parameters
( a/c inf ),name
ex. //INFOSYSA JOB (A123),AMLAN
All these parameters are optional as far as JCL is concerned,
they are probably required by your installation.
IMPORTANT JOB PARAMETERS
keyword parameters
( CLASS )
ex. //INFOSYSA JOB CLASS=A
CLASS specifies the job class that is the nature of the job.
Installation will specify which of the 36 possible classes to use
which is from A to Z and 0 to 9 .
Installation establishes a default class that is in effect if CLASS
is omitted.
IMPORTANT JOB PARAMETERS
keyword parameters
( MSGCLASS )
ex. //INFOSYSA JOB MSGCLASS=A
MSGCLASS specifies the job scheduler message output class.
Job scheduler messages include all messages not printed by the
job steps being executed but the JCL messages and system messages
Installation establishes a default class that is in effect if CLASS
is omitted.
IMPORTANT JOB PARAMETERS
keyword parameters
( MSGLEVEL )
ex. //INFOSYSA JOB MSGLEVEL=(1,1)
MSGLEVEL(jcl,allocations) specifies the printing of JCL
statements and allocation messages.
ex. MSGLEVEL(0,1) will print only JOB statement, and
all the allocation,JES,SMS and operator messages
By default it is MSGLEVEL(1,1)
keyword parameters
( MSGLEVEL )
MSGLEVEL=(X,Y)
Where X is 0 thru 2 , Y is 0 thru 1
X = 0 , Lists Job statements only.
X = 1 , Lists all User JCL + All catalogued procedures.
X = 2 , Lists all User JCL but no catalogued procedures.
Y = 0 , No Initiator/terminator messages to be listed.
Y = 1 , All initiator/terminator messages to be listed.
IMPORTANT JOB PARAMETERS
keyword parameters
( NOTIFY )
ex. //INFOSYSA JOB NOTIFY=INFOSYS
NOTIFY notifies you at a time-sharing terminal when the job is
completed.
IMPORTANT JOB PARAMETERS
keyword parameters
( TYPRUN )
ex. //INFOSYSA JOB TYPRUN=SCAN
TYPRUN checks the JCL and holds the job in the input queue.
TYPRUN = SCAN checks the JCL for syntax errors and suppresses execution
of the job
TYPRUN = HOLD holds the JCL in the input queue for later execution.It is held
until the operator releases it.
TYPRUN = JCLHOLD(JES2 only) similar to HOLD but the difference is it is
checked while it is not with the HOLD option.
TYPRUN = COPY(JES2 only) lists or duplicates the lines placed in the JOB
statement to the class assigned in the MSGCLASS parameter and suppresses
execution.
SOME OTHER keyword JOB PARAMETERS
PRTY=priority : is related to the CLASS parameter. It assigns
priority to jobs which belong to the same class.priority numbers
range from (0-14) or (0-15) depending on installations.
TIME=(min,sec) : signifies how much time the JOB must take to
run.
RESTART=STEP3 :Forces the JOB execution to start from STEP3.
SOME OTHER keyword JOB PARAMETERS
REGION=96K :To override the default amount of workspace
assigned for the job.
COND=(4,LT) :Permits the execution of a steps to depend on the
return code from the previous steps.Will be dealt in detail in Day2.
ADDRSPC=REAL : It is used to specify whether the program is
to use REAL or VIRTual ADDRess SPaCe. Default is Virtual. If
Real is coded then the REGION parameter is also to be coded.
Errors
JCL syntax errors.
JOB will not be executed
JCL allocation errors.
JES2-subsequent steps will not get executed.
JES3-detects errors in the beginning.
Abend Failures
An ABEND failure occurs under the following
conditions:
A program while executing, attempts to perform an
instruction or operation which the system recognizes
as being impossible or unacceptable.
Causes of Abend
Failures
Logic error
JCL error
Resource unavailability
Exceeding limits (Time or Space on DASD)
Hardware Malfunction
User ABENDS
Operator intervention
Operating System failure
Thats all for
DAY
1