Chapter 04 - Columbus State University

Download Report

Transcript Chapter 04 - Columbus State University

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 pass a parameter value to it.

Code a DD statement for the following DASD data sets: a.

an existing cataloged data set b.

c.

an existing uncataloged data set 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 DD delimiter (/*) null (//) comment (//*)

Identifies a job and supplies accounting information.

Identifies a job step by indicating the name of the program to be executed.

Identifies a data set to be allocated for the job step.

Marks the end of an instream data set.

Marks the end of a job.

Provides comments.

Murach’s OS/390 and z/OS JCL Figure 4-01a Chapter 4, Slide 4

Additional JCL statements

OUTPUT PROC PEND JCLLIB INCLUDE

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.

SET

Sets default values for symbolic variables.

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.

Murach’s OS/390 and z/OS JCL Figure 4-01b Chapter 4, Slide 5

A multi-step job

Job //MM01A JOB 36512 //STEP1 EXEC PGM=PROGA //FILEA DD DSNAME=MM01.CUSTOMER.MASTER,DISP=SHR //FILEB DD DSNAME=MM01.CUSTOMER.LIST,DISP=(NEW,KEEP) //STEP2 EXEC PGM=PROGB //FILEB DD DSNAME=MM01.CUSTOMER.LIST,DISP=(OLD,DELETE) //FILEC DD DSNAME=MM01.CUSTOMER.INVOICE,DISP=SHR //REPORTA DD SYSOUT=* //

Murach’s OS/390 and z/OS JCL Figure 4-01c Chapter 4, Slide 6

The basic format for JCL statements

identifier [name] [operation] [parameters] [comments] Identifier field Name field Operation field Parameters field //MM01A JOB 36512,'R. MENENDEZ',NOTIFY=MM01 //POST EXEC PGM=CM3000 //CUSTTRAN DD DSNAME=MM01.CUSTOMER.TRANS,DISP=SHR //CUSTMAST DD DSNAME=MM01.CUSTOMER.MASTER,DISP=SHR //TRANJRNL DD SYSOUT=* //ERRLIST DD SYSOUT=* //

Murach’s OS/390 and z/OS JCL 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 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-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 JOB 36512,MENENDEZ,NOTIFY=MM01 //POST EXEC PGM=CM3000 **Post cust transactions** //CUSTTRAN DD DSNAME=MM01.CUSTOMER.TRANS,DISP=SHR //CUSTMAST DD DSNAME=MM01.CUSTOMER.MASTER,DISP=SHR //TRANJRNL DD 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 [ accounting-information ] [,programmer-name ] [ ,MSGCLASS=class ] [ ,MSGLEVEL=(stmt,msg) ] [ ,NOTIFY=user-id ] Explanation

accounting-information Specifies an account number or other accounting information.

programmer-name MSGCLASS MSGLEVEL Identifies the owner of the job.

Specifies a single-character output class to be used for the job’s message output.

Controls which JCL statements and system messages are produced by the job.

NOTIFY Specifies the TSO/E user 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 //PAYMENT805

Contains an invalid character 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 1 Print only the JOB statement.

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 1 Print step completion messages only.

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 passed 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 link edited load module member of a partitioned data set.

 The PARM parameter lets you pass information to the program specified in the PGM parameter.

 Any information coded into the PARM field is program dependent.

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 passes a parameter value of LINECT=0050 to program IEBDG //DATAGEN EXEC PGM=IEBDG,PARM='LINECT=0050' An EXEC statement that passes 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 DCB Specifies the DASD space to be allocated for the file.

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 DD DSNAME=MM01.ACCOUNT.MASTER,DISP=(NEW,CATLG), // UNIT=SYSDA,VOL=SER=MPS8BV, // SPACE=(CYL,(10,2)), // DCB=(DSORG=PS,RECFM=FB,LRECL=100)

Murach’s OS/390 and z/OS JCL Figure 4-10b Chapter 4, Slide 23

The syntax of the DSNAME parameter

{DSNAME} = {data-set-name} {DSN} {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 STEPLIB SYSABEND SYSUDUMP TSOINRDR J3SCINFO J3STINFO SYSCHK SYSCKEOV STCINRDR STEPCAT SYSIN SYSMDUMP

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 KEEP CATLG The data set is deleted. If it was retrieved from the catalog, it is also uncataloged.

The data set is retained.

The data set is retained and a catalog entry is made.

UNCATLG The data set is retained, but its catalog entry is removed.

PASS 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

{group-name} UNIT= {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 DSNAME=MM01.INVNTORY.MASTER,DISP=(NEW,CATLG), // UNIT=SYSDA,VOL=SER=MPS8BV,...

Murach’s OS/390 and z/OS JCL 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 CYL Allocates space in tracks.

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: 4 cylinders 1 cylinder Directory:

Example 2 SPACE=(TRK,(5,2))

5 blocks Primary: 5 tracks Secondary: 2 tracks

Example 3 SPACE=(800,(500,100))

Primary: Secondary: 500 800 byte blocks 100 800 byte blocks Murach’s OS/390 and z/OS JCL Figure 4-14b Chapter 4, Slide 31

The syntax of the DCB parameter

DCB=(option,option...) Commonly used DCB options DSORG=x

Specifies the data set’s organization, as follows:

RECFM=x

PS PO DA Physical sequential Partitioned Direct IS Indexed sequential Specifies the format of the file’s records, as follows:

LRECL=n BLKSIZE=n

F FB V VB Fixed length, unblocked Fixed length, blocked Variable length, unblocked 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 {*} [ ,DLM=xx ] {DATA} 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, slash asterisk (/*) 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 DD SYSOUT=*

Murach’s OS/390 and z/OS JCL Figure 4-17 Chapter 4, Slide 36

System flowchart for the transaction-posting application

Customer transactions Transaction journal Customer master file Post customer transactions (CM3000) Transaction summary report Error listing Error transactions Murach’s OS/390 and z/OS JCL Figure 4-18a Chapter 4, Slide 37

Data set requirements for the transaction-posting application ddname

CUSTTRAN CUSTMAST ERRTRAN TRANJRNL TRANSUM ERRLIST

Data set name

MM01.CUSTOMER.TRANS

MM01.CUSTOMER.MASTER

MM01.CUSTOMER.TRANS.ERRS

(SYSOUT data set) (SYSOUT data set) (SYSOUT data set) Murach’s OS/390 and z/OS JCL Figure 4-18b Chapter 4, Slide 38

The JCL for the transaction-posting application

//MM01PT JOB 36512,'M MURACH',MSGCLASS=A,MSGLEVEL=(1,1), // NOTIFY=MM02 //POST EXEC PGM=CM3000 //CUSTTRAN DD DSNAME=MM01.CUSTOMER.TRANS,DISP=SHR //CUSTMAST DD DSNAME=MM01.CUSTOMER.MASTER,DISP=SHR //ERRTRAN DD DSNAME=MM01.CUSTOMER.TRANS.ERRS,DISP=SHR //TRANJRNL DD SYSOUT=* //TRANSUM DD SYSOUT=* //ERRLIST 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) Prepare XREF report and statements (AR7300) Sorted AR master file Aged trial balance report Overdue invoiced report Statements Cross reference report Murach’s OS/390 and z/OS JCL Figure 4-19a Chapter 4, Slide 40

Data set requirements for the programs invoked by the report-preparation application Step name

SORT1 AR7100 AR7200

Program ddname Data set name

SORT AR7100 AR7200 SYSOUT SORTIN SORTOUT (SYSOUT data set) MM01.ACCOUNT.MASTER

MM01.ACCOUNT.MASTER.SORT

SORTWK01 (temporary work file) SYSIN (instream data set) ARSORT MM01.ACCOUNT.MASTER.SORT

CUSTMAST MM01.CUSTOMER.MASTER

DUNNING DUNNING ATB OVERDUE MM01.DUNNING.FILE

MM01.DUNNING.FILE

(SYSOUT data set) (SYSOUT data set) Murach’s OS/390 and z/OS JCL Figure 4-19b Chapter 4, Slide 41

Data set requirements for the programs invoked by the report-preparation application (continued)

Step name

SORT2 AR7300

Program ddname Data set name

SORT SYSOUT SORTIN SORTOUT SORTWK01 SYSIN (SYSOUT data set) MM01.DUNNING.FILE

MM01.DUNNING.FILE.SORT

(temporary work file) (instream data set) AR7300 DUNSORT XREF STMTS MM01.DUNNING.FILE.SORT

(SYSOUT data set) (SYSOUT data set) Murach’s OS/390 and z/OS JCL Figure 4-19c Chapter 4, Slide 42

7 8 9 10 11 2 3 4 5 6 1

The JCL for the report-preparation application

//MM01RP JOB 36512,'A PRINCE',MSGCLASS=X,MSGLEVEL=(1,1), // NOTIFY=MM03 //SORT1 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN DD DSNAME=MM01.ACCOUNT.MASTER,DISP=SHR //SORTOUT DD DSNAME=MM01.ACCOUNT.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.ACCOUNT.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