JCLCh04

44
Murach’s OS/390 and z/OS JCL Chapter 4, Slide 1 © 2002, Mike Murach & Associates, Inc. C hapter4 The basics of Job C ontrolLanguage

description

Jcl tutorial

Transcript of JCLCh04

Murach’s OS/390 and z/OS JCL Chapter 4, Slide 1© 2002, Mike Murach & Associates, Inc.

Chapter 4

The basics ofJob Control Language

Murach’s OS/390 and z/OS JCL Chapter 4, Slide 2

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. 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 3

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 4Figure 4-01a

Common job control language statementsJOB Identifies a job and supplies accounting information.

EXEC Identifies a job step by indicating the name of theprogram 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 Chapter 4, Slide 5Figure 4-01b

Additional JCL statementsOUTPUT Supplies options for SYSOUT processing.

PROC Marks the beginning of a procedure.

PEND Marks the end of a procedure.

JCLLIB Identifies a private procedure library.

INCLUDE Copies statements from another library member intothe job.

SET Sets default values for symbolic variables.

IF/THEN/ELSE/ENDIFProvides conditional execution of a job step.

COMMAND Identifies an MVS or JES command that is to be issuedwhen the job runs.

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

A multi-step 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=*//

JobstepsJob steps

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

The basic format for JCL statementsidentifier [name] [operation] [parameters] [comments]

//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=*//

Identifierfield

Namefield

Operationfield

Parametersfield

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

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 betweenthese fields.

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

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 Chapter 4, Slide 10Figure 4-03b

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 Chapter 4, Slide 11Figure 4-03c

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 Chapter 4, Slide 12Figure 4-04a

Two ways to continue a JCL statement on more than oneline

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 Chapter 4, Slide 13Figure 4-04b

Two ways to code comments in a jobThe 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 Chapter 4, Slide 14Figure 4-05a

The syntax of the JOB statement//jobname JOB [ accounting-information ] [,programmer-name ] [ ,MSGCLASS=class ] [ ,MSGLEVEL=(stmt,msg) ] [ ,NOTIFY=user-id ]

Explanationaccounting-information Specifies an account number or other accounting 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 user to be notified when the job completes.

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

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 genericJOB statement//MM01XXXX JOB 36512,'R MENENDEZ',// MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=MM01

Murach’s OS/390 and z/OS JCL Chapter 4, Slide 16Figure 4-06

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 Chapter 4, Slide 17Figure 4-07

Five JOB statements that use the programmer nameparameter

//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 jobcompletes17.35.12 JOB02169 $HASP165 MM01B ENDED AT DDC1NJE MAXCC=0 CN(INTERNAL)

***

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

The syntax of the MSGCLASS parameterMSGCLASS=class

Explanationclass 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 atJES initialization.

The syntax of the MSGLEVEL parameterMSGLEVEL=(stmt,msg)

Explanationstmt 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.

msg 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 Chapter 4, Slide 19Figure 4-08b

A JOB statement with both the MSGCLASS andMSGLEVEL parameters

//MM01A JOB 36512,'R MENENDEZ',MSGCLASS=X,MSGLEVEL=(0,0)

MSGCLASS and MSGLEVEL are typically coded together on aJOB statement.

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

The syntax of the EXEC statement//stepname EXEC PGM=program-name [ ,PARM=information ]

ExplanationPGM Specifies the name of the program to be executed for this job step.PARM 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 Chapter 4, Slide 21Figure 4-09b

Examples of the EXEC statement

An EXEC statement that executes program PAY5B10 in stepPAYLIST//PAYLIST EXEC PGM=PAY5B10

An EXEC statement that passes a parameter value ofLINECT=0050 to program IEBDG//DATAGEN EXEC PGM=IEBDG,PARM='LINECT=0050'

An EXEC statement that passes three parameters to programHEWL//LINKED EXEC PGM=HEWL,PARM='LET,MAP,XREF'

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

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...) ]

ExplanationDSNAME 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 Chapter 4, Slide 23Figure 4-10b

Examples of the DD statementA 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 Chapter 4, Slide 24Figure 4-11a

The syntax of the DSNAME parameter{DSNAME} = {data-set-name}

{DSN} {data-set-name(member)}

Different ways to code the DSNAME parameterA 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 Chapter 4, Slide 25Figure 4-11b

