Revised by Barry Cunningham
Information Systems and Computing
University of California
Santa Barbara, California 93106
PREFACE
This standard is defined within the requirements of OS/390. Some
considerations are that the jobs which result from this standard:
These guidelines will apply to all jobs created, modified, imported, or assumed by the Information Systems Office.
The objectives of the Job Control Language Standard are correctness, maintainability, clarity, and simplicity.
Note: We have attempted to write a useful JCL standard, but it can be improved. Please submit suggestions, to Terry Malosh.
GENERAL SYNTAX
IBM OS OS/390 job control language (JCL) control statements and IBM OS utility
control statements allow free format coding within columns one through seventy
one, optional or required continuation notations in column seventy two,
and optional line numbering in columns seventy three through eighty.
Continuation
The continuation notations in column 72 shall NOT be used except in those
specific instances where utility control statements require it.
Continuation will be implied by a comma following an operand.
Line Numbering
Jobs will not be stored with line numbers. Line numbering may cause
problems if data lines are numbered.
Statement Identification
The JCL control statements start with a "//" in columns one and two, with
the exception of the delimiter control statements which start with a "/*"
in columns one and two and will only be used for JES2 control statements.
Comment statements are further identified by a "//*" in columns one
through three. The //*UQ comment statement is also identified as a
Com-Plete control statement.
Field Justification
The remainder of the control statements consist of four fields: Name,
Operation, Operand, and Comment. Name, the first field, is left justified
in column three in JCL and JES2. It is typically absent in utility control
statements, but if present may be left justified in column two. Operation,
the second field, is right justified in column fourteen. Very few exceptions
to this alignment are allowed; however, a DD statement may require a
stepname and a DD name with a combined length which will not allow right
justification in column fourteen. Operand, the third field, is left
justified in column sixteen of each line of the statement. Comment, the
fourth field, must be separated from the preceding field by at least
one space. Additional spaces preceding the comment may improve readability.
Unauthorized Statements
JES3 and HASP statements are unnecessary and may not be used.
Most JES2 statements may not be used because OS/390 control statements may be used instead. OS/390 control statements are preferred over JES2 control statements.
The following statements may not be used:
The following statements may be used for each ordinary job step:
THE JOB STATEMENT
The JOB statement is used to pass accounting information and control
parameters to the OS/390 operating system and JES2 spooling system.
The Job Name
The job statement is identified by a "//" in columns one and two, followed
by a job name, and the word JOB. The job name will be left justified in
column three. The word JOB will be in columns twelve through fourteen.
+------------------------------------------------+
[ 0 1 1 ]
[ 1234567890123456 ]
[ ]
[ //SRPRJ012 JOB ( ]
[ //CRGEJ004 JOB ( ]
[ //ANSMI47 JOB ( ]
[ //HEJON08 JOB ( ]
[ //ISS02050 JOB ( ]
[ //ISS01588 JOB ( ]
[ ]
[ Figure 1. Job Name ]
+------------------------------------------------+
There will be three styles of job names. The first style is based on the
system and subsystem with which the job is associated. The system style
job name is in a "ssuuJnnn" format where the "ss" is the system
abbreviation, the "uu" is the subsyste m abbreviation, and the "nnn" is a
three digit number assigned by the project leader responsible for the
system. For example, job twelve of system "SR" and subsystem "PR" would
be assigned a system style name of "SRPRJ012".
+--------------------------------------------------+
[ 0 1 1 ]
[ 1234567890123456 ]
[ ]
[ //SRPRJ012 JOB ( ]
[ //CRGEJ004 JOB ( ]
[ ]
[ Figure 2. System Style Job Name ]
+--------------------------------------------------+
The second style is based on the user who submits the job. The user style
job name is in a "uuuuuunn" format where the "uuuuuu" is the user
identification, and the "nn" is a two digit number taken from the seconds
portion of the operating system timer. For example, a job for user
"ANSMI", "Alicia N. Smith", where the system timer was sampled during the
forty seventh second of the minute would have a user style name of
"ANSMI47".
+----------------------------------------------+
[ 0 1 1 ]
[ 1234567890123456 ]
[ ]
[ //ANSMI47 JOB ( ]
[ //HEJON08 JOB ( ]
[ ]
[ Figure 3. User Style Job Name ]
+----------------------------------------------+
The system style job name will be used as the job name of the JOB
statement of most jobs associated with an application system, but the user
style job name may be used in those jobs associated an application system
where many copies of the same job, submitted by different users, might be
in the operating and spooling system at one time. The system style name
should appear in the comments at the beginning of a job when the user
style name is used as a job name of the JOB statement.
+------------------------------------------------------+
[ 0 1 1 ]
[ 1234567890123456 ]
[ ]
[ //ISS02550 JOB ( ]
[ //ISS01588 JOB ( ]
[ ]
[ Figure 4. Converted MVT Style Job Name ]
+------------------------------------------------------+
The third style reflects the MVT ISO convention of ISSnnnnn. Most jobs
which were moved from MVT will retain this style.
The Positional Parameters
The next parameters in the JOB statement are the positional JES2
accounting information parameters starting in column sixteen. These
parameters are enclosed by parentheses and separated by commas (without
imbedded blanks). The commas identify the param eter's relative positions
and must be present up to the last positional parameter stated.
The following positional parameters may not be used:
+-----------------------------------------------------------------+ [ 0 1 1 2 2 3 ] [ 123456789012345678901234567890 ] [ ] [ //SRPRJ012 JOB (IS00RWK ] [ //CRGEJ004 JOB (RP00STAT ] [ //ANSMI47 JOB (AN05PAYM ] [ //HEJON08 JOB (NP00LAB ] [ ] [ Figure 5. Pano parameter ] +-----------------------------------------------------------------+
+---------------------------------------------+ [ 0 1 1 2 2 3 ] [ 123456789012345678901234567890 ] [ ] [ //SRPRJ012 JOB (IS00RWK,18BK ] [ //CRGEJ004 JOB (RP00STAT,48EM ] [ //ANSMI47 JOB (AN05PAYM,3AS ] [ //HEJON08 JOB (NP00LAB,64HJ ] [ ] [ Figure 6. Room parameter ] +---------------------------------------------+
+---------------------------------------------+ [ 0 1 1 2 2 3 ] [ 123456789012345678901234567890 ] [ ] [ //SRPRJ012 JOB (IS00RWK,18BK) ] [ //CRGEJ004 JOB (RP00STAT,48EM,,50) ] [ //ANSMI47 JOB (AN05PAYM,3AS,,5) ] [ //HEJON08 JOB (NP00LAB,64HJ,,120) ] [ ] [ Figure 7. Lines parameter ] +---------------------------------------------+
+----------------------------------------------------------------------------+ [ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ] [ 123456789012345678901234567890123456789012345678901234567890123456789012 ] [ ] [ //SRPRJ012 JOB (IS00RWK,18BK) ] [ //CRGEJ004 JOB (RP00STAT,48EM,,50,3500) ] [ //ANSMI47 JOB (AN05PAYM,3AS,,5) ] [ //HEJON08 JOB (NP00LAB,64HJ,,120,9999) ] [ ] [ Figure 8. Cards parameter ] +----------------------------------------------------------------------------+The Cards parameter is infrequently used because the OS/390 and JES2 environment does not have a card punch.
Occasionally information is transmitted from the OS/390 and JES2 environment
to another node (using the system output punched card format of eighty
characters per record). An example of this is the use of the TSO TRANSMIT
command in a batch job to transmit punched card records to another node.
It is recommended that you use the CARDS keyword parameter of the
/*JOBPARM statement (which will allow for up to 9,999,999 punched cards).
The Form Parameter
The sixth positional parameter is Forms and specifies the printerform to
be used for all output (JCL, messages, output, etc.). Note: usage of the
form parameter is discouraged in the job card.
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //CRGEJ004 JOB (RP00STAT,48EM,,50,3500,3410) ]
[ ]
[ Figure 9. Form parameter ]
+----------------------------------------------------------------------------+
The Copies Parameter
The seventh positional parameter is Copies and specifies the number of
copies of all printer output (JCL, messages, output, etc.). Note: usage
of the copies parameter in the job card is discouraged.
+-----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //CRGEJ004 JOB (RP00STAT,48EM,,50,3500,3410,2) ]
[ ]
[ Figure 10. Copies parameter ]
+-----------------------------------------------------------------------------+
The Programmer's Name Parameter
The Programmer's name parameter follows the right parenthesis of the
positional parameters. The Programmer's Name parameter is used to specify
the user's name for the distribution of printed output. It is preceded by
a comma, is enclosed within apostrophes, and may be up to twenty
characters long. Within the apostrophes, the last name is first, followed
by a comma, and the remainder of the name.
To represent Harry E. Jones, we would key the following:
),'JONES,HARRY E.'
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
{ ]
[ //SRPRJ012 JOB (IS00RWK,18BK),'KUNTZ,ROBERT W.' ]
[ //CRGEJ004 JOB (RP00STAT,48EM,,50),'MARTINEZ,ESTABAN E.' ]
[ //ANSMI47 JOB (AN05PAYM,3AS,,5),'SMITH,ALICIA N.' ]
[ //HEJON08 JOB (NP00LAB,64HJ,,120),'JONES,HARRY E.' ]
[ ]
[ Figure 11. JOB statement positional parameters ]
+----------------------------------------------------------------------------+
The Keyword Parameters
The keyword parameters follow the Programmer's Name parameter. Each
keyword parameter is preceded by a comma.
The following keyword parameters may not be used:
CLASS Adabas Cartridge Reel
-------- ---------------------------
N No 0 0
T No 0 1
C No 1 0
B No 1 1
F No 2 0
P No 2 1
J No 3 0
Q No 0 2
R No 0 3
A Read 0 0
D Read 1 0
G Read 2 0
K Read 3 0
U Update 0 0
W Update 0 1
X Update 0 2
Y Update 0 3
E Update 1 0
H Update 2 0
L Update 3 0
S All other cases
"No" indicates the job does not use Adabas.
"Read" indicates the job only reads Adabas files.
"Update" indicates the job may read OR update Adabas files AND uses the
number of cartridge or reel tapes drives available to the CLASS
keyword parameter.
Note: When using class "S", please use a SETUP card to tell the
operator how many tape drives of each type will be needed.
+--------------------------------------------+ [ CLASS=A ] [ CLASS=N ] [ CLASS=U ] [ ] [ Figure 12. CLASS parameter ] +--------------------------------------------+
+---------------------------------------+ [ COND=(0,NE) ] [ ] [ Figure 13. COND parameter ] +---------------------------------------+
The MSGCLASS keyword parameter can be useful for holding system output after execution or for discarding system output. The MSGCLASS will always be explicitly coded, and will usually be MSGCLASS=A.
A normal, do not hold job. S place system output in hold for release by user. Discarded after 3 day. X place system output in hold for release by user. Discarded after 10 days. Z throw system output away after execution.NOTE: MSGCLASS=X causes VM/XA to hold the output when routed to UCSBVM.
+---------------------------------------------+ [ MSGCLASS=A ] [ MSGCLASS=S ] [ MSGCLASS=X ] [ MSGCLASS=Z ] [ ] [ Figure 14. MSGCLASS parameter ] +---------------------------------------------+
12 to 15 high priority, pays a surcharge.
8 to 11 regular priority, default, normal charge, weekday daytime.
4 to 7 low priority, receives a discount, after 6:00 PM and weekends.
0 to 3 deferred priority, receives a bigger discount, runs when they
get to it, no guarantee of overnight processing.
+-------------------------------------------+
[ PRTY=15 ]
[ PRTY=11 ]
[ PRTY=7 ]
[ PRTY=3 ]
[ ]
[ Figure 15. PRTY parameter ]
=-------------------------------------------+
The default is for no time maximum, so jobs will never die on time unless
a time parameter is supplied.
+--------------------------------------+
[ TIME=5 ]
[ TIME=(2,30) ]
[ TIME=(0,15) ]
[ TIME=(,3) ]
[ ]
[ Figure 16. TIME parameter ]
+--------------------------------------+
The TYPRUN Parameter
The TYPRUN keyword parameter may be used to request special processing.
This could be useful when testing a job, when scheduling a series of jobs,
or when you wish to view the system output before it is printed.
COPY copy to system output
HOLD hold job before execution
JCLHOLD hold before JCL processing
SCAN scan for syntax errors
+----------------------------------------------------------+
[ TYPRUN=COPY ]
[ TYPRUN=HOLD ]
[ TYPRUN=JCLHOLD ]
[ TYPRUN=SCAN ]
[ ]
[ Figure 17. TYPRUN parameter ]
+----------------------------------------------------------+
See "The MSGCLASS Parameter" for
another way of requesting special processing.
The USER Parameter
The USER and PASS parameters are needed because we use RACF protection.
They are
supplied by the system for any jobs submitted under Com-Plete
(UEDIT and Natural). However, they may have to be supplied by the user
when submitting from Wylbur by using 'run racuser=fmlll racpass=pppp'.
They can also be supplied as options to the MVSFILE command in VM with USE
and PAS. If you use the MVSRUN command in VM, the USER and PASS parameters
need to be stored in the JOB card in the appropriate OS/390 library.
+--------------------------------------------+
[ USER=userid ]
[ ]
[ Figure 18. USER parameter ]
+--------------------------------------------+
The PASS Parameter
The USER and PASS parameters are needed because we use RACF protection.
They are supplied by the system for any jobs submitted under Com-Plete
(UEDIT and Natural). However, they may have to be supplied by the user
when submitting from Wylbur by using 'run racuser=fmlll racpass=pppp'.
They can also be supplied as options to the MVSFILE command in VM with USE
and PAS. If you use the MVSRUN command in VM, the USER and PASS
parameters need to be stored in the JOB card in the appropriate OS/390 library.
+-----------------------------------------+
[ PASS=password ]
[ ]
[ Figure 19. PASS parameter ]
+-----------------------------------------+
THE JOBPARM STATEMENT
The JOBPARM statement is needed when using the TRANSMIT command in batch
to transmit data to another system. The sata is sent as 'cards' and the
system default to terminate a job punching cards is 1000. When sending a
lot of data, this parameter needs to be set higher.
+-----------------------------------------------+
[ /*JOBPARM CARDS=100000 ]
[ ]
[ Figure 20. JOBPARM statement ]
+-----------------------------------------------+
THE UQ STATEMENT
The UQ statement is used to inform Com-Plete of the restrictions placed on
the use of certain keyword arguments for the Com-Plete UQ utility.
It is identified by "//*UQ" in columns one through five. The operation starts in column sixteen. The operation may consist of one of the following:
+-----------------------------------------------------------------------------+ [ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ] [ 123456789012345678901234567890123456789012345678901234567890123456789012 ] [ ] [ //*UQ USERID CHET03 ] [ //*UQ USERID CHET03,ANG01 ] [ //*UQ ACCOUNT AB02SMITH ] [ //*UQ ACCOUNT BX99WAGNRE,IM00JONES ] [ //*UQ ALLOW ] [ ] [ Figure 21. UQ statement ] +-----------------------------------------------------------------------------+
THE ROUTE PRINT STATEMENT
NOTE: The use of the OUTPUT statement rather than the ROUTE PRINT
statement is encouraged, as the OUTPUT statement has greater flexibility.
The ROUTE PRINT statement is used to specify the destination of SYSOUT datasets that are not routed by a DEST parameter on an OUTPUT card. The destination may be a JES printer, RSCS printer, or another user specified by node and userid.
This statement is identified by "/*ROUTE PRINT" in columns 1 thru 14 and the printdestination starting in column 16. The format for destinations is either UCSBMVS.Rnnn for JES printers or node.userid, or node.printername. Columns beyond 70 should not be used. There can only be one destination on a ROUTE PRINT statement.
The ROUTE statement is used in some systems because the job deck
containing it was brought over by the MVT-to-MVS conversion team. To
simplify the conversion effort and user training, this statement was
retained. The OUTPUT statement is, however, the preferred method for
routing system output.
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ /*ROUTE PRINT UCSBMVS.R1 ]
[ /*ROUTE PRINT UCSBMVS.R0 ]
[ /*ROUTE PRINT UCSBVM.IS00KS ]
[ ]
[ Figure 22. ROUTE PRINT statement ]
+----------------------------------------------------------------------------+
THE MESSAGE STATEMENT
The MESSAGE statement is used to inform the operator of the job's special
requirements. It is identified by "/*MESSAGE" in columns one through
nine. The operation is left justified in column sixteen.
The MESSAGE statement places the job in hold, and should be used only when
other control statements cannot convey necessary information to the
operator or system. The MESSAGE statement may be used to inform the
operator that the job cannot be run until a particular time. Then the
operand might appear as follows:
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ /*MESSAGE HOLD UNTIL 3:00 AM, FRIDAY, MARCH 23 ]
[ ]
[ Figure 23. MESSAGE statement ]
+----------------------------------------------------------------------------+
It might also be used to provide information to the operator about printer
form alignment on a one-time basis, when permanent form setup instructions
are not available.
THE SETUP STATEMENT
The SETUP statement is used to inform the operator to "enable writing" on
one or more tape volumes.
In OS/390, when a tape mount message is displayed on the operator's console, all of the SETUP statements in the job are displayed also. The presumption is that tapes will be mounted with "writing disabled" unless the volume serial numbers appear in the SETUP statement with the notation "WRITE ENABLE". Therefore, tapes that will only be read need not appear in a SETUP statement.
Tape cartridges are normally stored and mounted with the "file protect selector" set to the "file protected" position. The "file protect selector" is set to the "file unprotected" position to "write enable" it in response to a SETUP statement. Tape reels are normally stored and mounted with the "write enable ring" removed. A "write enable ring" is placed in the tape reel to "write enable" it in response to a SETUP statement.
OS/390 normally has the tape cartridge drives available or "VARIED ON LINE" to it. The tape reel drives are not normally available to OS/390 and must be "VARIED OFF LINE" from another system and "VARIED ON LINE" to OS/390 before they are available to a OS/390 job.
The SETUP statement is identified by "/*SETUP" in columns one through seven. The notation "WRITE ENABLE" appears in columns sixteen through twenty seven. The first volume serial number starts in column twenty nine. Additional volume serial numbers may follow, separated by commas. Characters beyond column seventy will not be seen by the operator because of implementation restrictions. It is recommended that columns beyond seventy not be used.
When using CLASS S, use a SETUP card to tell the operator how many of each type ofdrive will be needed.
Up to six SETUP statements are allowed per job. Do not use two if one will do.
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ /*SETUP WRITE ENABLE AM2047 ]
[ /*SETUP WRITE ENABLE T02149,T02631 ]
[ /*SETUP WRITE ENABLE AM2135,AM2241,AM2412,T02196,T02349,T02256 ]
[ /*SETUP 1(REEL),2(CART) ]
[ ]
[ Figure 24. SETUP statement ]
+----------------------------------------------------------------------------+
THE COMMENT STATEMENT
The COMMENT statement is used to inform the user of the functions the job
performs, the functions the job step performs, how the job might be
modified, what must be done before and after the job is run, and so forth,
so the user might successfully submitthe job.
The COMMENT statement is identified, to the system, by a "//*" in columns one through three. The COMMENT statement does not have an operation or operand. It will have a "//* ** " in columns one through seven for easy visual identification. The text of the COMMENT statement may be anywhere within columns eight through seventy one. A single COMMENT statement, or a series of COMMENT statements with text in columns eight through seventy one, must be preceded by and followed by a COMMENT statement without text.
A comment statement containing the system style job name should appear at the beginning of any job which uses the user style job name as the job name of the JOB statement.
See "The Job Name" for a description of system style, user style, and MVT style job names.
COMMENT statements should appear at the beginning of the job and should
explain the function the job performs. More COMMENT statements may appear
before each EXEC statement in a multiple step job to explain the function
each following job step performs. A COMMENT statement may precede a DD
statement to identify the file with a translation of the DDNAME and DSN.
Additional COMMENT statements may appear at those points where the user
must change a JCL statement or insert control information or data.
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //* ** ]
[ //* ** PRINT THE MECHANICS AUDIT REPORT IN VEHICLE SEQUENCE. ]
[ //* ** ]
[ //* ** ]
[ //* ** SEE FORM 129C FOR ADDITIONAL INSTRUCTIONS. ]
[ //* ** COLUMNS 1-6 PAYROUT DATE MMDDYY. ]
[ //* ** COLUMNS 7-15 OPTIONAL STARTING SOCIAL SECURITY NO. ]
[ //* ** ]
[ ]
[ Figure 25. COMMENT statements ]
+----------------------------------------------------------------------------+
THE OUTPUT STATEMENT
This is the // OUTPUT statement, not the /*OUTPUT statement. The /*OUTPUT
statement may not be used. The // OUTPUT statement is used to specify
system output, SYSOUT, processing options. The // OUTPUT statement is
identified by a "//" in columns one and two, followed by the output name,
and the word OUTPUT. The output name is left justified in column three.
The word OUTPUT will be in columns nine through fourteen.
The Output Name
The output name consists of the word OUT followed by a one or two digit
number. Each output name in a job must be unique.
+-------------------------------------------------+
[ 0 1 1 ]
[ 1234567890123456 ]
[ ]
[ //OUT0 OUTPUT ]
[ //OUT1 OUTPUT ]
[ //OUT23 OUTPUT ]
[ ]
[ Figure 26. Output Name ]
+-------------------------------------------------+
The Keyword Parameters
The keyword parameters will be left justified in column sixteen, and
continued in column sixteen of subsequent lines if necessary.
The following keyword parameters are unnecessary and may not be used.
... with some qualifications.
+--------------------------------------------+ [ CLASS=* ] [ ] [ Figure 27. CLASS Parameter ] +--------------------------------------------+See "The MSGCLASS Parameter" for a description of the valid output classes.
+--------------------------------------------------+ [ COPIES=3 ] [ COPIES=5 ] [ ] [ Figure 28. COPIES parameter ] +--------------------------------------------------+
+----------------------------------------------+ [ DEFAULT=YES ] [ ] [ Figure 29. DEFAULT parameter ] +----------------------------------------------+
+-------------------------------------+ [ DEST=UCSBMVS.R0 ] [ DEST=UCSBMVS.R3 ] [ DEST=UCSBVM.IS00X ] [ ] [ Figure 30. DEST parameter ] +-------------------------------------+
The default FCB indicates 6 lines per inch, 66 lines per page, and the
"TN" print train. The FCB keyword parameter should not be specified if
the default FCB is adequate. The operations group of the Computer Center
should be contacted if you require a new unique FCB. It is the operations
groups custom to assign an FCB name which is the same as the form number,
as specified in the FORMS keyword parameter of the // OUTPUT statement, or
as specified in the forms subparameter of the SYSOUT pa rameter of the DD
statement.
+--------------------------------------------------+
[ FCB=51 ]
[ FCB=108 ]
[ ]
[ Figure 31. FCB parameter ]
+--------------------------------------------------+
The FORMS Parameter
The FORMS keyword parameter specifies the form for printing of system
output data sets referencing the // OUTPUT statement containing the
parameter. It also specifies the forms for printing the system managed data
sets if the JESDS parameter is specified. The form number on the appropriate
DD statements will be used instead of this parameter, when possible.
Regular forms (form 1) is the default and may not be explicitly stated.
+-------------------------------------+
[ FORMS=8 ]
[ FORMS=3279 ]
[ ]
[ Figure 32. FORMS parameter ]
+-------------------------------------+
The JESDS Parameter
The JESDS keyword parameter specifies the processing of system managed
data sets by the // OUTPUT statement containing the parameter. The
JESDS=ALL will ordinarily be used, but usually only on the // OUTPUT
statement with the DEFAULT=YES parameter.
+-----------------------------------------+
[ JESDS=ALL ]
[ JESDS=JCL ]
[ JESDS=LOG ]
[ JESDS=MSG ]
[ Figure 33. JESDS parameter ]
+-----------------------------------------+
THE SYSTEM OUTPUT DD STATEMENT
The system output DD statement is used to specify SYSOUT processing
options, in addition to those processing options specified by the //
OUTPUT statement.
The SYSOUT Parameter
A system output DD statement is one which contains a SYSOUT keyword parameter.
The Class Subparameter
The first positional subparameter of the SYSOUT parameter is Class. The
Class positional parameter specifies the output class for the DD statement
containing the SYSOUT parameter. We will ordinarily code CLASS=(,) in
each system output DD statement. This defaults to the CLASS parameter of
the corresponding OUTPUT statement, or if there is none, to the MSGCLASS
parameter of the JOB statement.
The CLASS=* parameter of the // OUTPUT statement and the Class *
subparameter of the SYSOUT parameter of the DD statement refer to and use
the output class specified in the MSGCLASS parameter.
+-------------------------------------------------+
[ 123456789012345678901234567890 ]
[ ]
[ //SYSPRINT DD SYSOUT=(,) ]
[ //REPRT3X DD SYSOUT=(, ... ) ]
[ ]
[ Figure 34. Class Subparameter ]
+-------------------------------------------------+
See "The MSGCLASS Parameter" for a
description of the valid output classes.
The Program Subparameter
The 2nd positional subparameter of SYSOUT is Program. We do not use this
subparameter.
The Forms Subparameter
The third positional subparameter of the SYSOUT parameter is Forms. The
Forms positional subparameter specifies the form for printing of system
output for the DD statement containing the SYSOUT parameter. Regular
forms (form 1) is the default and may not be explicitly stated.
+------------------------------------------------------------+
[ 0 1 1 2 2 3 ]
[ 123456789012345678901234567890 ]
[ ]
[ //SYSPRINT DD SYSOUT=(,,8) ]
[ //CHECKS DD SYSOUT=(,,3279) ]
[ ]
[ Figure 35. Forms subparameter ]
+------------------------------------------------------------+
The COPIES Parameter
The COPIES keyword parameter specifies the number of copies (1 to 254)
that are to be made of the system output of the DD statement containing
the SYSOUT parameter. (Example: a "3" specifies that three copies of the
system output data set are to be printed). The default is 1 copy and may
not be explicitly stated. The "group-value" subparameters of the COPIES
parameter may not be used.
+----------------------------------------------------+
[ 0 1 1 2 2 3 ]
[ 123456789012345678901234567890 ]
[ ]
[ //SYSPRINT DD SYSOUT=(,),COPIES=3 ]
[ //LISTONE DD SYSOUT=(,),COPIES=5 ]
[ ]
[ Figure 36. COPIES parameter ]
+-----------------------------------------------------+
The DEST Parameter
The DEST keyword parameter of the DD statement may be used to send a
system output data set to a single destination. The Primary and Alternate
Methods are preferred over the use of the DEST keyword parameter on the DD
statement. See "Alternatives for System
Output" for a
description of the system output alternatives. See "The
DEST parameter" for additional destination information.
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //CHECKS DD SYSOUT=(,),DEST=UCSBMVS.R3 ]
[ //ERROR DD SYSOUT=(,),COPIES=3,DEST=UCSBVM.ISOPRT4 ]
[ ]
[ Figure 37. DEST parameter ]
+----------------------------------------------------------------------------+
The FCB Parameter
The FCB keyword parameter of the DD statement specifies the forms control
buffer image to be used to guide the printing of system output data sets.
The FCB keyword parameter of the // OUTPUT statement may be used instead.
See "The FCB Parameter" for
additional information on FCB parameters.
+-----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //PAYMENT DD SYSOUT=(,,51),COPIES=2,DEST=UCSBMVS.R0,FCB=51 ]
[ //INVENT DD SYSOUT=(,,109),DEST=UCSBMVS.R0,FCB=109 ]
[ ]
[ Figure 38. FCB parameter ]
+-----------------------------------------------------------------------------+
The FREE Parameter
JES2 normally schedules all system output data sets for printing at the end of
the job. Consider using the FREE=CLOSE parameter to deallocate, or spin-off,
a system output data set so that JES may print it before the job has finished
execution, and before JES starts to print other portions of the job.
The FREE parameter might be used if a system output data set is closed at a relatively early point in the execution of a job, and it is important to see the information in the data set soon. It might also be used if it is important to see information ina system output data set, so that the user may determine whether or not to print other, perhaps large, portions of the job.
The FREE parameter does separate the system output data set into a system
output "set", with its own JES2 separator sheets. This can be an
inconvenience in distributing printed output, therefore do not use the
FREE parameter unnecessarily.
+-----------------------------------------------------+
[ 0 1 1 2 2 3 ]
[ 123456789012345678901234567890 ]
[ ]
[ //SYSPRINT DD SYSOUT=(,),FREE=CLOSE ]
[ ]
[ Figure 39. FREE parameter ]
+-----------------------------------------------------+
The HOLD Parameter
Consider using the HOLD=YES parameter to hold a system output data set,
for subsequent release by the user. The user may use Com-Plete's UQ
utility to release or cancel it, after examination. This only works with
datasets remaining in OS/390 (not routed to another node).
+-----------------------------------------------------+
[ 0 1 1 2 2 3 ]
[ 123456789012345678901234567890 ]
[ ]
[ //STATRPT DD SYSOUT=(,),HOLD=YES ]
[ ]
[ Figure 40. HOLD parameter ]
+-----------------------------------------------------+
The OUTLIM Parameter
The OUTLIM keyword parameter is used to provide a line kill to the operating
system for DD statement containing the SYSOUT parameter. The OUTLIM parameter
limits the number of logical records in the system output data set. The OUTLIM
parameter may be used for testing. It may not be used for production jobs.
+----------------------------------------------------+
[ 0 1 1 2 2 3 ]
[ 123456789012345678901234567890 ]
[ ]
[ //STATRPT DD SYSOUT=(,),OUTLIM=500 ]
[ ]
[ Figure 41. OUTLIM parameter ]
+----------------------------------------------------+
The OUTPUT Parameter
The OUTPUT keyword parameter is to explicitly associate a system output
data set with an // OUTPUT statement. The OUTPUT parameter is used with
the Alternate Method of system output. See "Alternatives for System
Output" for a description of the system output alternatives.
+-----------------------------------------------+
[ DD SYSOUT=(,),OUTPUT=*.OUT2 ]
[ DD SYSOUT=(,),OUTPUT=(*.OUT3,*.OUT5) ]
[ ]
[ Figure 42. OUTPUT parameter ]
+-----------------------------------------------+
ALTERNATIVES FOR SYSTEM OUTPUT
There are many ways one can deal with system output. In the interest of
simplicity and understanding, we will limit the alternatives.
With either of the two approved alternatives we will have an // OUTPUT
statement with an output name of "OUT0" and with DEFAULT=YES and JESDS=ALL
parameters. Ordinarily, forms and copies will not be specified in this
statement, although they may be used if necessary.
+---------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //OUT0 OUTPUT CLASS=(,),DEFAULT=YES,DEST=UCSBMVS.R0,JESDS=ALL ]
[ //OUT1 OUTPUT CLASS=(,),COPIES=2,DEFAULT=YES,DEST=UCSBMVS.R3,JESDS=ALL ]
[ ]
[ Figure 43. // OUTPUT statement ]
+---------------------------------------------------------------------------+
The Primary Method
The Primary Method will use only one // OUTPUT statement, the "OUT0". The
// OUTPUT statement will be used for all system output for the entire job.
Forms and copies will be specified in the individual system output DD
statements, as needed. If special forms are used, the form is the third
positional subparameter with parentheses of the SYSOUT keyword parameter.
If more than one copy is to be printed, the COPIES keyword parameter will
follow the SYSOUT parameter. The DEST keyword parameter of the DD
statement will not be used.
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //OUT0 OUTPUT CLASS=*,DEFAULT=YES,DEST=UCSBVM.950MPRNT,JESDS=ALL ]
[ ]
[ //SYSPRINT DD SYSOUT=(,) ]
[ //STATS DD SYSOUT=(,,3279),COPIES=3 ]
[ //REPORT DD SYSOUT=(,),COPIES=4 ]
[ //STATS DD SYSOUT=(,,2238) ]
[ ]
[ Figure 44. Primary Method ]
+----------------------------------------------------------------------------+
For jobs moved from MVT, the destination will usually be indicated by a
/*ROUTE PRINT statement. The SYSOUT statement will be constructed as
shown above. There will be no // OUTPUT statement.
The Alternate Method
The Alternate Method allows for greater flexibility in directing system
output to multiple destinations. The Alternative Method will use multiple
// OUTPUT statements. The "OUT0" // OUTPUT statement would still be used
for all of the system output that isn't defined by the other // OUTPUT
statements. Additional // OUTPUT statements will be defined to specify forms,
copies, and destinations, as necessary. Forms, copies, and destinations will
not be specified in the DD statements, but rather the DD statements will
explicitly reference an // OUTPUT statement via the OUTPUT parameter.
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //OUT0 OUTPUT CLASS=*,DEFAULT=YES,DEST=UCSBMVS.R4,JESDS=ALL ]
[ //OUT1 OUTPUT CLASS=*,DEST=UCSBMVS.R0,FORMS=3279,COPIES=3 ]
[ //OUT2 OUTPUT CLASS=*,DEST=UCSBVM.PERSNL1,COPIES=3 ]
[ //OUT3 OUTPUT CLASS=*,DEST=UCSBMVS.R0,FORMS=2238 ]
[ ]
[ //SYSPRINT DD SYSOUT=(,) ]
[ //STATS DD SYSOUT=(,),OUTPUT=*.OUT1 ]
[ //REPORT DD SYSOUT=(,),OUTPUT=(*.OUT0,*.OUT2) ]
[ //STATS DD SYSOUT=(,),OUTPUT=*.OUT3 ]
[ ]
[ Figure 45. Alternate Method ]
+----------------------------------------------------------------------------+
One common use of this method is to have one //OUTPUT statement for the
JES logs, where CLASS=Z (suppress print) and another //OUTPUT statement
for the other print datasets.
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //OUT0 OUTPUT CLASS=Z,DEFAULT=YES,DEST=UCSBMVS.R0,JESDS=ALL ]
[ //OUT1 OUTPUT CLASS=*,DEST=UCSBMVS.R0 ]
[ ]
[ Figure 46. Alternate Method For Separating System Output ]
+----------------------------------------------------------------------------+
THE EXEC STATEMENT
The EXEC statement is used to identify the program or procedure to be
executed and to tell the system how to process the job step.
The Step Name
The EXEC statement has "//" in columns one and two, followed by a stepname
and the word EXEC. The step name will be left justified in column three.
The word EXEC will be in columns eleven through fourteen. The stepname
shall consist of an "S" followed by a single digit or double digit number.
For example, the first "EXEC" statement would have a stepname of "S1",
while the twelfth would have a stepname of "S12".
+----------------------------------------------+
[ 0 1 1 ]
[ 1234567890123456 ]
[ ]
[ //S1 EXEC ]
[ //S12 EXEC ]
[ ]
[ Figure 47. Step Name ]
+----------------------------------------------+
The PROC and PGM Parameters
The operation will be left justified in column sixteen. It will be
continued in column sixteen of the next line if necessary. Most EXEC
statements will call a procedure, in which case the procedure name will
start in column sixteen. All production Information Systems Office
programs must be run by calling a procedure. Only systems utilities may be
run using PGM=xxxxxxx. Specific justification and approval by your
project leader is required for any exceptions.
If the EXEC statement does not call a procedure, the "PGM=" will start in
column sixteen. In this case, the EXEC statement will be immediately
followed by a STEPLIB DD statement if one is required.
+----------------------------------------------------------+
[ 0 1 1 2 2 3 ]
[ 123456789012345678901234567890 ]
[ ]
[ //S3 EXEC DBNONE ]
[ //S1 EXEC ISOSORT ]
[ //S12 EXEC PGM=IEBCOPY ]
[ ]
[ Figure 48. PROC and PGM parameters ]
+----------------------------------------------------------+
If the name of the program is a parameter to the procedure as in
MBR=xxxxxxxx, it will follow the procedure name. If the program library is
a parameter to the procedure as in LIB=x...x, it will follow in turn. The
entire data set name should be stated within apostrophes. Additional
parameters may be continued on the same or next line if necessary.
+----------------------------------------------------+
[ 0 1 1 2 2 3 ]
[ 123456789012345678901234567890 ]
[ ]
[ MBR=SRPRP008,LIB='AM2T.SR.LOAD' ]
[ MBR=BARTP079,LIB='AM2P.BART.LOAD' ]
[ ]
[ Figure 49. MBR and LIB parameters ]
+----------------------------------------------------+
The Keyword Parameters
The keyword parameters will follow the PROC and PGM parameters, and are
separated by commas.
The following keyword parameters are unnecessary and may not be used.
... with some qualifications.
+-----------------------------------------+ [ COND=(0,NE,S4) ] [ COND=(4,GT,S2) ] [ ] [ Figure 50. COND parameter ] +-----------------------------------------+
+-----------------------------------+ [ PARM='47,X=5' ] [ PARM.G='LIMIT=21,START=4' ] [ ] [ Figure 51. PARM parameter ] +-----------------------------------+
+-----------------------------------------+ [ TIME=(2,30) ] [ TIME=(0,15) ] [ TIME=(,3) ] [ ] [ Figure 52. TIME parameter ] +-----------------------------------------+ +----------------------------------------------------------------------------+ [ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ] [ 123456789012345678901234567890123456789012345678901234567890123456789012 ] [ ] [ //S1 EXEC PGM=IEBCOPY,REGION=200K ] [ ] [ //S3 EXEC DBSTDS,MBR=SRPRP008,LIB='AM2T.SR.LOAD',REGION=400K, ] [ // DB=A,DISP=OLD,SORTSPA='8560,25' ] [ ] [ //S12 EXEC MAPTAPE,VOL=AM2043 ] [ ] [ //S4 EXEC ISOSORT,SORTSPA='8608,150' ] [ ] [ //S1 EXEC IMSXCL,MBR=RMAXP043,LIB='AM3P.RM.LOAD' ] [ ] [ Figure 53. EXEC statement ] +----------------------------------------------------------------------------+
THE DD STATEMENT
The DD statement describes a data set to be used in a job step and
specifies the input and output facilities required for the use of the data
set. The DD statement is identified by a "//" in columns one and two, a
ddname left justified in column three (except in concatenated DD
statements), and "DD" in columns thirteen and fourteen. The operand will
be left justified in column sixteen, and continued in column sixteen of
subsequent lines if necessary.
Overriding Procedures
When executing a multiple step procedure, it may be necessary to specify
the procedure step name on the first overriding or additional DD statement
in the job stream for a procedure step. This is done by preceding the
ddname with the procedure step name and a period. This will be done for
the first DD statement per procedure step in multiple step procedures
only. An exception to left justifying in column sixteen is allowed, if
necessary, in this case.
+--------------------------------------------+
[ 0 1 1 2 2 ]
[ 1234567890123456789012345 ]
[ ]
[ //ALPHA DD DSN= ]
[ //S1.ALPHA DD DSN= ]
[ //G.SYSPRINT DD SYSOUT=(,) ]
[ ]
[ Figure 54. Overriding DD statement ]
+--------------------------------------------+
The Keyword Parameters
The following keyword parameters are unnecessary and may not be used.
.... with some qualifications. See "Alternatives for System Output" for a description of the parameters for system output data sets.
.... with some qualifications. The DSN parameter of a DD statement will be placed first and the DCB parameter will be placed last, with the other parameters in between in any sequence.
+---------------------------------------------------------------+ [ //DATA1 DD UNIT=SYSDA,DISP=(NEW,PASS),... ] [ ] [ Figure 55. Temporary DSN parameter created by system ] +---------------------------------------------------------------+Another way of assigning a temporary dataset is by coding DSN=&&dsname.
+------------------------------------------------------------------+ [ DSN=&&BARGUZ3 ] [ DSN=&&COMPRESS ] [ ] [ Figure 56. Temporary DSN parameter using ampersand notation ] +------------------------------------------------------------------+System assigned data set names will be referred back to by using the DSN=*.referback parameter.
+---------------------------------------------------------------+ [ DSN=*.S3.SORT.SORTOUT ] [ DSN=*.S1.EXTRACT ] [ ] [ Figure 57. Temporary DSN parameter referback notation ] +---------------------------------------------------------------+
For non-WYLBUR datasets, the following information applies. The first level qualifier of all permanent data set names will be used to allow for the existence and balancing of multiple system catalogues, in order to optimize system throughput. The second level qualifier will be used to distinguish between users, systems, departments and for billing purposes. Use of the remaining levels are not prescribed, although planning can reduce problems.
All Computer Center data sets will have a first level qualifier of either SYS1 or UCSB. The second level qualifier will be an application of their choosing.
The first level qualifier for administrative users and applications is "AMnx" ("n" is either '1' or '2'). The "x" will be:
A Archive data set P Production data set T Test data set D Development data setThe second level qualifier will be to identify user, system or department (PREDICT should be checked to make sure the qualifier exists, or isn't already in use). Special characters in data set names will be avoided, especially if they require that the data set name be specified within apostrophes.
WYLBUR datasets will be assigned names in the format of
WYL.groupname.acctname.datasetname.
+-------------------------------------------------------------+
[ DSN=AM1P.SY.LOAD(WAZX20 ]
[ DSN=AM1T.PR.RESTORE(0) ]
[ DSN=SYS1.PROCLIB(CONTROL) ]
[ DSN=WYL.QVA999.SMITH.EXTRACT ]
[ ]
[ Figure 58. Permanent DSN parameter ]
+-------------------------------------------------------------+
The DISP Parameter
The disposition (DISP) parameter describes to the system the status of a
data set and indicates what is to be done with the data set after
termination of a job step, or, at the end of the job. There are three
positional subparameters in the DISP parameter.
The Status Subparameter
The first subparameter specifies whether the data set existed before this
job step and should be explicitly stated.
DISP=(NEW,,,) is the default and specifies that the data set is to be created in this job step.
When a temporary disk data set is created and deleted in the same job step use DISP=(NEW,DELETE,DELETE).
OLD, SHR and MOD specify that the data set existed before this job step.
SHR indicates the data set is only to be read and may be shared with other jobs. SHR should be used when reading permanent disk data sets. SHR may not be used with tape data sets.
OLD should be used when reading existing tape data sets, when reading passed temporary disk data sets, and when updating or deleting permanent or disk data sets.
MOD indicates the data set is to have records appended after the last
record in the data set. MOD should be used with care, if at all, because
data set recovery after a job or system failure may be difficult. Coding
(MOD,CATLG) when extending a disk data set ensures the catalogue entry is
updated so OS/390 can locate the entire data set when it is requested next.
The Normal Termination Disposition Subparameter
The second subparameter indicates what is to be done with the data set at
the end of this job step and should be explicitly stated.
The default is that if a data set was NEW it will be deleted, and if a data set existed it will be kept. The default will be allowed when the DISP parameter is not coded, the default being DISP=(NEW,DELETE,DELETE), and when a permanent data set existed in which case DISP=OLD, DISP=SHR, or DISP=MOD will be coded.
New, permanent data sets will be coded DISP=(NEW,CATLG). Temporary data
sets passed to another step will be coded DISP=(NEW,PASS) when created,
DISP=(OLD,PASS) in intermediate job steps, and DISP=(OLD,DELETE) in the
last job step in which they are accessed. They will never be catalogued
with CATLG.
The Abnormal Termination Disposition Subparameter
The third subparameter indicates what is to be done with the data set at
the end of the job step if the job step abnormally terminates and should
be explicitly stated. It will always be defaulted for temporary data sets.
DELETE may follow the CATLG for new permanent data sets if necessary to
ease the restartability of the job or job step.
+-----------------------------------------------------+
[ DISP=SHR ]
[ DISP=OLD ]
[ DISP=(NEW,CATLG) ]
[ DISP=(NEW,KEEP,DELETE) ]
[ DISP=(NEW,PASS) ]
[ DISP=(OLD,PASS) ]
[ DISP=(OLD,DELETE) ]
[ ]
[ Figure 59. DISP parameter ]
+-----------------------------------------------------+
The UNIT Parameter
The UNIT parameter provides the system with information it needs to assign
a device to a data set. The unit parameter will be used as follows:
See "The BLKSIZE Subparameter" and "Appendix B. Estimating Disk Space" for more information about the standard block size. Other virtual disk names such as V3390 will not be used.
+------------------------------------------+ [ UNIT=DISK ] [ UNIT=CART ] [ UNIT=REEL ] [ UNIT=(CART,,DEFER) ] [ UNIT=(REEL,,DEFER) ] [ UNIT=SYSDA ] [ UNIT=AFF=MASTIN ] [ ] [ Figure 60. UNIT paramete ] +------------------------------------------+
It is a goal of Information Systems to have all permanent disk data sets
catalogued. We want to catalogue each permanent data set when it is created,
and use the catalogue for any subsequent references to the data set. This
would reduce a DD statement, when subsequently referencing a permanent
data set, to only DSN and DISP parameters
+--------------------------------------------------------+
[ DD DSN=AM1P.RN.LOAD(RNAXP014), ]
[ DISP=OLD ]
[ DD DSN=AM1T.PR.RESTORE(0), ]
[ DISP=SHR ]
[ DD DSN=AM1T.BART.EXTRACT.#860125, ]
[ DISP=SHR ]
[ ]
[ Figure 61. Use the catalogue ]
+--------------------------------------------------------+
It is also a goal to minimize the number of specific volume references
when creating permanent tape and disk data sets. This is easily done on
most disk data sets by omitting the SER subparameter of the VOL parameter,
or omitting the entire VOL parameter, while specifying UNIT=DISK. It may be impossible on some tape data sets, but can be
accomplished for generation data sets on tape (or disk) as explained in
"Generation Data Sets". You may
use the SER subparameter when creating permanent data sets on tape.
+---------------------------------------------------+
[ DD DSN=AM1P.XNBT.MASTER, ]
[ DISP=(NEW,CATLG), ]
[ UNIT=DISK ... ]
[ ]
[ DD DSN=AM1A.PR.EDB.#871102, ]
[ DISP=(NEW,CATLG), ]
[ VOL=AM2132, ]
[ LABEL=(3,SL) ... ]
[ ]
[ Figure 62. Minimize SER usage ]
+---------------------------------------------------+
All of our disk volumes are private, cannot be demounted. PRIVATE will
not be used. RETAIN will be used on tape volumes if the volume is not to
be demounted after its last use in the job step, so it may be used in a
subsequent job step. The volume sequence number and the volume count are
not ordinarily used because we do not have many multiple volume data sets.
Again, use of the SER parameter will be minimized. It will not be used to
create disk data sets to be accessed from OS/390. It may be used to create
some tape data sets. It will not be used to read catalogued data sets nor
passed data sets. The REF parameter should be used instead of the SER
parameter to reference the first DD statement for a volume when more than
one data set is being created or accessed on the same volume. The REF
parameter may be used instead of the SER parameter to reference the
catalogue when any tape or disk data set is being created. REF should be
used to reference an older generation when creating a generation data set
using a round robin set of tapes. REF may be used to reference a model
data set when creating a generation data set on disk.
+----------------------------------------------+
[ VOL=SER=DISK81 ]
[ VOL=SER=T02497 ]
[ VOL=(,RETAIN,SER=AM2126) ]
[ VOL=REF=AM1P.SR.MASTER.MODEL ]
[ ]
[ Figure 63. VOL parameter ]
+----------------------------------------------+
The LABEL Parameter
It is a goal of Information Systems to use standard label data sets on IBM
standard labeled tapes. The LABEL parameter will be used when writing
standard labeled (SL) tape data sets.
If this goal cannot be met (due to off-campus hardware limitations when we transmit or receive tape data sets):
+-------------------------------------------------------------------+ [ LABEL=(1,SL) ] [ LABEL=(3,SL) ] [ LABEL=(1,NL) ] [ ] [ Figure 64. LABEL parameter showing file numbers and label type ] +-------------------------------------------------------------------+
Track (TRK) or cylinder (CYL) may be used for data set organizations that do not allow for allocation by block length. Space will not be allocated by ABSTR, SUBALLOC or SPLIT.
Primary and secondary quantities should be specified considering anticipated growth patterns, volatility of record sizes and record counts, and the historical pattern of limited SYSDA and private disk volume space. Fragmentation of private volumes by multiple extent data sets is also a concern. Do not unnecessarily over allocate SYSDA space. Specify secondary quantities so that production jobs will run successfully even when the number of records changes significantly.
See "Appendix B. Estimating Disk Space" for further information.
Directory quantity must be specified for partitioned data sets although they are not usually allocated in production jobs. Contiguous space (CONTIG) should only be specified when it is necessary. Release (RLSE) should be used to release unused space when a data set is created and then subsequently opened only for input. ROUND is not to be used.
+----------------------------------------------------+ [ SPACE=(8608,(50,20)) ] [ SPACE=(8594,(250,40),RLSE) ] [ SPACE=(8608,(80,10,8)) ] [ SPACE=(CYL,(5,,2)) ] [ SPACE=(TRK,(100,25),RLSE) ] [ ] [ Figure 65. SPACE parameter ] +----------------------------------------------------+
+----------------------------------------------------------+ [ 0 1 1 2 2 3 ] [ 123456789012345678901234567890 ] [ ] [ //SYSPRINT DD SYSOUT=(,) ] [ //STATS DD * ] [ ] [ Figure 66. System Input and Output Data Sets. ] +----------------------------------------------------------+Code programs in a manner that will avoid DCB parameters for print data sets and for input stream data sets.
+-------------------------------------------------------------------------+ [ OPEN FILE (STICKER) PRINT LINESIZE (132) PAGESIZE (63); ] [ OPEN FILE (CONTROL) INPUT STREAM; ] [ ] [ Figure 67. Opens to Avoid DCBs for System Input and Output ] +-------------------------------------------------------------------------+
+---------------------------------------------+ [ DSORG=IS ] [ DSORG=PO ] [ ] [ Figure 68. DSORG subparameter ] +---------------------------------------------+
+--------------------------------------------+ [ RECFM=FB ] [ RECFM=VB ] [ ] [ Figure 69. RECFM subparameter ] +--------------------------------------------+
+---------------------------------------+ [ LRECL=8608 ] [ LRECL=8527 ] [ ] [ Figure 70. LRECL subparameter ] +---------------------------------------+
+----------------------------------------------------+ [ BLKSIZE=8608 ] [ BLKSIZE=8560 ] [ BLKSIZE=32767 ] [ ] [ Figure 71. BLKSIZE subparameter ] +----------------------------------------------------+
DEN=4: 6250 bits per inch
DEN=3: 1600 bits per inch
DEN=2 (800 bits per inch) is not available.
DEN=4 will be used for any local tape data sets except where the hardware
is incapable of higher densities. To send data off campus, the receiving
party must usually agree to the tape density on a system by system basis.
It is a goal of Information Systems to use the highest possible density.
+-------------------------------------------+ [ DEN=4 ] [ DEN=3 ] [ DEN=2 ] [ ] [ Figure 72. DEN subparameter ] +-------------------------------------------+
+-----------------------------------------------------------------------------+ [ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ] [ 123456789012345678901234567890123456789012345678901234567890123456789012 ] [ ] [ // DCB=(RECFM=VB,LRECL=150,BLKSIZE=8608) ] [ ] [ // DCB=(RECFM=FB,LRECL=225,BLKSIZE=32625,DEN=4) ] [ ] [ // DCB=(DSORG=IS,RECFM=FB,LRECL=150,BLKSIZE=8550, ] [ // KEYLEN=8,RKP=4,OPTCD=WRMLY,NTM=1,CYLOFL=5) ] [ ] [ // DCB=*.S1.OUTPUT ] [ ] [ Figure 73. DCB parameter ] +-----------------------------------------------------------------------------+
+----------------------------------------------+ [ FREE=CLOSE ] [ ] [ Figure 74. FREE parameter ] +----------------------------------------------+
JCL EXAMPLES
Temporary Disk Data Sets
Temporary disk data sets created and deleted within a job step will have
only the UNIT=SYSDA, SPACE and DCB parameters.
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //ALPHA DD UNIT=SYSDA,SPACE=(8560,(50,20)), ]
[ // DCB=(RECFM=FB,LRECL=80,BLKSIZE=8560) ]
[ ]
[ Figure 75. Very temporary disk data sets ]
+----------------------------------------------------------------------------+
Temporary disk data sets created in one job step and deleted in another
job step will have only the UNIT=SYSDA, DISP, SPACE, and DCB parameters
when created, and the DSN and DISP parameters when subsequently accessed.
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //ALPHA DD DISP=(NEW,PASS),UNIT=SYSDA,SPACE=(8560,(50,20)) ]
[ // DCB=(RECFM=FB,LRECL=80,BLKSIZE=8560) ]
[ ]
[ //BETA DD DSN=*.S2.ALPHA,DISP=(OLD,PASS) ]
[ ]
[ //THETA DD DSN=*.S2.ALPHA,DISP=(OLD,DELETE) ]
[ ]
[ Figure 76. Passed temporary disk data sets ]
+----------------------------------------------------------------------------+
Sorting Data Sets
PL1SORT will always be used. The STEPLIB statement for PL1SORT as well as the
//SYSOUT DD SYSOUT=A statement are required but usually present in an
applicable procedure. Three equal sized SORTWK data sets will be used and
also must be present. Procedure ISOSORT will be used for separate job
step sorting.
A SORTSPA parameter must be provided to the applicable procedure to
indicate the size of the block for space allocation and the number of
primary blocks in the space allocation of each sort work data set.
Usually a UNIT=SYSDA and a SPACE=(block length,primary) parameter is all
that is needed in a SORTWK DD statement if a procedure cannot be used.
+---------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //S3 EXEC ISOSORT,SORTSPA='8560,35' ]
[ //SORTIN DD DSN=*.S2.DETAIL,DISP=(OLD,DELETE) ]
[ //SORTOUT DD DISP=(NEW,PASS),UNIT=SYSDA,SPACE=(8560,(80,20)), ]
[ // DCB=(RECFM=FB,LRECL=80,BLKSIZE=8560) ]
[ ]
[ //S1 EXEC DBSTDS,MBR=ISS1527,LIB=PR15,REGION=260K,DB=A, ]
[ // DISP=SHR,PSB=PSB215,SORTSPA='8560,35' ]
[ //SORTIN DD UNIT=SYSDA,SPACE=(8560,(80,20)), ]
[ // DCB=(RECFM=FB,LRECL=80,BLKSIZE=8560) ]
[ //SORTOUT DD UNIT=SYSDA,SPACE=(8560,(80,20)), ]
[ // DCB=(RECFM=FB,LRECL=80,BLKSIZE=8560) ]
[ ]
[ //SORTWK01 DD UNIT=SYSDA,SPACE=(8560,(35,10)) ]
[ //SORTWK02 DD UNIT=SYSDA,SPACE=(8560,(35,10)) ]
[ //SORTWK03 DD UNIT=SYSDA,SPACE=(8560,(35,10)) ]
[ ]
[ Figure 77. Sorting data sets ]
+---------------------------------------------------------------------------+
Catalogued Data Sets
Catalogued disk data sets will have only the DSN and DISP parameters when
retrieving or updating. Avoid specific disk volume references by using
the catalogue. Conversions to new disk volumes are eased by using the
catalogue and by not changing job decks unnecessarily.
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //DEPT DD DSN=USER.RWKUN.SOURCE,DISP=SHR ]
[ //INPUT DD DSN=AM2P.CSIV.MASTER,DISP=SHR ]
[ //BSL090 DD DSN=AM3T.BSL.HISTORY.TRANS,DISP=OLD ]
[ ]
[ Figure 78. Catalogued data sets ]
+----------------------------------------------------------------------------+
Generation Data Sets
Generation data sets are a special form of catalogued data set. Several
generations of a data set are kept with the data set name varying only in
the generation number. Generation data sets may be retrieved and created
using a generation number that is relative to the latest catalogued generation
prior to the start of the job. For example, the latest catalogued generation
may be referenced by specifying a zero in parentheses. The previous
generation may be specified by a minus one in parentheses. The first
generation created by this job may be referenced by a plus one in
parentheses, the second generation created by a plus two, and so forth.
+---------------------------------------------+
[ DSN=AM2P.BSL.TRANS(0) ]
[ DSN=AM1P.ADABAS.CLOG(-1) ]
[ DSN=AM3T.RSLS.MAST(+1) ]
[ DSN=AM1P.FM.KEY.MASTER(+2) ]
[ ]
[ Figure 79. Generation data sets ]
+---------------------------------------------+
Before creating a generation data set, have the Data Manager build a
generation data group base entry specifying the number of generations to
be kept in the catalogue. The Data Manager must also create and catalogue a
model data set label, on the same volume as the catalogue, to provide
DSORG, RECFM, LRECL, and BLKSIZE information for the generation data group.
It may be convenient for tape generation data sets to reserve a set of tapes with contiguous tape numbers. At least five tapes should be used for this round robin. The catalogue should have several more generations than there are tapes, even twice as many, because it may become necessary to uncatalogue some generations at times.
There must be an extra DD statement in the job step that writes a new
generation. This DD statement will reference the data set that was last
written on the tape on which you are going to write the new generation.
The relative generation number would be minus nine for a set of ten tapes,
or minus four for a set of five tapes. This technique will not work for
large data sets that require more than one tape volume.
+----------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //NEWMAST DD DSN=AM1P.CSIV.MAILING(+1),DISP=(NEW,CATLG,DELETE), ]
[ // UNIT=DISK,SPACE=(8460,(100,50),RLSE), ]
[ // DCB=(ISS.MODEL,RECFM=FB,LRECL=180,BLKSIZE=8460) ]
[ ]
[ //DUMMY DD DSN=AM1P.GD.MASTER(-9),DISP=SHR ]
[ //INPUT DD DSN=AM1P.GD.MASTER(0),DISP=SHR ]
[ //OUTPUT DD DSN=AM1P.GD.MASTER(+1),DISP=(NEW,CATLG,DELETE), ]
[ // UNIT=AFF=DUMMY,VOL=REF=*.DUMMY,LABEL=(1,SL), ]
[ // DCB=AM1P.GD.MASTER ]
[ ]
[ Figure 80. Disk and Tape generation data sets ]
+----------------------------------------------------------------------------+
APPENDIX A. CRIB CARD
+---------------------------------------------------------------------------+
[ 0 1 1 2 2 3 3 4 4 5 5 6 6 7 ]
[ 123456789012345678901234567890123456789012345678901234567890123456789012 ]
[ ]
[ //job name JOB (pano,room,,lines,cards,form,copies),'pgmr name',CLASS= , ]
[ // COND= ,MSGCLASS= ,PRTY= , ]
[ // TIME= ,TYPRUN= ,USER= ,PASS= ]
[ /*JOBPARM RESTART=Y ]
[ /*JOBPARM CARDS=nnnnnnn ]
[ //*UQ USERID xxxxxx,xxxxxx ]
[ //*UQ ACCOUNT xxxxxxxxxx,xxxxxxxxx ]
[ //*UQ ALLOW ]
[ /*ROUTE PRINT destination ]
[ /*MESSAGE message to operator ]
[ /*SETUP WRITE ENABLE xxxxxx,xxxxxx,xxxxxx,xxxxxx,xxxxxx,xxxxxx ]
[ //* ** job comment ]
[ //* ** more job comments ]
[ //OUTx OUTPUT CLASS= ,COPIES= ,DEFAULT= ,DEST= ,FCB= ,FORMS= ,JESDS= ]
[ // PROC ]
[ //* ** proc comment ]
[ //* ** more proc comments ]
[ //Sx EXEC PGM= ,REGION= ,COND= ,PARM= ]
[ //xxxxxxxx DD ]
[ // PEND ]
[ //* ** step comment ]
[ //* ** more step comments ]
[ //Sx EXEC proc ,parms ,REGION= ,COND= ,PARM= , parms ]
[ //xxxxxxxx DD * ]
[ SYSOUT=(,) or SYSOUT=(,),COPIES=copies or ]
[ SYSOUT=(,,forms) or SYSOUT=(,,forms),COPIES=copies ]
[ DUMMY ]
[ DSN=NULLFILE ]
[ DSN=xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ]
[ DSN=*.ddname or DSN=*.stepname.ddname ]
[ or DSN=*.stepname.procstepname.ddname ]
[ DISP=SHR or OLD or (NEW,KEEP) or (NEW,CATLG ]
[ or (NEW,KEEP,DELETE) or (NEW,CATLG,DELETE) ]
[ or (NEW,PASS) or (OLD,PASS) or (OLD,DELETE) ]
[ UNIT=SYSDA or VIO or DISK or CART or REEL ]
[ or (CART,,DEFER) or (REEL,,DEFER) ]
[ UNIT=AFF=xxxxxxxx ]
[ VOL=SER=xxxxxx ]
[ VOL=(,RETAIN,SER=xxxxxx) ]
[ VOL=REF=dsname ]
[ VOL=REF=*.ddname or VOL=REF=*.stepname.ddname ]
[ or VOL=REF=*.stepname.procstepname.ddname ]
[ LABEL=(x,SL) or (x,NL) ]
[ SPACE=(block length,(50,20)) ]
[ SPACE=(CYL,(5,2)) ]
[ SPACE=(TRK,(100,25),RLSE) ]
[ FCB=fcb-name ]
[ DCB=dsname or DCB=*.ddname or DCB=*.stepname.ddname ]
[ or DCB=*.stepname.procstepname.ddname ]
[ DCB=(dsname,DSORG= ,RECFM= ,LRECL= ,BLKSIZE= ,DEN= ) ]
[ DEN is 4 for 6250 or 3 for 1600 BPI. ]
[ ]
[ Figure 81. Crib card ]
+---------------------------------------------------------------------------+
APPENDIX B. ESTIMATING DISK SPACE
The disk space required for a data set is dependent on things like the
size of the records, the size of the blocks, the number of blocks per
track, the number of records in the data set, the data set organization,
and so forth. Primarily we will be concerned with estimating space for
physical sequential data sets.
First the number of records in the data set must be estimated. Allowances must be made for data set growth or variation.
Next a block size must be chosen. The maximum standard block size is 27998.
The goal is to use the largest block size that is less than or equal to the maximum standard block size of 27998.
Record formats of U, V or VB will use the maximum standard block size. The maximum standard block size will be divided by the record length for fixed length records. Any fractional part of the quotient is dropped. The integer indicates the number of records per block, which is multiplied by the record length to get the block size.
For example, if a physical sequential disk data set with variable length records up to 1774 were to be allocated, the block size would be the maximum standard block size of 27998.
If a physical sequential data set with fixed length records of 206 were to be allocated, the maximum standard block size of 27998 would be divided by 206. The quotient of 135.91 would be truncated to 135, multiplied by 206, giving a block size of 27810.
The next step is to determine how many records will fit in a block. This is easy for fixed length records: it is the number you just multiplied times the record length. The number of records per block may be harder to determine for variable length records. Sometimes there may be several kinds of records of specific sizes, in which case it becomes a matter of determining the typical number of records of each size. Other times it is a matter of determining the average record size or just guessing. It is easier if the dataset has been sorted because the number of records in the data set and the number of bytes in the data set have been printed and a simple division produces an average record size.
The last step is determining the number of blocks needed. This is done by
dividing the number of records in the data set by the number of records
per block and rounding the quotient up to an integer. You may allocate by
block length using this number.
+---------------------------------------------------------------------------+
[ 3390 ]
[ ]
[ Block Block length ]
[ Blocks length with key ]
[ per without less than ]
[ track key 56 bytes ]
[ ]
[ 1 56664 56302 ]
[ 2 *27998 27630 "Maximum Standard Block Size" ]
[ 3 18452 18090 ]
[ 4 13682 13314 ]
[ 5 10796 10434 ]
[ 6 8906 8544 ]
[ 7 7548 7186 ]
[ 8 6518 6156 ]
[ 9 5726 5358 ]
[ 10 5064 4696 ]
[ 11 4566 4198 ]
[ 12 4136 3768 ]
[ 13 3768 3406 ]
[ 14 3440 3072 ]
[ 15 3174 2806 ]
[ 16 2942 2574 ]
[ 17 2710 2342 ]
[ 18 2546 2178 ]
[ 19 2376 2014 ]
[ 20 2212 1850 ]
[ 21 2082 1714 ]
[ 22 1946 1584 ]
[ 23 1850 1482 ]
[ 24 1748 1386 ]
[ 25 1646 1284 ]
[ 26 1550 1182 ]
[ 27 1482 1120 ]
[ 28 1386 1018 ]
[ 29 1318 950 ]
[ 30 1250 888 ]
[ 31 1182 820 ]
[ 32 1154 786 ]
[ 33 1086 718 ]
[ 34 1018 656 ]
[ 35 984 622 ]
[ 36 950 588 ]
[ 37 888 520 ]
[ 38 854 486 ]
[ 39 820 458 ]
[ 40 786 424 ]
[ 41 752 390