Sie sind auf Seite 1von 44

Chapter 4

The basics of
Job Control Language

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

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

Murachs
OS/390 and
z/OS JCL

Chapter 4,
Slide 3

Common job control language statements


JOB
EXEC

Identifies a job and supplies accounting 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.

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

Murachs
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
//

Murachs
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
//

Murachs
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 theres at least one blank space between
these fields.

Murachs
OS/390 and
z/OS JCL

Figure 4-02b

Chapter 4,
Slide 8

Positional parameters
//MM01A
//MM01A

JOB
JOB

36512,'R MENENDEZ'
,'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)

Murachs
OS/390 and
z/OS JCL

DD

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

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.

Murachs
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

Murachs
OS/390 and
z/OS JCL

DSNAME=MM01.DUNNING.FILE,DISP=(NEW,KEEP),
UNIT=SYSDA,VOL=SER=MPS800,
SPACE=(CYL,(1,1)),
DCB=(DSORG=PS,RECFM=FB,LRECL=400)

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

Murachs
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
Identifies the owner of the job.
MSGCLASS
Specifies a single-character output class to be used for the jobs
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.

Murachs
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

Murachs
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

Doesnt start in column 3

//(ABCDE)

Starts with an invalid character

//PR_001

Contains an invalid character

Murachs
//PAYMENT805
OS/390 and
z/OS JCL

Contains more than 8 characters


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)

***

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

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

Murachs
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 thats 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 linkedited 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 programdependent.

Murachs
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

Murachs
OS/390 and
z/OS JCL

EXEC PGM=HEWL,PARM='LET,MAP,XREF'

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 files data set name.
DISP
Specifies the files 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 files data control block.

Murachs
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
//
//
//

Murachs
OS/390 and
z/OS JCL

DD

DSNAME=MM01.ACCOUNT.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.

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

Murachs
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.
PASS
Normal disposition only. The data set is retained for use by a later job
step.

Murachs
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, its deleted
DISP=(,CATLG,DELETE)

Murachs
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 thats 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.

Murachs
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
//

Murachs
OS/390 and
z/OS JCL

DD

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

Murachs
OS/390 and
z/OS JCL

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.

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

Murachs
OS/390 and
z/OS JCL

Primary:
Secondary:

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

Murachs
OS/390 and
z/OS JCL

Specifies the data sets organization, as follows:


PS
Physical sequential
PO
Partitioned
DA
Direct
IS
Indexed sequential
Specifies the format of the files 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 files records.
Specifies the length of the files blocks; for FB, BLKSIZE is normally a
multiple of LRECL.

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

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

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

Murachs
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

Murachs
OS/390 and
z/OS JCL

DD

SYSOUT=*

Figure 4-17

Chapter 4,
Slide 36

System flowchart for the transaction-posting


application

Murachs
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

Murachs
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

Murachs
OS/390 and
z/OS JCL

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

Figure 4-18c

Chapter 4,
Slide 39

The job control requirements for a report-preparation


application

Murachs
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

Program ddname Data set name

SORT1

SORT

SYSOUT

(SYSOUT data set)

SORTIN

MM01.ACCOUNT.MASTER

SORTOUT

MM01.ACCOUNT.MASTER.SORT

SORTWK01 (temporary work file)


AR7100

AR7100

SYSIN

(instream data set)

ARSORT

MM01.ACCOUNT.MASTER.SORT

CUSTMAST MM01.CUSTOMER.MASTER
AR7200

Murachs
OS/390 and
z/OS JCL

AR7200

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

Murachs
OS/390 and
z/OS JCL

AR7300

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

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

Murachs
OS/390 and
z/OS JCL

Figure 4-20b

Chapter 4,
Slide 44

Das könnte Ihnen auch gefallen