Reserved ddnames used by the operating systemJCBIN BCBLOCK JCBTAB JESInnnn JESJCL JESJCLIN

JESMSGLG JESYSMSG JOBCAT JOBLIB JOURNAL JST

JS3CATLG J3JBINFO J3SCINFO J3STINFO STCINRDR STEPCAT

STEPLIB SYSABEND SYSCHK SYSCKEOV SYSIN 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 Chapter 4, Slide 26Figure 4-12a

The syntax of the DISP parameterDISP=(status,normal-disp,abnormal-disp)

StatusNEW The data set does not exist and should be created.OLD The data set exists and should be allocated for exclusive use.SHR The data set exists and should be allocated for shared use.MOD 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 dispositionDELETE 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.PASS Normal disposition only. The data set is retained for use by a later job

step.

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

DISP parameter default valuesstatus If omitted, NEW is assumed.normal disposition Depends on the value specified or assumed for status: if NEW,

normal disposition is DELETE; if OLD, SHR, or MOD, normaldisposition is KEEP.

abnormal disposition Takes on the value specified or assumed for normal disposition.

Examples of the DISP parameterThe data set is allocated for shared access, and the normaland abnormal dispositions default to KEEPDISP=SHR

The new data set is cataloged if the job step ends normally;otherwise, it’s deletedDISP=(,CATLG,DELETE)

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

The syntax of the UNIT parameter {group-name}UNIT= {device-type} {device-number}

Explanationgroup-name Specifies a group name that identifies devices that belong to

categories set up by the installation. SYSDA and TAPE arecommonly used group names. SYSDA typically refers to any DASDunit that’s available for public use, and TAPE refers to any availabletape drive.

device-type Specifies a device by its machine type or model. For example, if youspecify UNIT=3390, a 3390 device is used.

device-number Specifies a device by a three- or four-digit hexadecimal address. Afour-digit number must be preceded by a slash (/), as in UNIT=/2301.

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

The syntax of the VOLUME parameter{VOLUME=}SER=serial-number

{VOL=}

Explanationserial-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 VOLUMEparameters//INVMAST DD DSNAME=MM01.INVNTORY.MASTER,DISP=(NEW,CATLG),// UNIT=SYSDA,VOL=SER=MPS8BV,...

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

The syntax of the SPACE parameterSPACE= (unit,(primary-qty,secondary-qty[,dir]))

Explanationunit 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.

primary-qty Specifies the number of units to be initially allocated to the file.secondary-qty Specifies the number of units to be allocated to each secondary extent.dir Specifies the number of directory blocks to allocate for a partitioned data

set.

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

Examples of the SPACE parameterExample 1SPACE=(CYL,(4,1,5))

Primary: 4 cylinders

Secondary: 1 cylinder

Directory: 5 blocksExample 2SPACE=(TRK,(5,2))

Primary: 5 tracks

Secondary: 2 tracksExample 3SPACE=(800,(500,100))

Primary: 500 800 byte blocks

Secondary: 100 800 byte blocks

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

The syntax of the DCB parameterDCB=(option,option...)

Commonly used DCB optionsDSORG=x Specifies the data set’s organization, as follows:

PS Physical sequentialPO PartitionedDA DirectIS Indexed sequential

RECFM=x Specifies the format of the file’s records, as follows:F Fixed length, unblockedFB Fixed length, blockedV Variable length, unblockedVB Variable length, blockedVBS Variable length, blocked, spannedU Undefined

LRECL=n Specifies the length of the file’s records.BLKSIZE=n 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 Chapter 4, Slide 33Figure 4-15b

Examples of the DCB parameterA DCB parameter for a sequential file with fixed-lengthrecords of 133 bytesDCB=(DSORG=PS,RECFM=F,LRECL=133)

DD parameters for a file with variable-length records upto 500 bytes longRECFM=VB,LRECL=500

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

The syntax of the DD statement for instream datasets

//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 delimiterstatement 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 Chapter 4, Slide 35Figure 4-16b

Two examples of coding instream dataExample 1//INVTRAN DD *A00101005995CH445A00103010030CH445A00272001950CJ550/*

Example 2//SYSIN DD DATA,DLM=##//INVTRAN DD *A00101005995CH445A00103010030CH445A00272001950CJ550/*##

