Chapter 4
The basics of Job Control Language
Murach’s OS/390 and z/OS JCL
© 2002, Mike Murach & Associates, Inc.
Chapter 4, Slide 1
Objectives Applied objectives
Code a valid JOB statement using the format required by your installation.
Code an EXEC statement to invoke a program and a parameter value to it.
Code a DD statement for the following DASD data sets: a. an existing cataloged data set b. an existing uncataloged data set c. a new non-VSAM data set
Code the JCL and data for an instream data set. The data may or may not include JCL statements.
Code a DD statement for a SYSOUT data set.
Given complete specifications for a job, code its JCL using the statements presented in this chapter.
Murach’s OS/390 and z/OS JCL
Chapter 4, Slide 2
Objectives (continued) Knowledge objectives
Describe the basic format of a JCL statement.
Describe the rules you must follow when coding a name in the name field.
Distinguish between positional and keyword parameters.
Describe how to code subparameters.
Describe how to continue JCL statements onto additional lines.
Describe how to code comments in a job stream.
Describe the purpose of the DISP parameter in a DD statement.
Describe the purposes of the UNIT, VOLUME, and SPACE parameters in a DD statement.
Describe the purpose of the DCB parameter in a DD statement.
Murach’s OS/390 and z/OS JCL
Chapter 4, Slide 3
Common job control language statements JOB EXEC
Identifies a job and supplies ing information. Identifies a job step by indicating the name of the program to be executed. DD Identifies a data set to be allocated for the job step. delimiter (/*) Marks the end of an instream data set. null (//) Marks the end of a job. comment (//*) Provides comments.
Murach’s OS/390 and z/OS JCL
Figure 4-01a
Chapter 4, Slide 4
Additional JCL statements Supplies options for SYSOUT processing. Marks the beginning of a procedure. Marks the end of a procedure. Identifies a private procedure library. Copies statements from another library member into the job. Sets default values for symbolic variables. SET IF/THEN/ELSE/ENDIF Provides conditional execution of a job step. COMMAND Identifies an MVS or JES command that is to be issued when the job runs.
OUTPUT PROC PEND JCLLIB INCLUDE
Murach’s OS/390 and z/OS JCL
Figure 4-01b
Chapter 4, Slide 5
A multi-step job
Job Job steps steps
//MM01A //STEP1 //FILEA //FILEB //STEP2 //FILEB //FILEC //REPORTA //
Murach’s OS/390 and z/OS JCL
JOB 36512 EXEC PGM=PROGA DD DSNAME=MM01.CUSTOMER.MASTER,DISP=SHR DD DSNAME=MM01.CUSTOMER.LIST,DISP=(NEW,KEEP) EXEC PGM=PROGB DD DSNAME=MM01.CUSTOMER.LIST,DISP=(OLD,DELETE) DD DSNAME=MM01.CUSTOMER.INVOICE,DISP=SHR DD SYSOUT=*
Figure 4-01c
Chapter 4, Slide 6
The basic format for JCL statements identifier [name] [operation] [parameters] [comments] Identifier field Name field
//MM01A //POST //CUSTTRAN //CUSTMAST //TRANJRNL //ERRLIST //
Murach’s OS/390 and z/OS JCL
Operation field
JOB EXEC DD DD DD DD
Parameters field
36512,'R. MENENDEZ',NOTIFY=MM01 PGM=CM3000 DSNAME=MM01.CUSTOMER.TRANS,DISP=SHR DSNAME=MM01.CUSTOMER.MASTER,DISP=SHR SYSOUT=* SYSOUT=*
Figure 4-02a
Chapter 4, Slide 7
JCL statement formatting notes JCL statements are coded in 80-byte records although only 72 bytes are available for JCL code. Each statement can be logically divided into five fields. The identifier field starts in column 1 and for all standard JCL statements is two slashes (//). Immediately following the identifier field is the name field. The operation, parameters, and comment fields can be coded in a freeform style as long as there’s at least one blank space between these fields.
Murach’s OS/390 and z/OS JCL
Figure 4-02b
Chapter 4, Slide 8
Positional parameters //MM01A
JOB
36512,'R MENENDEZ'
//MM01A
JOB
,'R MENENDEZ'
Keyword parameters //CUSTMAST DD
DSNAME=MM01.CUSTOMER.MASTER,DISP=SHR
Keyword and positional parameter combinations //CUSTMAST DD // // //
DSNAME=MM01.CUSTOMER.MASTER,DISP=(,CATLG,DELETE), UNIT=SYSDA,VOL=SER=MPS800, SPACE=(CYL,(10,5,2)), DCB=DSORG=PO
//DUNNING // // //
DSNAME=MM01.DUNNING.FILE,DISP=(NEW,KEEP), UNIT=SYSDA,VOL=SER=MPS800, SPACE=(CYL,(1,1)), DCB=(DSORG=PS,RECFM=FB,LRECL=400)
DD
Murach’s OS/390 and z/OS JCL
Figure 4-03a
Chapter 4, Slide 9
Parameter coding rules The parameters field begins at least one position after the end of the operation field and can extend into column 71. There are two types of parameters: positional and keyword. Positional parameters are interpreted based on their position on the parameters field. Omitted parameters are marked by a comma. Keyword parameters are interpreted based on a keyword followed by an equals sign and a value. They can be coded in any order. Code positional parameters first in the parameters field, before any keyword parameters. All parameters must be separated by commas, not blanks. The end of a parameters field is marked by a blank. Parameters containing blanks or special characters must be enclosed in apostrophes.
Murach’s OS/390 and z/OS JCL
Figure 4-03b
Chapter 4, Slide 10
Subparameter coding rules Subparameters are coded the same way as parameters and can also be positional or keyword. If you code more than one subparameter for a parameter, enclose the list in parentheses.
Murach’s OS/390 and z/OS JCL
Figure 4-03c
Chapter 4, Slide 11
Two ways to continue a JCL statement on more than one line Code as many parameters on one line as possible //DUNNING DD DSNAME=MM01.DUNNING.FILE,DISP=(NEW,KEEP),UNIT=SYSDA, // VOL=SER=MPS800,SPACE=(CYL,(1,1)),DCB=(DSORG=PS,RECFM=FB,LRECL=400)
Code only one or two parameters per line //DUNNING // // //
DD
DSNAME=MM01.DUNNING.FILE,DISP=(NEW,KEEP), UNIT=SYSDA,VOL=SER=MPS800, SPACE=(CYL,(1,1)), DCB=(DSORG=PS,RECFM=FB,LRECL=400)
Murach’s OS/390 and z/OS JCL
Figure 4-04a
Chapter 4, Slide 12
Two ways to code comments in a job The comments field of a JCL statement //MM01A //POST //CUSTTRAN //CUSTMAST //TRANJRNL
JOB EXEC DD DD DD
36512,MENENDEZ,NOTIFY=MM01 PGM=CM3000 **Post cust transactions** DSNAME=MM01.CUSTOMER.TRANS,DISP=SHR DSNAME=MM01.CUSTOMER.MASTER,DISP=SHR SYSOUT=*
The JCL comment statement //MM01RP JOB 36512,'A PRINCE',MSGCLASS=X,MSGLEVEL=(1,1) //********************************************************* //* Prepare past-due reports from DUNNING file * //********************************************************* //AR7200 EXEC PGM=AR7200 //DUNNING DD DSNAME=MM01.DUNNING.FILE,DISP=OLD, // UNIT=SYSDA,VOL=SER=MPS800 //ATB DD SYSOUT=* //OVERDUE DD SYSOUT=*
Murach’s OS/390 and z/OS JCL
Figure 4-04b
Chapter 4, Slide 13
The syntax of the JOB statement //jobname
JOB [ [ [ [
ing-information ] [,programmer-name ] ,MSGCLASS=class ] ,MSGLEVEL=(stmt,msg) ] ,NOTIFY=-id ]
Explanation ing-information Specifies an number or other ing information. programmer-name Identifies the owner of the job. MSGCLASS Specifies a single-character output class to be used for the job’s message output. MSGLEVEL Controls which JCL statements and system messages are produced by the job. NOTIFY Specifies the TSO/E to be notified when the job completes.
Murach’s OS/390 and z/OS JCL
Figure 4-05a
Chapter 4, Slide 14
JOB statement examples //PAY40B1
JOB
MMA2AB14
//PAY40B2
JOB
(MMA-001,'06/11/02',206),MENENDEZ,MSGCLASS=A
//PAY40B3
JOB
,MENENDEZ,MSGCLASS=A
//PAY40B4
JOB
MSGCLASS=A,MSGLEVEL=(0,0),NOTIFY=MM01
A member named JOBCARD that contains a generic JOB statement //MM01XXXX JOB 36512,'R MENENDEZ', // MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=MM01
Murach’s OS/390 and z/OS JCL
Figure 4-05b
Chapter 4, Slide 15
Rules for coding the name field of a JCL statement
A name must start in column 3 of a JCL statement and must be followed by at least one blank.
It can be from one to eight characters long, consisting of alphanumeric (A-Z and 0-9) and national (@,$,#) characters.
The first character must be alphabetic or national.
Valid job names //MM01A //CS0166PR //$PSP06B
Invalid job names // MM01C
Doesn’t start in column 3
//(ABCDE)
Starts with an invalid character
//PR_001
Contains an invalid character
//PAYMENT805
Contains more than 8 characters
Murach’s OS/390 and z/OS JCL
Figure 4-06
Chapter 4, Slide 16
Five JOB statements that use the programmer name parameter //MM01A
JOB
36512,RMENENDEZ
//MM01B
JOB
,R.MENENDEZ
//MM01C
JOB
,'R MENENDEZ'
//MM01D
JOB
36512,'O''Brien'
//MM01E
JOB
,DEPT-10
Two ways to code the NOTIFY parameter //MM01A
JOB 36512,LOWE,NOTIFY=MM01
//MM01B
JOB 36512,LOWE,NOTIFY=&SYSUID
The message returned to your TSO/E terminal when the job completes 17.35.12 JOB02169 $HASP165 MM01B
ENDED AT DDC1NJE
MAXCC=0 CN(INTERNAL)
***
Murach’s OS/390 and z/OS JCL
Figure 4-07
Chapter 4, Slide 17
The syntax of the MSGCLASS parameter MSGCLASS=class
Explanation class
Identifies the output class for the job log. The class can only be one character long (A-Z or 0-9) and must be a valid output class specified at JES initialization.
The syntax of the MSGLEVEL parameter MSGLEVEL=(stmt,msg)
Explanation stmt
msg
A single digit that specifies which JCL statements should be printed. 0 Print only the JOB statement. 1 Print only JCL statements. 2 Print only JCL statements submitted through the input stream. A single digit that specifies which system messages should be printed. 0 Print step completion messages only. 1 Print all messages (the default).
Murach’s OS/390 and z/OS JCL
Figure 4-08a
Chapter 4, Slide 18
A JOB statement with both the MSGCLASS and MSGLEVEL parameters //MM01A
JOB 36512,'R MENENDEZ',MSGCLASS=X,MSGLEVEL=(0,0)
MSGCLASS and MSGLEVEL are typically coded together on a JOB statement.
Murach’s OS/390 and z/OS JCL
Figure 4-08b
Chapter 4, Slide 19
The syntax of the EXEC statement //stepname
EXEC PGM=program-name [ ,PARM=information ]
Explanation PGM PARM
Specifies the name of the program to be executed for this job step. Optional; specifies information that’s ed to the program.
EXEC statement facts The EXEC statement executes a program or invokes a procedure for each step. The program specified in the PGM parameter must be a linkedited load module member of a partitioned data set. The PARM parameter lets you information to the program specified in the PGM parameter. Any information coded into the PARM field is programdependent.
Murach’s OS/390 and z/OS JCL
Figure 4-09a
Chapter 4, Slide 20
Examples of the EXEC statement An EXEC statement that executes program PAY5B10 in step PAYLIST //PAYLIST
EXEC PGM=PAY5B10
An EXEC statement that es a parameter value of LINECT=0050 to program IEBDG //DATAGEN
EXEC PGM=IEBDG,PARM='LINECT=0050'
An EXEC statement that es three parameters to program HEWL //LINKED
EXEC PGM=HEWL,PARM='LET,MAP,XREF'
Murach’s OS/390 and z/OS JCL
Figure 4-09b
Chapter 4, Slide 21
The syntax of the DD statement for DASD data sets //ddname
DD DSNAME=data-set-name ,DISP=(status,normal-disp,abnormal-disp) [ ,UNIT=unit ] [ ,VOL=SER=serial-number ] [ ,SPACE=unit,(primary-qty,secondary-qty,dir) ] [ ,DCB=(option,option...) ]
Explanation DSNAME Specifies the file’s data set name. DISP Specifies the file’s status and normal and abnormal disposition. UNIT Specifies a group name, device type, or device number that identifies the device where the file resides. VOL=SER Specifies the six-character volume serial number of the volume that contains the file. SPACE Specifies the DASD space to be allocated for the file. DCB Specifies options to be used for the file’s data control block.
Murach’s OS/390 and z/OS JCL
Figure 4-10a
Chapter 4, Slide 22
Examples of the DD statement A DD statement that allocates an existing data set //INVMAST
DD
DSNAME=MM01.INVNTORY.MASTER,DISP=SHR
A DD statement that allocates a new data set //INVMAST // // //
Murach’s OS/390 and z/OS JCL
DD
DSNAME=MM01..MASTER,DISP=(NEW,CATLG), UNIT=SYSDA,VOL=SER=MPS8BV, SPACE=(CYL,(10,2)), DCB=(DSORG=PS,RECFM=FB,LRECL=100)
Figure 4-10b
Chapter 4, Slide 23
The syntax of the DSNAME parameter {DSNAME} {DSN}
= {data-set-name} {data-set-name(member)}
Different ways to code the DSNAME parameter A DD statement that accesses a sequential data set //INVMAST
DD
DSNAME=MM01.INVMAST.DATA,DISP=SHR
A DD statement that accesses a PDS member //INVTRAN
DD
DSN=MM01.INV.DATA(TRANS),DISP=SHR
DSNAME facts The DSNAME parameter is required on a DD statement for a permanent data set. The DSNAME parameter is optional for temporary data sets.
Murach’s OS/390 and z/OS JCL
Figure 4-11a
Chapter 4, Slide 24
Reserved ddnames used by the operating system JCBIN
BCBLOCK
JCBTAB
JESInnnn
JESJCL
JESJCLIN
JESMSGLG JESYSMSG
JOBCAT
JOBLIB
JOURNAL
JST
JS3CATLG J3JBINFO
J3SCINFO J3STINFO
STCINRDR STEPCAT
STEPLIB
SYSCHK
SYSIN
SYSABEND
SYSCKEOV
SYSMDUMP
SYSUDUMP TSOINRDR
Ddname facts The ddname is a symbolic name that the program specified in the EXEC statement uses to refer to a data set. Each ddname should be unique within the job step. Some ddnames have special meaning to the system and therefore cannot be used to identify data sets in a processing program.
Murach’s OS/390 and z/OS JCL
Figure 4-11b
Chapter 4, Slide 25
The syntax of the DISP parameter DISP=(status,normal-disp,abnormal-disp)
Status NEW OLD SHR MOD
The data set does not exist and should be created. The data set exists and should be allocated for exclusive use. The data set exists and should be allocated for shared use. The data set is allocated for exclusive use and is positioned at the end of the data, so additional records may be added after the last record.
Normal and abnormal disposition DELETE
The data set is deleted. If it was retrieved from the catalog, it is also uncataloged. KEEP The data set is retained. CATLG The data set is retained and a catalog entry is made. UNCATLG The data set is retained, but its catalog entry is removed. Normal disposition only. The data set is retained for use by a later job step.
Murach’s OS/390 and z/OS JCL
Figure 4-12a
Chapter 4, Slide 26
DISP parameter default values status normal disposition
abnormal disposition
If omitted, NEW is assumed. Depends on the value specified or assumed for status: if NEW, normal disposition is DELETE; if OLD, SHR, or MOD, normal disposition is KEEP. Takes on the value specified or assumed for normal disposition.
Examples of the DISP parameter The data set is allocated for shared access, and the normal and abnormal dispositions default to KEEP DISP=SHR
The new data set is cataloged if the job step ends normally; otherwise, it’s deleted DISP=(,CATLG,DELETE)
Murach’s OS/390 and z/OS JCL
Figure 4-12b
Chapter 4, Slide 27
The syntax of the UNIT parameter UNIT=
{group-name} {device-type} {device-number}
Explanation group-name
Specifies a group name that identifies devices that belong to categories set up by the installation. SYSDA and TAPE are commonly used group names. SYSDA typically refers to any DASD unit that’s available for public use, and TAPE refers to any available tape drive. device-type Specifies a device by its machine type or model. For example, if you specify UNIT=3390, a 3390 device is used. device-number Specifies a device by a three- or four-digit hexadecimal address. A four-digit number must be preceded by a slash (/), as in UNIT=/2301.
Murach’s OS/390 and z/OS JCL
Figure 4-13a
Chapter 4, Slide 28
The syntax of the VOLUME parameter {VOLUME=}SER=serial-number {VOL=}
Explanation serial-number
Specifies which volume you want to allocate for your data set. If omitted, MVS scans for eligible volumes based on the UNIT parameter.
A DD statement that uses the UNIT and VOLUME parameters //INVMAST //
DD
Murach’s OS/390 and z/OS JCL
DSNAME=MM01.INVNTORY.MASTER,DISP=(NEW,CATLG), UNIT=SYSDA,VOL=SER=MPS8BV,...
Figure 4-13b
Chapter 4, Slide 29
The syntax of the SPACE parameter SPACE= (unit,(primary-qty,secondary-qty[,dir]))
Explanation unit
primary-qty secondary-qty dir
Specifies the unit used to allocate space to the data set, as follows: TRK Allocates space in tracks. CYL Allocates space in cylinders. blklgth Allocates space in blocks, with the block size given in bytes. reclgth Allocates space based on the average record length in bytes. Specifies the number of units to be initially allocated to the file. Specifies the number of units to be allocated to each secondary extent. Specifies the number of directory blocks to allocate for a partitioned data set.
Murach’s OS/390 and z/OS JCL
Figure 4-14a
Chapter 4, Slide 30
Examples of the SPACE parameter Example 1 SPACE=(CYL,(4,1,5))
Primary: Secondary: Directory: Example 2
4 cylinders 1 cylinder 5 blocks
SPACE=(TRK,(5,2))
Primary: Secondary: Example 3
5 tracks 2 tracks
SPACE=(800,(500,100))
Primary: Secondary: Murach’s OS/390 and z/OS JCL
500 800 byte blocks 100 800 byte blocks
Figure 4-14b
Chapter 4, Slide 31
The syntax of the DCB parameter DCB=(option,option...)
Commonly used DCB options DSORG=x
RECFM=x
LRECL=n BLKSIZE=n
Specifies the data set’s organization, as follows: PS Physical sequential PO Partitioned DA Direct IS Indexed sequential Specifies the format of the file’s records, as follows: F Fixed length, unblocked FB Fixed length, blocked V Variable length, unblocked VB Variable length, blocked VBS Variable length, blocked, spanned U Undefined Specifies the length of the file’s records. Specifies the length of the file’s blocks; for FB, BLKSIZE is normally a multiple of LRECL.
Murach’s OS/390 and z/OS JCL
Figure 4-15a
Chapter 4, Slide 32
Examples of the DCB parameter A DCB parameter for a sequential file with fixed-length records of 133 bytes DCB=(DSORG=PS,RECFM=F,LRECL=133)
DD parameters for a file with variable-length records up to 500 bytes long RECFM=VB,LRECL=500
Murach’s OS/390 and z/OS JCL
Figure 4-15b
Chapter 4, Slide 33
The syntax of the DD statement for instream data sets //ddname
DD
{*} {DATA}
[ ,DLM=xx ]
Explanation * or DATA Indicates that instream data follows. If you code an asterisk, the next JCL statement ends the data. If you code DATA, you must include a delimiter statement to end the data. DLM Specifies the characters that identify a delimiter statement. If omitted, slashasterisk (/*) is the default.
Murach’s OS/390 and z/OS JCL
Figure 4-16a
Chapter 4, Slide 34
Two examples of coding instream data Example 1 //INVTRAN DD * A00101005995CH445 A00103010030CH445 A00272001950CJ550 /*
Example 2 //SYSIN DD DATA,DLM=## //INVTRAN DD * A00101005995CH445 A00103010030CH445 A00272001950CJ550 /* ## Note: The shading indicates the records that are processed as data for the instream data set.
Murach’s OS/390 and z/OS JCL
Figure 4-16b
Chapter 4, Slide 35
The syntax of the DD statement for SYSOUT data //ddname
DD
SYSOUT=x
Explanation SYSOUT
Specifies a one-character output class to be associated with the SYSOUT data set. If you code an asterisk, the output class specified in the MSGCLASS parameter of the JOB statement is used.
Two ways to code the SYSOUT parameter A JES SYSOUT file with an output class of A //SYSPRINT
DD
SYSOUT=A
A JES SYSOUT file with an output class that defaults to the output class specified by MSGCLASS in the JOB statement //INVRPT
Murach’s OS/390 and z/OS JCL
DD
SYSOUT=*
Figure 4-17
Chapter 4, Slide 36
System flowchart for the transaction-posting application Transaction journal
Customer transactions
Customer master file
Post customer transactions (CM3000)
Error listing
Error transactions
Murach’s OS/390 and z/OS JCL
Transaction summary report
Figure 4-18a
Chapter 4, Slide 37
Data set requirements for the transaction-posting application ddname CUSTTRAN CUSTMAST ERRTRAN TRANJRNL TRANSUM ERRLIST
Murach’s OS/390 and z/OS JCL
Data set name MM01.CUSTOMER.TRANS MM01.CUSTOMER.MASTER MM01.CUSTOMER.TRANS.ERRS (SYSOUT data set) (SYSOUT data set) (SYSOUT data set)
Figure 4-18b
Chapter 4, Slide 38
The JCL for the transaction-posting application //MM01PT // //POST //CUSTTRAN //CUSTMAST //ERRTRAN //TRANJRNL //TRANSUM //ERRLIST
JOB
36512,'M MURACH',MSGCLASS=A,MSGLEVEL=(1,1), NOTIFY=MM02 EXEC PGM=CM3000 DD DSNAME=MM01.CUSTOMER.TRANS,DISP=SHR DD DSNAME=MM01.CUSTOMER.MASTER,DISP=SHR DD DSNAME=MM01.CUSTOMER.TRANS.ERRS,DISP=SHR DD SYSOUT=* DD SYSOUT=* DD SYSOUT=*
Murach’s OS/390 and z/OS JCL
Figure 4-18c
Chapter 4, Slide 39
The job control requirements for a report-preparation application AR master file
Customer master file
Dunning file
Sorted dunning file
Sort by invoice within customer (SORT)
Extract dunning data (AR7100)
Prepare ATB and overdue invoice report (AR7200)
Sort by invoice, customer, state (SORT)
Sorted AR master file
Murach’s OS/390 and z/OS JCL
Aged trial balance report
Overdue invoiced report
Figure 4-19a
Prepare XREF report and statements (AR7300)
Statements
Cross reference report
Chapter 4, Slide 40
Data set requirements for the programs invoked by the report-preparation application Step name
Program ddname Data set name
SORT1
SORT
SYSOUT
(SYSOUT data set)
SORTIN
MM01..MASTER
SORTOUT
MM01..MASTER.SORT
SORTWK01 (temporary work file) AR7100
AR7100
SYSIN
(instream data set)
ARSORT
MM01..MASTER.SORT
CUSTMAST MM01.CUSTOMER.MASTER AR7200
AR7200
Murach’s OS/390 and z/OS JCL
DUNNING
MM01.DUNNING.FILE
DUNNING
MM01.DUNNING.FILE
ATB
(SYSOUT data set)
OVERDUE
(SYSOUT data set)
Figure 4-19b
Chapter 4, Slide 41
Data set requirements for the programs invoked by the report-preparation application (continued) Step name
Program ddname Data set name
SORT2
SORT
SYSOUT
(SYSOUT data set)
SORTIN
MM01.DUNNING.FILE
SORTOUT
MM01.DUNNING.FILE.SORT
SORTWK01 (temporary work file) AR7300
AR7300
Murach’s OS/390 and z/OS JCL
SYSIN
(instream data set)
DUNSORT
MM01.DUNNING.FILE.SORT
XREF
(SYSOUT data set)
STMTS
(SYSOUT data set)
Figure 4-19c
Chapter 4, Slide 42
The JCL for the report-preparation application 1 2 3 4 5
6 7 8 9 10 11
//MM01RP JOB 36512,'A PRINCE',MSGCLASS=X,MSGLEVEL=(1,1), // NOTIFY=MM03 //SORT1 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN DD DSNAME=MM01..MASTER,DISP=SHR //SORTOUT DD DSNAME=MM01..MASTER.SORT,DISP=(NEW,KEEP), // UNIT=SYSDA,VOL=SER=MPS800, // SPACE=(CYL,(1,1)), // DCB=(DSORG=PS,RECFM=FB,LRECL=400) //SORTWK01 DD UNIT=SYSDA,VOL=SER=MPS800, // SPACE=(CYL,(1,1)) //SYSIN DD * SORT FIELDS=(16,5,CH,A,1,5,CH,A) /* //AR7100 EXEC PGM=AR7100 //ARSORT DD DSNAME=MM01..MASTER.SORT,DISP=(OLD,DELETE), // UNIT=SYSDA,VOL=SER=MPS800 //CUSTMAST DD DSNAME=MM01.CUSTOMER.MASTER,DISP=SHR //DUNNING DD DSNAME=MM01.DUNNING.FILE,DISP=(NEW,KEEP), // UNIT=SYSDA,VOL=SER=MPS800, // SPACE=(CYL,(1,1)), // DCB=(DSORG=PS,RECFM=FB,LRECL=400)
Murach’s OS/390 and z/OS JCL
Figure 4-20a
Chapter 4, Slide 43
The report-preparation application (continued) 12 13 14
//AR7200 EXEC PGM=AR7200 //DUNNING DD DSNAME=MM01.DUNNING.FILE,DISP=OLD, // UNIT=SYSDA,VOL=SER=MPS800 //ATB DD SYSOUT=* //OVERDUE DD SYSOUT=* //SORT2 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN DD DSNAME=MM01.DUNNING.FILE,DISP=(OLD,DELETE), // UNIT=SYSDA,VOL=SER=MPS800, //SORTOUT DD DSNAME=MM01.DUNNING.FILE.SORT,DISP=(NEW,KEEP), // UNIT=SYSDA.VOL=SER=MPS800, // SPACE=(CYL,(1,1)) // DCB=(DSORG=PS,RECFM=FB,LRECL=400) //SORTWK01 DD UNIT=SYSDA,VOL=SER=MPS800, // SPACE=(CYL,(1,1)) //SYSIN DD * SORT FIELDS=(43,2,CH,A,1,5,CH,A,50,5,CH,A) /* //AR7300 EXEC PGM=AR7300 //DUNSORT DD DSNAME=MM01.DUNNING.FILE.SORT,DISP=(OLD,DELETE), // UNIT=SYSDA,VOL=SER=MPS800 //XREF DD SYSOUT=* //STMTS DD SYSOUT=*
Murach’s OS/390 and z/OS JCL
Figure 4-20b
Chapter 4, Slide 44