Job Control Language Bhargava KC Extension: 52067 E&R Rotunda, II Floor, Cubicle 15 Email: bhargava_sastry@infy.com ER/CORP/CRS/OS02/003-1 4/13/2015 3 JOB CONTROL LANGUAGE For IBM Mainframe System 390 ER/CORP/CRS/OS02/003-1 4/13/2015 4 Pre-requisites Programming Fundamentals. MVS Operating system and its subsystem TSO. Navigating through ISPF. ER/CORP/CRS/OS02/003-1 4/13/2015 5 Evaluation Scheme Quiz : 20 Marks ( Conducted after 2 sessions of Input ) OLE : 80 Marks ER/CORP/CRS/OS02/003-1 4/13/2015 6 References # Title Authors 1. MVS JCL 2. System 370/390 JCL GD Brown 3. IBM Manuals Doug Lowe ER/CORP/CRS/OS02/003-1 Publishers Mike Murarch and Associates 4/13/2015 7 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. ER/CORP/CRS/OS02/003-1 4/13/2015 8 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. ER/CORP/CRS/OS02/003-1 4/13/2015 9 JOB AND A JCL 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. ER/CORP/CRS/OS02/003-1 4/13/2015 10 J JOB C CONTROL ER/CORP/CRS/OS02/003-1 L LANGUAGE 4/13/2015 11 Determine the job Create the JCL JES interprets JCL and passes it to MVS Submit the JOB System Messages User Views and Interprets output ER/CORP/CRS/OS02/003-1 MVS does the work JES collects the output and information about the JOB 4/13/2015 12 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 ER/CORP/CRS/OS02/003-1 4/13/2015 13 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 ER/CORP/CRS/OS02/003-1 4/13/2015 14 Various stages of JCL execution • • • • • • Input Conversion Execution Output Hard copy Purge ER/CORP/CRS/OS02/003-1 4/13/2015 15 Various stages of JCL execution • Input • Conversion • Initiator • Output • Purge JES gives a unique job number Check syntax error & Place it in JES spool Taking the job from the spool and sending it for execution sends the output to printer After job is processed,it is purged ER/CORP/CRS/OS02/003-1 4/13/2015 16 •Stages of Job Processing - INPUT Job entry or input is how jobs are entered into the system. Several methods are : • Local and remote card readers • Via a started procedure • Internal reader • From another system via network job entry ER/CORP/CRS/OS02/003-1 4/13/2015 17 Stages of Job Processing - INPUT MVS INPUT SPOOL JES JCL SYSIN 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 4/13/2015 JES Job Number as part of Input Processing 18 ER/CORP/CRS/OS02/003-1 Stages of Job Processing -CONVERSION MVS JES SPOOL JCL SYSIN PROCLIB PROC • Input to the conversion process consists of the Original JCL and any cataloged procedure referenced by it • Full Syntax checking of the JCL is done at this time • 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 ER/CORP/CRS/OS02/003-1 4/13/2015 19 Stages of Job Processing -CONVERSION JOB INTERPRETER - JES2 PAY JCL INTERPRETER • JES2 gives job to idle initiator • Initiator attaches the interpreter to build control blocks PAY CONTROL BLOCKS JES2 ADDRESS SPACE • Control blocks used to start job in initiator INITIATOR ADDRESS SPACE ER/CORP/CRS/OS02/003-1 4/13/2015 20 Stages of Job Processing -CONVERSION JOB INTERPRETER - JES3 • JES Attaches PAY JCL • Interpreter builds the control blocks in the JES address space INTERPRETER PAY CONTROL BLOCKS JES3 ADDRESS SPACE the interpreter INITIATOR ADDRESS SPACE • JES passes the CONTROL blocks to an idle initiator to start execution. ER/CORP/CRS/OS02/003-1 4/13/2015 21 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 User’s 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. ER/CORP/CRS/OS02/003-1 4/13/2015 22 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 ER/CORP/CRS/OS02/003-1 4/13/2015 23 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. ER/CORP/CRS/OS02/003-1 4/13/2015 24 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 ER/CORP/CRS/OS02/003-1 4/13/2015 25 Stages of Job Processing - HARDCOPY • During this phase, job output characteristics and the output is sent to the physical devices. ER/CORP/CRS/OS02/003-1 4/13/2015 26 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 ER/CORP/CRS/OS02/003-1 4/13/2015 27 JCL PROCESSING INPUT STREAM JES2 / JES3 SPOOL JCL SYSIN SYSOUT PRINTER JES2 / JES3 INITIATOR1 ER/CORP/CRS/OS02/003-1 INITIATOR2 4/13/2015 28 JCL execution JCL INITIATION STEP INITIATION JCL SYSIN SYSOUT ALLOCATION PROGRAM EXECUTION STEP TERMINATION ER/CORP/CRS/OS02/003-1 JOB TERMINATION 4/13/2015 29 QUESTIONS ??? • JCL is used to write an application program ? Yes/No • What are the different stages of JCL processing ? ER/CORP/CRS/OS02/003-1 4/13/2015 30 JCL statements JOB Job identification EXEC Instruction for execution DD Source of data to operate ER/CORP/CRS/OS02/003-1 4/13/2015 31 TYPE OF STATEMENTS • JOB CONTROL STATEMENTS • UTILITY CONTROL STATEMENTS ER/CORP/CRS/OS02/003-1 4/13/2015 32 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 ER/CORP/CRS/OS02/003-1 4/13/2015 33 Basic Format of a JCL : JCL FIELD NAMES 1. 2. 3. 4. Identifier field NAME field OPERATION field PARAMETER field – Positional – Keyword 5. COMMENT field ER/CORP/CRS/OS02/003-1 4/13/2015 34 JCL STATEMENT FORMAT //P123 JOB 1234,AMLAN,CLASS=E JOBSTATEMENT Name Parameters Operation Identifier Comment ER/CORP/CRS/OS02/003-1 4/13/2015 35 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 ( # , @ , $ ) ER/CORP/CRS/OS02/003-1 4/13/2015 36 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 ER/CORP/CRS/OS02/003-1 4/13/2015 37 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 ER/CORP/CRS/OS02/003-1 4/13/2015 38 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. ER/CORP/CRS/OS02/003-1 4/13/2015 39 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. ER/CORP/CRS/OS02/003-1 4/13/2015 40 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 • Don’t forget to update comments ! ER/CORP/CRS/OS02/003-1 4/13/2015 41 JCL statements JOB Job identification EXEC Instruction for execution DD Source of data to operate ER/CORP/CRS/OS02/003-1 4/13/2015 42 JOB STATEMENT ACCT NAME MSGLEVEL MSGCLASS COND USER PASSWORD TIME CLASS NOTIFY TYPRUN PRTY RESTART REGION PERFORM ER/CORP/CRS/OS02/003-1 4/13/2015 43 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. ER/CORP/CRS/OS02/003-1 4/13/2015 44 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. ER/CORP/CRS/OS02/003-1 4/13/2015 45 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. ER/CORP/CRS/OS02/003-1 4/13/2015 46 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) ER/CORP/CRS/OS02/003-1 4/13/2015 47 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. ER/CORP/CRS/OS02/003-1 4/13/2015 48 IMPORTANT JOB PARAMETERS keyword parameters ( NOTIFY ) ex. //INFOSYSA JOB NOTIFY=INFOSYS • NOTIFY notifies you at a time-sharing terminal when the job is completed. ER/CORP/CRS/OS02/003-1 4/13/2015 49 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. 4/13/2015 ER/CORP/CRS/OS02/003-1 50 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. ER/CORP/CRS/OS02/003-1 4/13/2015 51 SOME OTHER keyword JOB PARAMETERS • 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. • 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. ER/CORP/CRS/OS02/003-1 4/13/2015 52 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. ER/CORP/CRS/OS02/003-1 4/13/2015 53 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. ER/CORP/CRS/OS02/003-1 4/13/2015 54 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 ER/CORP/CRS/OS02/003-1 4/13/2015 55 That’s all for DAY 1 ER/CORP/CRS/OS02/003-1 4/13/2015 56