0% found this document useful (0 votes)
5 views

JCL Ibm

Uploaded by

Ederson Monte
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

JCL Ibm

Uploaded by

Ederson Monte
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 69

Welcome to

Welcome to JCL

IBM Learning Services


Unit Objectives

At the end of this unit you should be able to:

Explain the JES2 Job Processing Phases in detail


Describe the basic rules for coding JCL
Code JOB/EXEC/DD statements
Submit a job and display its output
Define the term utility
Name and explain the different kinds of utilities
Describe the function and use of the following
utilities:
IEFBR14
IEBCOPY
IEBGENER
IDCAMS
Describe the function and use of DFSORT
Objectives

Explain the concept of a procedure


Distinguish the different procedure types
List the advantages of procedures
Code and use a procedure
Override procedure statements
Name the standard procedure search order
Specify private procedure libraries
Describe the concept of Symbolic Variables
Explain the use of INCLUDE Groups
JES2 - Job Processing Phases

JCL Input
SPOOL

PROCLIB Conversion
In-Stream Data
Execution Printout

Output Print

Purge
JES3 - Job Processing Phases

JCL Input
SPOOL

PROCLIB Conversion

Resource Allocation
In-Stream Data
Execution Printout

Output Print

Purge
Job Input Phase

JCL
Job Queue
Job Class
10 T
121 Z
854 B
1096 A JES2
. .
. .
. .

SPOOL
JCL
DATA
Job Conversion Phase

PROCLIB

CONVERSION

SPOOL
JCL SPOOL
DATA Internal Text
Job Execution Phase
Job Queue
Job Class
10 T
121 Z
854 B
JES2
1096 A
. .
. .
. .
Request

INITIATOR INITIATOR INITIATOR .... INITIATOR


ADDRESS 1 2 3 n
SPACES
PGM

SPOOL
Job Output and Purge Phases

BEFORE
SPOOL
JCL
DATA
Results
JES2

Message
SPOOL
JCL
DATA
Results AFTER
JCL History

******* ***** Top of Data ************


000100 //AUES100A JOB (AUES100),'REXX',
000200 // MSGCLASS=T,CLASS=L,NOTIFY=AUES100
000300 //** * * * * * * * * * * * * * * * * * *
000400 //** DELETE DATASET
000500 //** * * * * * * * * *
//... DD ... 000600 //STEP1 EXEC PGM=IDCAMS
000700 //SYSPRINT DD SYSOUT=*
000800 //SYSIN DD *
//... DD ... 000900 DELETE AUES100.OUTPUT.DATA
001000 //** * * * * * * * * * * * * * * * * * *
001100 //** ALLOCATE AND COPY INTO DATASET
//... EXEC ... 001200 //** * * * * * * * * *
001300 //STEP2 EXEC PGM=IEBGENER
001400 //SYSPRINT DD SYSOUT=*
001500 //SYSUT1 DD
//... JOB ... DSN=AUES100.INPUT.DATA,DISP=OLD
001600 //SYSUT2 DD DSN=AUES100.OUTPUT.DATA,
001700 //
DISP=(NEW,CATLG),LIKE=AUES100.INPUT.DATA
001800 //SYSIN DD DUMMY
****** *****Bottom of Data ***********
General Layout of a Job
******* ***** Top of Data ************
JOB 000100 //AUES100A JOB (AUES100),'REXX',
000200 // MSGCLASS=T,CLASS=L,NOTIFY=AUES100
000300 //** * * * * * * * * * * * * * * * * * *
000400 //** DELETE DATASET
000500 //** * * * * * * * * *
JOBSTEP 000600 //STEP1 EXEC PGM=IDCAMS
000700 //SYSPRINT DD SYSOUT=*
000800 //SYSIN DD *
000900 DELETE AUES100.OUTPUT.DATA
001000 //** * * * * * * * * * * * * * * * * * *
001100 //** ALLOCATE AND COPY INTO DATASET
JOBSTEP 001200 //** * * * * * * * * *
001300 //STEP2 EXEC PGM=IEBGENER
001400 //SYSPRINT DD SYSOUT=*
001500 //SYSUT1 DD DSN=AUES100.INPUT.DATA,DISP=OLD
001600 //SYSUT2 DD DSN=AUES100.OUTPUT.DATA,
001700 // DISP=(NEW,CATLG),LIKE=AUES100.INPUT.DATA
001800 //SYSIN DD DUMMY
****** *****Bottom of Data ***********
General Layout of a JCL Statement