Note: The shading indicates the records that are processed as data for the instreamdata set.

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

The syntax of the DD statement for SYSOUT data//ddname DD SYSOUT=x

ExplanationSYSOUT Specifies a one-character output class to be associated with the

SYSOUT data set. If you code an asterisk, the output class specified inthe MSGCLASS parameter of the JOB statement is used.

Two ways to code the SYSOUT parameterA JES SYSOUT file with an output class of A//SYSPRINT DD SYSOUT=A

A JES SYSOUT file with an output class that defaults tothe output class specified by MSGCLASS in the JOBstatement//INVRPT DD SYSOUT=*

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

System flowchart for the transaction-postingapplication

Customertransactions

Customermaster file

Errortransactions

Transactionjournal

Error listing

Postcustomer

transactions(CM3000)

Transactionsummary

report

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

Data set requirements for the transaction-postingapplicationddname Data set name

CUSTTRAN MM01.CUSTOMER.TRANS

CUSTMAST MM01.CUSTOMER.MASTER

ERRTRAN MM01.CUSTOMER.TRANS.ERRS

TRANJRNL (SYSOUT data set)

TRANSUM (SYSOUT data set)

ERRLIST (SYSOUT data set)

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

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 Chapter 4, Slide 40Figure 4-19a

The job control requirements for a report-preparationapplication

Sort by invoicewithin customer

(SORT)

Extractdunning data

(AR7100)

Prepare ATBand overdueinvoice report

(AR7200)

Sort by invoice,customer,

state(SORT)

Prepare XREFreport andstatements(AR7300)

AR master fileCustomermaster file

Dunning fileSorted

dunning file

SortedAR master file

Aged trial balancereport

Overdue invoicedreport

StatementsCross reference

report

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

Data set requirements for the programs invoked bythe report-preparation applicationStep name Program ddname Data set nameSORT1 SORT SYSOUT (SYSOUT data set)

SORTIN MM01.ACCOUNT.MASTER

SORTOUT MM01.ACCOUNT.MASTER.SORT

SORTWK01 (temporary work file)

SYSIN (instream data set)

AR7100 AR7100 ARSORT MM01.ACCOUNT.MASTER.SORT

CUSTMAST MM01.CUSTOMER.MASTER

DUNNING MM01.DUNNING.FILE

AR7200 AR7200 DUNNING MM01.DUNNING.FILE

ATB (SYSOUT data set)

OVERDUE (SYSOUT data set)

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

Data set requirements for the programs invoked bythe report-preparation application (continued)Step name Program ddname Data set nameSORT2 SORT SYSOUT (SYSOUT data set)

SORTIN MM01.DUNNING.FILE

SORTOUT MM01.DUNNING.FILE.SORT

SORTWK01 (temporary work file)

SYSIN (instream data set)

AR7300 AR7300 DUNSORT MM01.DUNNING.FILE.SORT

XREF (SYSOUT data set)

STMTS (SYSOUT data set)

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

The JCL for the report-preparation application1 //MM01RP JOB 36512,'A PRINCE',MSGCLASS=X,MSGLEVEL=(1,1),

// NOTIFY=MM032 //SORT1 EXEC PGM=SORT3 //SYSOUT DD SYSOUT=*4 //SORTIN DD DSNAME=MM01.ACCOUNT.MASTER,DISP=SHR5 //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)6 //SORTWK01 DD UNIT=SYSDA,VOL=SER=MPS800,

// SPACE=(CYL,(1,1))7 //SYSIN DD * SORT FIELDS=(16,5,CH,A,1,5,CH,A) /*8 //AR7100 EXEC PGM=AR71009 //ARSORT DD DSNAME=MM01.ACCOUNT.MASTER.SORT,DISP=(OLD,DELETE), // UNIT=SYSDA,VOL=SER=MPS80010 //CUSTMAST DD DSNAME=MM01.CUSTOMER.MASTER,DISP=SHR11 //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 Chapter 4, Slide 44Figure 4-20b

The report-preparation application (continued)12 //AR7200 EXEC PGM=AR720013 //DUNNING DD DSNAME=MM01.DUNNING.FILE,DISP=OLD, // UNIT=SYSDA,VOL=SER=MPS80014 //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=*