****** ************************ Top of Data **************************


=COLS>----+----1----+----2----+----3----+----4----+----5----+----6----+----7
000100 //NAME OPERATION OPERANDS COMMENT
000200
000300
000400 //INPUT DD DSN=AUES100.TEST.DATA,DISP=SHR CONTAINS DATA TO BE TESTED
000500
000600
The Identifier Field

****** ********************************************
000100 //... Identifies a JCL Statement
000200
000300 //*... Identifies a Comment or JES3 Control
000400 Statement
000500 /*...
000600 Identifies a Delimiter or JES2 Control
Statement
The Name Field

000100 //AUES100A JOB (AUES100),'REXX',


000200 // MSGCLASS=T,CLASS=L,NOTIFY=AUES100
000300 //** * * * * * * * * * * * * * * * * * * * * * * * * *
000400 //** EXECUTE TSO-COMMANDS IN BACKGROUND
000500 //** * * * * * * * * * * * * * * * * * * * * * * * * *
000600 //STEP1 EXEC PGM=IKJEFT01
000700 //SYSEXEC DD DUMMY
000800 //SYSTSPRT DD SYSOUT=*
000900 //SYSTSIN DD *
001000 LISTDS TSOE.CNTL
001100 /*
The Operation Field

000100 //AUES100A JOB(AUES100),'REXX',


000200 // MSGCLASS=T,CLASS=L,NOTIFY=AUES100
000300 //** * * * * * * * * * * * * * * * * * * * * * * * * *
000400 //** EXECUTE TSO-COMMANDS IN BACKGROUND
000500 //** * * * * * * * * * * * * * * * * * * * * * * * * *
000600 //STEP1 EXEC PGM=IKJEFT01
000700 //SYSEXEC DD DUMMY
000800 //SYSTSPRT DD SYSOUT=*
000900 //SYSTSIN DD *
001000 LISTDS TSOE.CNTL
001100 /*
The Parameter Field

000100 //AUES100A JOB (AUES100),'REXX',


000200 // MSGCLASS=T,CLASS=L,NOTIFY=AUES100
000300 //** * * * * * * * * * * * * * * * * * * * * * * * * *
000400 //** EXECUTE TSO-COMMANDS IN BACKGROUND
000500 //** * * * * * * * * * * * * * * * * * * * * * * * * *
000600 //STEP1 EXEC PGM=IKJEFT01
000700 //SYSEXEC DD DUMMY
000800 //SYSTSPRT DD SYSOUT=*
000900 //SYSTSIN DD *
001000 LISTDS TSOE.CNTL
001100 /*
Positional Parameters

Examples:

JCL Statement Syntax:


//name OPERATION P1,P2,P3,K1=n,K2=n

Omitting a Positional Parameter:


//name OPERATION P1,,P3,K1=4,K2=9

Omitting the last Positional Parameter:


//name OPERATION P1,P2,K1=4,K2=9

Omitting the leading Positional Parameter:


//name OPERATION ,,P3,K2=9

Omitting all Positional Parameters:


//name OPERATION K1=4,K2=9
Keyword Parameters

Examples:

Statement Syntax:
//name OPERATION P1,P2,P3,K1=n,K2=n

Free Flow:
//name OPERATION P1,,P3,K2=9,K1=4

Omitting a Keyword Parameter:


//name OPERATION P1,,P3,K2=9
Comment Field

000100 //AUES100A JOB (AUES100),'REXX',


000200 // MSGCLASS=T,CLASS=L,NOTIFY=AUES100
000300 //** * * * * * * * * * * * * * * * * * * * * * * * * *
000400 //** EXECUTE TSO-COMMANDS IN BACKGROUND
000500 //** * * * * * * * * * * * * * * * * * * * * * * * * *
000600 //STEP1 EXEC PGM=IKJEFT01 STARTS TSO IN BACKGROUND
000700 //SYSEXEC DD DUMMY
000800 //SYSTSPRT DD SYSOUT=*
000900 //SYSTSIN DD * TSO COMMANDS TO BE EXECUTED in BATCH
001000 LISTDS TSOE.CNTL
001100 /*
Statement Continuation

****** ********************************************
=COLS> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
000100 //AUES100A JOB (AUES100),
000200 // 'REXX',
000300 // MSGCLASS=T,
000400 // CLASS=L,
000500 // NOTIFY=AUES100
000600 //STEP1 EXEC PGM=CHECK,PARM='THIS IS A VERY LONG PARAMETER LIST IN
000700 // APOSTROPHES, CONTINUED IN COLUMN 16'
000800 //DATA DD DSN=AUES100.TEST.DATA,DISP=SHR THIS IS A CONFUSING METHOD OF C
00900 // CONTINUING A COMMENT, BETTER TO START A NEW COMMENT STATEMENT
Three Major Types of JCL Statements

//... JOB ...


//... EXEC ...
//... DD ...
...
The JOB Statement

//jobname JOB pos-parms [,keyw-parms]

Positional Parameter: Keyword Parameter:


Accounting Information CLASS
Programmer's Name COND
MSGCLASS
MSGLEVEL
NOTIFY
PASSWORD
PRTY
REGION
RESTART
SCHENV
USER
And so forth
Examples of JOB Statements

//AUES100X JOB 1249,SMITH,CLASS=M,MSGCLASS=Q,


// NOTIFY=AUES100

//TSOFS33X JOB 3ES10G0000012,CLASS=A,MSGLEVEL=(1,1),


// NOTIFY=TSOFS33,MSGCLASS=V

//EXMP1 JOB ,HUGO,MSGCLASS=F,MSGLEVEL=(2,0)

//JOB1 JOB 1511,BYRD,CLASS=T,MSGCLASS=A,


// MSGLEVEL=(2,0),NOTIFY=BYRD,
// PASSWORD=ABCDE

//WORK JOB ,PORTER,RESTART=(PROCESS,CHKPT3)


The EXEC Statement

//stepname EXEC pos-parms [keyw-parms]

Positional Parameter: Keyword Parameter:


PGM ACCT
procedure name | PROC COND
PARM
REGION
TIME
etc.
Examples of EXEC Statements

//STEP2 EXEC PGM=DFSORT,ACCT=(SALES)

//STEP5 EXEC JP5,COND=(4,GT,STEP4)

//TESTA EXEC PLIXCLG,PARM.PLI='NOOBJ',


// PARM.LKED='LIST,LET,NODECK'

//STP13 EXEC PGM=PAYROLL,TIME=(12,15),


// REGION=0M
The DD Statement

//ddname DD pos-parms [keyw-parms]

Positional Parameter: Keyword Parameter:


* | DATA (SMS-only)
DCB AVGREC
DUMMY DDNAME DATACLAS
DYNAM DISP LIKE
DSNAME MGMTCLAS
DSNTYPE RECORG
LRECL REFDD
RECFM STORCLAS
RETPD etc.
SPACE
SYSOUT
UNIT
VOLUME
etc.
Examples of DD Statements (1 of 2)
//INPUT DD DSN=AUES100.TEST.DATA,DISP=OLD

//DCBINFO DD DSN=AUES100.TEST.RESULTS,
// DISP=(NEW,CATLG),
// UNIT=SYSDA,SPACE=(TRK,(1,1)),
// LRECL=80,RECFM=FB,BLKSIZE=0

//EXPDT DD DSN=AUES100.BACKUP.COPY,
// DISP=(NEW,CATLG),
// DATACLAS=DCLAS02,
// LRECL=256,EXPDT=2002/180

//LIKE DD DSN=AUES100.LIKE.TEST.RESULTS,
// DISP=(NEW,DELETE,DELETE),
// LIKE=AUES100.TEST.RESULTS,
// SPACE=(4096,(10,2)),AVGREC=K
Examples of DD Statements (2 of 2)

//CONCAT DD DSN=AUES100.TEST.LIB1,DISP=SHR
// DD DSN=AUES100.TEST.LIB2,DISP=SHR

//NULLIFY DD DUMMY,DISP=(NEW,CATLG,DELETE),
// SPACE=(4096,(10,2)),AVGREC=K

//SPOOL DD SYSOUT=T
In-stream Data (1 of 2)

000100 //MYJOB JOB...


000200 //STEP1 EXEC PGM=ANYPGM
000300 //OUTPUT DD DSN=...
Indicates begin of
000400 //INPUT DD * in-stream data
000500
000600 Instream Data
000700
000800 /* Explicit delimiter of
000900 // on next statement instream data
Implicit delimiter of
in-stream data
In-stream Data (2 of 2)
000100 //MYJOB JOB...
000200 //STEP1 EXEC PGM=ANYPGM
000300 //OUTPUT DD DSN=...
000400 //INPUT DD DATA Indicates beginning
of in-stream data
000500 that contains // in
000600 // In-stream Data columns 1 and 2
000700 //
000800 /* Explicit delimiter of
000900 in-stream data

000100 //MYJOB JOB...


000200 //STEP1 EXEC PGM=ANYPGM
000300 //OUTPUT DD DSN=...
Indicates beginning
000400 //INPUT DD DATA,DLM=$$ of in-stream data
000500 that contains // and
000600 /* In-stream Data /* in columns 1 and 2
000700 //
000800 $$ Selected delimiter of
000900 in-stream data
The IF/THEN/ELSE/ENDIF Statements

//name IF (expression) THEN [comment]


JCL Statement(s)
//name ELSE [comment]
JCL Statement(s)
//name ENDIF [comment]
Keywords, Operators of IF/THEN/ELSE/ENDIF

Keywords Comparison Operators


RC GT | > Greater Than
ABEND LT | < Less Than
NG | > Not Greater Than
ABEND
NL | < Not Less Than
ABENDCC
EQ | = Equals
RUN Not Equals
RUN NE | =
Greater Than or Equal To
GE | >=
Less Than or Equal To
LE | <=

NOT Logical Operators


AND | &
Operator OR | |
NOT |
IF/THEN/ELSE/ENDIF Example

//S1 EXEC PGM=MERGE


//TEST1 IF S1.RC=0 THEN [comment]
//S2 EXEC PGM=PROCESS
//TEST2 IF S2.RC<=8 THEN [comment]
//S3 EXEC PGM=PRINT
//TEST2 ELSE [comment]
//S4 EXEC PGM=CLEANUP
//TEST2 ENDIF [comment]
//TEST1 ENDIF [comment]
LAB - Checkpoint

For Q6 and Q7, note


the difference between
EMEA and USA
Submit a Job - EMEA Version
TSO Command Line
READY
submit 'aues100.tsoe.cntl(iefbr14)'
JOB AUES100A(JOB04970) SUBMITTED
READY

ISPF/PDF Editor
File Edit Confirm Menu Utilities Compilers Test Help
Command ===> submit Scroll
===>
EDIT AUES100.TSOE.CNTL(AMS2) - 01.00
****** *************************** Top of Data
*****************************
000001 //AUES100A JOB (AUES100),
000002 // CLASS=L,
000003 // MSGLEVEL=(1,1),
000004 // NOTIFY=AUES100,
000005 // MSGCLASS=T
000006 //STEP1 EXEC PGM=IDCAMS
000007 //SYSPRINT DD SYSOUT=*
000008 //SYSIN DD *
000009 DELETE AUES100.RRDS PURGE

F1=HELP F2=SPLIT F3=END F4=RETURN F5=IFIND F6=BOOK


F7=UP F8=DOWN F9=SWAP F10=LEFT F11=RIGHT F12=RETRIEVE
Submit a Job - Learning Services Version
TSO Command Line
READY
submit 'tsofs20.tsoe.cntl(iefbr14)'
JOB TSOFS20A(JOB04970) SUBMITTED
READY

ISPF/PDF Editor
File Edit Confirm Menu Utilities Compilers Test Help
Command ===> submit Scroll ===>
EDIT TSOFS20.TSOE.CNTL(AMS2) - 01.00
****** *************************** Top of Data *****************************
000001 //TSOFS20A JOB 3ES10G10000012,
000002 // CLASS=A,
000003 // MSGLEVEL=(1,1),
000004 // NOTIFY=TSOFS20,
000005 // MSGCLASS=Q
000006 //STEP1 EXEC PGM=IDCAMS
000007 //SYSPRINT DD SYSOUT=*
000008 //SYSIN DD *
000009 DELETE TSOFS20.RRDS PURGE

F1=HELP F2=SPLIT F3=END F4=RETURN F5=IFIND F6=BOOK


F7=UP F8=DOWN F9=SWAP F10=LEFT F11=RIGHT F12=RETRIEVE
ISPF/PDF Option 3.8 - Outlist Utility
Menu Utilities Help

Option ===>
Outlist Utility

L List job names/id(s) via the TSO STATUS command


D Delete job output from SYSOUT hold queue
P Print job output and delete from SYSOUT hold queue
R Requeue job output to a new output class
blank Display job output

For Job to be selected:


Jobname . .
Class . . . USE FOR
JobID . . . JES3 ONLY
For Job to be requeued:
New Output class . .

For Job to be printed:


Printer Carriage Control . . (A for ANSI )
(M for machine )
(Blank for none)

F1=HELP F2=SPLIT F3=END F4=RETURN F5=IFIND F6=BOOK


F7=UP F8=DOWN F9=SWAP F10=LEFT F11=RIGHT F12=RETRIEVE
Displaying the Jobnames and JobIDs
Outlist Utility
Menu Utilities Help

Option ===> L
Outlist Utility

L List job names/id(s) via the TSO STATUS command


D Delete job output from SYSOUT hold queue
P Print job output and delete from SYSOUT hold queue
R Requeue job output to a new output class
blank Display job output

For Job to be selected:


USE FOR
JES3 ONLY

F1=HELP F2=SPLIT F3=END F4=RETURN F5=IFIND F6=BOOK


F7=UP F8=DOWN F9=SWAP F10=LEFT F11=RIGHT F12=RETRIEVE

Listing the job names


JOB AUES100A(JOB07025) ON OUTPUT QUEUE
JOB AUES100A(JOB07033) ON OUTPUT QUEUE
***
Display Job Output with PDF Option 3.8
Menu Utilities Compilers Help
Command ===> Scroll ===> PAGE
BROWSE AUES100.SPF105.OUTLIST Line 00000000 Col 001 080
********************************* Top of Data **********************************
1 J E S 2 J O B L O G -- S Y S T E M S Y S 1 -- N O D
0
19:02:37 JOB07033 ---- TUESDAY, 06 NOVEMBER 2000 ----
19.02.37 JOB07033 IRR010I USERID AUES100 IS ASSIGNED TO THIS JOB.
19.02.37 JOB07033 ICH70001I AUES100 LAST ACCESS AT 18:57:21 ON TUESDAY, MAY 6
19.02.37 JOB07033 $HASP373 AUES100A STARTED - INIT 5 - CLASS B - SYS SYS1
19.02.37 JOB07033 IEF403I AUES100A - STARTED - TIME=19.02.37
19.02.38 JOB07033 - --TIMINGS (MINS.)-
19.02.38 JOB07033 -JOBNAME STEPNAME PROCSTEP RC EXCP CPU SRB CLOC
19.02.38 JOB07033 -AUES100A STEP1 00 19 .00 .00 .
19.02.38 JOB07033 IEF404I AUES10ZA - ENDED - TIME=19.02.38
19.02.38 JOB07033 -AUES100A ENDED. NAME-AUES100 TOTAL CPU TIME=
19.02.38 JOB07033 $HASP395 AUES100A ENDED
0------ JES2 JOB STATISTICS ------
- 06 NOVEMBER 2000 JOB EXECUTION DATE
- 14 CARDS READ
- 50 SYSOUT PRINT RECORDS
- 0 SYSOUT PUNCH RECORDS
- 3 SYSOUT SPOOL KBYTES
- 0.01 MINUTES EXECUTION TIME
1 //AUES100A JOB (5820),'AUES100',MSGCLASS=X,MSGLEVEL=(1,1),
// NOTIFY=AUES100,CLASS=B,REGION=6M
//* SUBMITTED BY AUES100 AT 19:02:36 ON 00.126 FROM CVCPG010 ON SYS1
//********************************************************************
//* JOB SUBMITTED FROM AUES100.ES10.CNTL(LAB5#21) ***
//* DOC: ALLOCATE AUES100.ES10.PROC AND COPY ENTIRE DATA SET ***
//* AUES100.ES10.PROC. ***
F1=HELP F2=SPLIT F3=END F4=RETURN F5=IFIND F6=BOOK
F7=UP F8=DOWN F9=SWAP F10=LEFT F11=RIGHT F12=RETRIEVE
System Display and Search Facility (SDSF)
Display Filter View Print Options Help
-------------------------------------------------------------------------------
------------------------- SDSF PRIMARY OPTION MENU --------------------------
COMMAND INPUT ===> SCROLL ===> PAGE
Type an option or command and press Enter.

LOG - Display the system log


DA - Display active users in the sysplex
I - Display jobs in the JES2 input queue
O - Display jobs in the JES2 output queue
H - Display jobs in the JES2 held output queue
ST - Display status of jobs in the JES2 queues
PR - Display JES2 printers on this system
INIT - Display JES2 initiators on this system
MAS - Display JES2 members in the MAS
LINE - Display JES2 lines on this system
NODE - Display JES2 nodes on this system
SO - Display JES2 spool offload for this system
ULOG - Display user session log

TUTOR - Short course on SDSF (ISPF only)


END - Exit SDSF

F1=HELP F2=SPLIT F3=END F4=RETURN F5=IFIND F6=BOOK


F7=UP F8=DOWN F9=SWAP F10=LEFT F11=RIGHT F12=RETRIEVE
Display the JES2 Held Output Queue with SDSF
Display Filter View Print Options Help
-------------------------------------------------------------------------------
SDSF HELD OUTPUT DISPLAY ALL CLASSES LINES 403 LINE 1-3 (3)
NP JOBNAME JOBID OWNER PRTY C ODISP DEST TOT-REC TOT-
AUES100A JOB07025 AUES100 128 X HOLD LOCAL 45
AUES100A JOB07033 AUES100 128 X HOLD LOCAL 68
AUES100 TSU07032 AUES100 128 T HOLD LOCAL 290

COMMAND INPUT ===> SCROLL ===> PAGE


F1=HELP F2=SPLIT F3=END F4=RETURN F5=IFIND F6=BOOK
F7=UP F8=DOWN F9=SWAP F10=LEFT F11=RIGHT F12=RETRIEVE
Display Job's Held Output with SDSF
SDSF OUTPUT DISPLAY DEES10ZA JOB07025 DSID 2 LINE 0 COLUMNS 02- 81
COMMAND INPUT ===> SCROLL ===> PAGE
********************************* TOP OF DATA **********************************
J E S 2 J O B L O G -- S Y S T E M S Y S 1 -- N O D E

17:27:56 JOB07025 ---- TUESDAY, 06 NOVEMBER 2000 ----


17.27.56 JOB07025 IRR010I USERID AUES100 IS ASSIGNED TO THIS JOB.
17.27.56 JOB07025 ICH70001I AUES100 LAST ACCESS AT 14:33:48 ON TUESDAY, NOVEMBER 6
17.27.56 JOB07025 $HASP373 AUES100A STARTED - INIT 5 - CLASS B - SYS SYS1
17.27.56 JOB07025 IEF403I AUES100A - STARTED - TIME=17.27.56
17.27.57 JOB07025 - --TIMINGS (MINS.)--
17.27.57 JOB07025 -JOBNAME STEPNAME PROCSTEP RC EXCP CPU SRB CLOCK
17.27.57 JOB07025 -AUES100A STEP1 FLUSH 0 .00 .00 .0
17.27.57 JOB07025 IEF453I AUES100A - JOB FAILED - JCL ERROR - TIME=17.27.57
17.27.57 JOB07025 -AUES100A ENDED. NAME-AUES100 TOTAL CPU TIME=
17.27.57 JOB07025 $HASP395 AUES100A ENDED
------ JES2 JOB STATISTICS ------
06 NOVEMBER 2000 JOB EXECUTION DATE
14 CARDS READ
27 SYSOUT PRINT RECORDS
0 SYSOUT PUNCH RECORDS
2 SYSOUT SPOOL KBYTES
0.00 MINUTES EXECUTION TIME
1 //AUES100A JOB (5820),'AUES100',MSGCLASS=X,MSGLEVEL=(1,1),
// NOTIFY=AUES100,CLASS=B,REGION=6M
//* SUBMITTED BY AUES100 AT 17:27:56 ON 00.126 FROM CVCPG089 ON SYS1
//********************************************************************
//* JOB SUBMITTED FROM AUES100.ES10.CNTL(LAB5#21) ***
//* DOC: ALLOCATE AUES100.ES10.PROC AND COPY ENTIRE DATA SET ***
//* AUES100.ES10.PROC. ***
//********************************************************************
2 //STEP1 EXEC PGM=IEBCOPY
F1=HELP F2=SPLIT F3=END F4=RETURN F5=IFIND F6=BOOK
F7=UP F8=DOWN F9=SWAP F10=LEFT F11=RIGHT F12=RETRIEVE
LAB

Time for Unit 5 Lab 2


Tasks
Log on on to TSO
Allocate a PDS and copy a
member in
Edit the member and then
submit it
Examine the job's output
using SDSF
Optional - examine the job's
output using Outlist
Delete as required
Log off
Types of Utilities

System Utility Programs Data Set Utility


IEHINITT Programs
IEHLIST IEBCOMPR
IEHMOVE IEBCOPY
IEHPROGM IEBDG
IFHSTATR IEBEDIT
IDCAMS IEBGENER
IEBIMAGE
IEBISAM
z/OS and OS/390 Feature - Licensed
Program IEBPTPCH
DFSORT IEBUPDTE
IEFBR14

Register
... 14 15 ...
... ...

Branches to Address Clears Register 15


in Register 14 Returns RC=0

IEFBR14 CSECT
LA R15,0 ....
BR R14

Initiator

Address Spaces
Common Utility DDNAMES

//SYSUT1 DD ... //SYSUT2 DD ...


PGM=
IEBCOPY
IEBGENER

//SYSIN DD * //SYSPRINT DD
IEBCOPY

Copy
PDS PDS

Copy
PDSE PDSE

Convert
PDS PDSE
Load/Unload IEBCOPY
PDS
PDSE PDSU
Merge
PDS
PDS PDSE
PDSE
Compress
PDS
Copying using IEBCOPY

PDS or Copy PDS or


PDSE PDSE

Unload Load

PDSU
Compressing a PDS with IEBCOPY

DDNAME A DDNAME B
Directory Directory
A B C ... A B C ...

Member Member Member


A IEBCOPY A B
Member Member
C C
Member
B
IEBGENER

Backup
SEQ.DS
MEMBER

Create PDS
SEQ.DS PDSE
MEMBER

Add
SEQ.DS MEMBER
IEBGENER
SEQ.DS Create/Edit PDS
PDS PDSE
PDSE MEMBER

Print
SEQ.DS
MEMBER

Reblock/Change
Data Set
Creating a Backup Copy with IEBGENER

Sequential
Data Set or
Member of IEBGENER
PDS/PDSE
DFSORT
Sorted

Data Sets

Merged
DFSORT

Copied
DFSORT Utility DDNAMES

//SORTIN DD ... //SORTOUT DD


...

PGM=DFSORT

//SYSIN DD * //SYSOUT DD

//SORTWK.. DD
The SORT Process
BAKER ABLE
ABLE BAKER
ECHO CHARLIE
DELTA DELTA
CHARLIE ECHO
KILO FOXTROT
LIMA SORT GOLF
INDIA HOTEL
GOLF INDIA
HOTEL JULIET
FOXTROT KILO
JULIET LIMA

SORT FIELDS=(1,7,CH,A)
SORT JCL Example

//AUES100A JOB ...


//S1 EXEC PGM=DFSORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=AUES100.UNSORTED.DATA,DISP=OLD
//SORTOUT DD DSN=AUES100.SORTED.DATA,DISP=OLD
//SORTWK01 DD SPACE=(CYL,(1,1)),UNIT=SYSDA
//SYSIN DD *
SORT FIELDS=(1,7,CH,A)
LAB

Time for Unit 5 Lab 3


Tasks
Logon on to TSO
Copy a dataset
Sort a dataset
Logoff
What Is a Procedure?

PROCEDURE
_____________
___________
JOB ____________
________
_______________ PROCEDURE
____________ ___________
____________
PROCEDURE
_________
____________
______________
_____________
Types of Procedures

Cataloged Procedures Instream Procedures

Other PROCLIB JOB

SYS1.PROCLIB PROC

PROC1 PROC2 PROC3


INSTREAM PROCEDURE

PROC4 PROC5 PROC6 PEND


... EXEC iproc
PROC7 PROC8 ... EXEC cproc
Procedure Usage

Cataloged Procedures Instream Procedures


PROCLIB
//TEST PROC
PROC1 PROC2 PROC3 .
PROC4 PROC5 PROC6
.
... .
JOB1 PROC7 PROC8 ... // PEND
//... EXEC TEST
.
JOB2
.
..

.
..

//... EXEC TEST


.

.
JOBn .
Example of an In-stream Procedure

//AUES100A JOB (1234),CLASS=A,


// NOTIFY=AUES100,MSGLASS=T,
// MSGLEVEL=(1,1)
//...
.
//INPROC PROC
//STEP1 EXEC PGM=APGM
//IN DD DSN=DATA.SET,DISP=SHR
Instream //...
Procedure .
.
.
// PEND
//STEP2 EXEC INPROC
Calling Procedures

When calling a procedure you can:

Use the procedure as is


Code additional DD statements
Overide EXEC and/or DD statements explicitly
Use symbolic parameters for a temporary change of the
procedure
Procedure Search Order

//jobname JOB...
//name PROC
. 1 Private
.
// PEND 2 Proclib(s)
.
//step EXEC PROC=name
or
//step EXEC name
3
System
Proclib(s)
Specifying Private PROCLIB

MY.PROC1
//MYJOB JOB ... PRC11 PRC12 PRC13
.
. PRC14 PRC15 PRC16
//MYLIB JCLLIB ORDER=(MY.PROC1,
// MY.PROC2)
.
PRC17 PRC18 ...
.
//STEP1 EXEC PROC=PRC23 MY.PROC2
.
PRC21 PRC22 PRC23
.
.
PRC24 PRC25 PRC26

PRC27 PRC28 ...


Overriding Procedure Statements

.
.
//INPROC PROC
//STEP1 EXEC PGM=APGM
//IN DD DSN=TESTA.DATA,DISP=SHR
.
.
Overrides // PEND
.
.
//STEPn EXEC INPROC
//STEP1.IN DD DSN=TESTB.DATA
//...
.
.
JCL Symbols

Allow the use of predefined or variable values

Example:
000100 //MYPROC PROC DATASET='AUES100.DEFAULT.DATA',
000200 // OUTCLASS=A
000300 //STEP1 EXEC PGM=PRNTDATA
000400 //INPUT DD DSN=&DATASET,...
000500 //OUTPUT DD SYSOUT=&OUTCLASS
000600 // PEND
000700 //S1 EXEC MYPROC,
000800 // DATASET='AUES100.OVERRIDE.DATA'
INCLUDE Groups
//TESTJOB JOB ...
//LIBSRCH JCLLIB ORDER=MY.PROC
//STEP1 EXEC PGM=PRINT
//OUTPUT INCLUDE MEMBER=SYSOUT2
//STEP2...
.
.

//* BEGIN OF INCLUDE GROUP


//SYSOUT2 DD SYSOUT=A
//OUT1 OUTPUT DEST=POK,COPIES=3
//OUT2 OUTPUT DEST=KINGSTON,
// COPIES=10
//OUT3 OUTPUT DEST=LAB,COPIES=5
//* END OF INCLUDE GROUP
LAB

Time for Unit 5 Lab 4


Tasks
Log on on to TSO
Override a procedure
Create and execute
procedures
Log off
Unit Summary
JES2 Job Processing Phases
Input Phase
Conversion Phase
Execution Phase
Output Phase
Purge Phase
Job Control Language
Job Layout
Structure of JCL Statements
Statement Continuation
JOB Statement
EXEC Statement
IF/THEN/ELSE/ENDIF Statement
DD Statement
ISPF Option 3.8 - Outlist Utility
System Display and Search Facility
Unit Summary
System, Dataset and Independant Utilities
IEFBR14
IEBCOPY
IEBGENER
IDCAMS
SORT
Procedure types
Cataloged procedure
Instream procedure
Specifying private procedure libraries
Symbolic Variables
INCLUDE Groups

You might also like