processing of jobs. This publication contains tutorial information on JCL for
programmers. Special emphasis is placed on nhow ton perform specific functions
.
File No. S360-36 GC28-6703-0
Systems Reference Library
IBM System/360 Operating System: Job Control Language User's Guide
The job control language (JCL) is used with all System/360 Operating System control programs. Every job submitted for execution by the operating system must include JCL statements. These statements contain information required by the operating system to initiate and control the processing of jobs. This publication contains tutorial information on JCL for programmers. Special emphasis is placed on nhow ton perform specific functions using a subset of the JCL statements rather than on describing the full facilities o:E each statement. This publication has four parts: • Part I: Introduction to the job control language describes how to use each JCL statement. • Part II: JCL for compilers, linkage editor, and loader -- contains a summary of the JCL statements used by those programs and examples of their use. • Part III: Cataloged and in-stream procedures -- describes how to use and write cataloged and in-stream procedures. • Part IV: Lxamples of cataloged procedures for compilations, link edits, and executions -contains IBM supplied cataloge~ procedures for those functions and examples of their use. After becoming familiar with the information presented in this manual, you may use IBM System/360 Operating System: Job Control Lansuag_~ Reference, GC28-6704 for review and reference.
_.'
OS
First Edition (June, 1970) This edition applies to release 19, of IBM System/360 Operating System, and to all subsequent releases until otherwise indicated in new editions or Technical Newsletters. Changes are continually made to the information herein; before using this publication in connection with the operation of IBM systems, consult the latest IBM System/360 SRL Newsletter, Order No. GN20-0360, for the editions that are applicable and current. Requests for copies of IBM publications should be made to your IBM representative or to the IBM branch office serving your locality. A form for readers' corrunents is provided at the back of this publication. If the form has been removed, corrunents may be addressed to IBM Corporation, Prograrruning Systems Publications, Department 058, PO Box 390, Poughkeepsie, N. Y. 12602
C Copyright International Business Machines Corporation 1970
Preface
This publication describes the facilities of the job control language (JCL) to new programmers or to programmers who are not familiar with the IBM Systern/360 Ope:r'ating System. It is assumed that the reader is familiar with the concepts and terminology introduced in the prerequisite publications listed below and that he can write programs using the assembler or a higher-level language such as ALGOL, COBOL, American National Standard COBOL (formerly USAS COBOL), FORTRAN or PL/I. These languages are used throughout this publication to illustrate the use of JCL in various applications. If you use another language, you can still use this publication to learn JCL and refer to the publications associated with your language for specific examples. There are only two language-dependent parameters in JCL statements: the PARM parameter of the EXEC statement and the DCB parameter of the DD statement. The appropriate values for those two parameters are summarized in this publication for the users of the assembler, ALGOL, COBOL E and F, American National Standard COBOL, FORTRAN E, G, and H, and PL/I F; however, you should check the related Programmer's Guides for up-to-date information. If you use another language, you must find the values for those parameters in the publications associated with your language.
PREREQUISITE PUBLICATIONS IBM System/360 Operating System: Introduction, GC28-6534 Concepts and Facilities, GC28-6535 ASSOCIATED PUBLICATIONS IBM System/360 Operating System: ALGOL Programmer's Guide, GC33-4000 American National Standard COBOL Programmer's Guide, GC28-6399 Assembler (E) Programmer's Guide, GC28-6595 Assembler (F) Programmer's Guide, GC26-3756 COBOL (E) Programmer's Guide, CG24-5029 COBOL (F) Proarammer's Guide, CG28-6380 FORTRAN IV (E) Programmer's Guide, GC28-6603 FORTRAN IV (G and H) Programmer's Guide, GC28-6817 Linkage Editor and Loader, GC28-6538 PL/I (F) Programmer's Guide, GC28-6594
Part I:
.. .. -..
Introduction Introduction to the Job Control Language
-------~
Coding Conventions
~
....
The JOB Statement
The EXEC Statement - - - - - - - - - - - - - - - - - - -...... ~
•
The DD Statement Naming the DD Statement
O~iiIi'"
Creating a New Data Set:
Extending an Existing Data Set Special DD Statements
Retreiving an Existing Data Set
Postponing Definition of a Data Set
The Delimiter Statement
~
The Null Sta temen t
~
The Comment Statement
~
The PROC Statement
~
The PEND Statement
....
The Command Statement
....
Part II:
JCL for Compilers, Linkage Editor and Loader
Part III:
Cataloged and In-stream Procedures
Part IV:
Examples of Cataloged Procedures for Compilations, Link Edits, and Executions
Appendixes Glossary
.......... Index
._1111••
~
-.. .. -
.. .. ~
•
Contents
SUMMARY OF MAJOR CHANGES - RELEASE 19 INTRODUCTION • ..
11 .. 13
PART I: INTRODUCTION TO THE JOB CONTROL LANGUAGE .. .. 15 What is a Job? .. .. .. .. 16 Processing Your Job .. .. 17 Job Control Language statements .. .. .. .. 19 Summary of the JCL Statements .. 19 The Input Stream .. 20 CODING CONVENTIONS .. Fields in the JCL Statements .. .. Parameters in the Operand Field Spacing JCL Statement Fields .. .. Continuing JCL Statements .. .. Coding Special Characters .. Backward References Notation for Defining JCL Statement Parameters .. .. Coding Form .. ..
.. 23 .. .. 23 24
.. .. 25 .. .. 25 .. .. 26 27 .. .. 28 .. .. 29
THE JOB STATEMENT .. .. .. .. .. .. .. .. Naming t.he Job .. .. .. .. .. .. .. .. .. .. Installation Management Information .. • Accounting Information Parameter • Programmer's Name Parameter .... Operating System Messages . . . . . . . . . MSGLEVEL Parameter • .. • .. .. • • .. • • MSGCLASS Parameter (Systems With MFT or MVT Only) .. .. • .. • • .. • .... Processing options • • • • .. • ... .. COND Parameter • .. .. • • • e • • TYPRUN Parameter (Systems With M:E'T or MVT Only) .. .. .. • .. .. .. • .. • .. • .. TIME Parameter (Systems With MFT or MVT Only) . . . . . . . . . . . . . . . .. Queuing Options (Systems With MFT or MV"T Onl y ) ...................... CLASS Parameter (Systems With MFT or MVT Only) .. • • • • • • .. PRTY Parameter (Systems With MFT or MVT Only) . . . . . . . . . . . . . . . .. .. Main storage Options (systems With MVT Only) . . . . . . . . . . . . . . . . . . . . .. • REGION Parameter (Systems with MVT Only) ................... . .. .. ROLL Parameter (Systems With MVT Only) ....... .. .. .. • Chp.ckpoint/Restart .. .. .. • RD Parameter • .. • • • • .. • • • • RESTART Parameter .. TEE EXEC STATEMENT .. .. .. • .. .. • Naming the Step • • • • Processinq Program Information • .. .. PGM Parameter .. .. • • .. PRoe or Procedure Name Parameter .. PAru1 Parameter .. .. .. • • .. .. • .. .. Installation t/.anaqement Information ACCT Parameter .. • • .. .. . • .. • •
31 31 32 32 33 34 34
35 36 36
38 38 39
40 40 41 42 43
44
44 46
.. .. 49 51 .. .. 51 .. .. 52 .. .. 54 .. .. 55 57 57
Processing Options • • • • .. .. COND Parameter • .. • • .. .. .. TIME Parameter (Systems with MFT or ~1VT Only) .................. Queuing Option (Systems with MVT Only) DPRTY Parameter (Systems with MVT Only) • .. • .. .. .. .. .. .. .. .. Main Storage Options (systeros With MVT Only) ....................... .. REGION Parameter (Systems With MVT Only) . . . . . . . . . . . . . . . .. ROLL Parameter (Systems With MVT Only) ...... .. .. ... Checkpoint/Restart .. .. .. .. RD Parameter • ..
58 .. 58
.. 64 • 65 • 65 • 66 67 69
.. 70 • 71
THE DO STATEMENT .. • .. .. • .. • 73 Naming the DO Statement .. .. 79 Creating a New Data Set .. • 81 Uni t Record Devices .. .. • .. • • .. 81 Location of the Data Set • 81 Data Attributes .. .. .. • .. .. 82 Special processing Options .. • 86 System output Devices • 89 Location of the Data Set .. • 90 Size of the Data Set ...... 91 Data Attributes ........ 92 Special Processing Option 92 Magnetic Tape .. .. .. .. .. .. • 93 Data Set Information ...... 93 Location of the Data Set • • 98 Data Attributes .. • .. .109 special Processing Options . . . . . . . 112 Direct Access Devices ... 115 Data Set Information . . . . . . 116 Location of the Data Set .121 Size of the Data Set ... 135 Data Attributes . . . . . . 147 Special Processing Options . . . . 153 Ret;rieving an Existing Data Set .157 Unit Record Devices • • • • • • • 157 Location of the Data Set • .157 Data Attributes . . . . . . . . . . . . . 158 Special Processing Option • • 162 Input Stream • • • • • • • .163 Location of the Data Set • • • • • • 164 Data Attributes .167 Passed Data Set • • 167 Data Set Information .. • • • • .168 Location of the Data Set.. • .. .171 Data Attributes ..... 173 Special Processing Option ... 174 cataloged Data Set • • • • • 175 Data Set Information ... 175 Location of the Data Set . . . . . 177 Data Attributes • • • 180 Special Processing Options • . 185 Kept Data Set • . .. • • . . . . . . . 187 Data Set Information . . . . . 187 Location of the Data Set • • • .188 Data Attributes • • • 193 Special Processing Options • . 193 Contents
'7
Extending an Existing Data set • • .197 passed Data set .197 Data Set Information. .198 Location of the Data Set. .201 Size of the Data Set • • • • • . 203 Data Attributes • • • 204 Special Processing option . • • . • 206 cataloged Data Set. • • • • • • 207 Data Set Information . • . • 207 Location of the Data Set • • • • • • 208 Size of the Data Set • • • • • 212 Data Attributes .213 Special Processing Options. .213 Kept Data set • • • • • • 215 Data Set Information • • • • • 216 Location of the Data Set. • .217 Size of the Data Set .222 Data Attributes • • 223 special Processing Options. .223 special DD statements • • • • . • .227 Private J.. ibraries • • • . .227 JOBLIB DD Statement .227 STEPLIB DD statement. • • • • . 230 Data Sets for Abnormal Termination Dumps •• . .. • • • • • .233 .235 Checkpoint Data Set • • • • • The Checkpoint Data Set is cataloged ~ • • • • • • • • • • • • 235 The Checkpoint Data Set is Kept • . 236 Postponing Definition of a Data Set • • 237 THE DELIMITER STATEMENT
.240
THE NULL STATEMENT • • •
.241 • • • • 242
THE COMMENT STATEMENT THE PROC STATEMENT • • • • • • Naming the PROC statement Symbolic Parameters
~
• .243 .243 • • • 243
USING CATALOGED AND IN-STREAM PROCEDURES . • . • . • • • • • . .294 How to Call a cataloqed Procedure • . • 294 How to Call an In-stream Procedure • • .294 Assigning Values To Symbolic Paramete:rs 295 Nullifying a Symbolic Parameter .296 Examples of Assigning Values to Symbolic Parameters • • • • • • • • . .297 Overriding, Adding, and Nullifying Parameters on an EXEC statement . • 298 Overriding EXEC statement Parameters .298 Adding EXEC Statement Parameters • . . • 299 Nullifying EXEC statement Parameters .300 Examples of Overriding, Adding, and Nullifying Parameters on an EXEC Statement • • • • • • • • • • • • • • • 300 Overriding, Adding, and Nullifying .301 Parameters on a DD Statement • • • Overriding DD Statement Parameters " .302 Adding DD Statement Parameters • • • .303 Nullifying DD statement Parameters " .304 Examples of Overriding, Adding, and Nullifying Parameters on a DD Statement 305 Overriding DO Statements That Defim~ Concatenated Data Sets • • • • • • " .306 Adding DD Statements to a Procedure ".307 Examples of Adding DD Statements to a Procedure • • • • • • • • . • • • .308 WRITING PROCEDURES: CA'rALOGED AND IN-STREAM • • • • • • • • • • . . . . 310 Why Catalog JCL statements • • • ,. .310 Why Use In-Stream Procedures • ,. • .310 The Contents of cataloged and In-Stream Procedures • • • • .310 Using Symbolic Parameters in a ... 311 Procedure • • • • • • • • • • Adding and Modifying Cataloged Procedures • • • • • • • • • .. .314 PART IV:
THE PEND STATEMENT • THE COMMAND STATEMENT PCP • • • • MFT MVT
••••
. • • .245 • .246 • • • • • 246 • .247 • .248
R.~T II: JCL FOR CQMPlb~R~J_LI~KAGE EDITORS AND LOADER. • ALGOL Assembler E • ,. • • Assembler F • • • • • • • COBOL E • • • • • COBOL F • • • • American National. Standard COBOL • FORTRAN E • • • • FORTRAN G • • • • • • • FORTRAN H • • • • • •• • • PL/I F • • • • Linkage Editor. • Loader. • • • • • • Examples. • • • •
.249 .250 ..252 • .254 .256 .258 .261 .264 .267 • .269 • .272 • .275 • .279 .282
!?_~ ._J.!.~_._~AT J\!..QQED__ bNILJ;~-=J?YR~
GG9CEQURES • • • • • • • • • • • • • • • 293
8
OF CATALOGED FOR COMPILATIONS, LINK AND EXECUTIONS. • • • • ALGOL Assembler E • • • • EXAMPLE~
R..~OCEDURE~.
EDI~~~
.315 .316 .318
Assembler F .320 COBOL E .322 COBOL F .323 American National Standard COBOL • .324 FORTRAN E • • • • ,. • .326 FORTRAN G • • • • . .328 FORTRAN H • • • • • • • ,. • • • • 330 PL/I F • •••• • • • 332 Examples • .334 APPENDIX A: INDEXED SEQUENTIAL DATA SETS. • • • ,. • ,. • • • • ,. .337 Creating an Indexed Sequential Data SE!t 337 Data Set Information • • 340 DSNAME Parameter • .340 DISP Parameter • • .341 Location of the Data Set • .341 UNIT Parameter • • • .341 VOLUME Parameter. • .342 LABEL Parameter • • ,. ,. .343 Size of the Data set .343
SPACE parameter-The system Assigns Tracks. • • • • • • • • • • .343 SPACE parameter-Requesting Specific Tracks • • • • 344 Data Attributes •••••••• .344 Retrieving or Extending an Indexed Sequential Data Set .. • .346 Data Set Information • .. • .347 DSN~E Parameter. • • • • • .347 DISP Parameter. • • • • • • 347 Location of the Data Set • • 348 UNIT Parameter • • • '. • .348 VOLUME Parameter • • • ., • .349 Data Attributes • • 349 Overwriting an Indexed sequential Data Set • • • • • • • • • • 351 Data Set Information • • • • • e • • • 351 DSNAME Parameter • • • ., • .351 DISP Parameter. • • • • • 351 Location of the Data Set. • • .351
• • UNIT Parameter • VOLUME Parameter LABEL Parameter • • • • size of the Data Set • • • • • Data Attributes • • • Examples • • • • • • • • •
• • • • • • • • •
• • • • • •
.351 .352 .352 .352 .352 .353
APPENDIX B: GLOSSARY OF DCB SUBPARAMETERS • • • • • • • • • • . 357 APPENDIX C: USING THE RESTART FACILITIES • • • .365 Restarts • • • • • • • • .365 Examples of Using the Restart Facilities • • • • • • • • • • • • • • .368 APPENDIX D:
SUMMARY OF THE DD • .371
STATEM~NT
GLOSSARY • • • • • • • •
• • .388 • • .396
Illustrations Figures
".~
..........
Figure 1. Figure 2. Figure 3. Boundaries Figure 4. Figure 5. Figure 6. Figure 7. Figure 8. Procedure Figure 9. Figure 10. with ABEND Figure 11. Figure 12. Bdit) Figure 13. Edit-Go) Figure 14. Figure 15. Figure 16. Figure 17. Edit-Go) Figure 18. Figure 19. Figure 20. Figure 21. Edit-Go) Figure 22. Figure 23. Figure 24. Figure 25. Edit-Go) Figure 26. Figure 27.
.• Your Program Defining Job Boundaries Defining Job Step
·· ··
··
18 20
22 · · · · · · · · · · · · · · 23 · 26 29 · · · · · · 50 · ·Using · · ·the · ·COND · · Parameter · · · · · · · 50 · 61 using the COND Parameter 63 · · · · · · · · · ·.316 · · · ·(Compile) ALGOFC JCL Statement Fields continuing JCL Statements JCL coding Form Using the EXEC statement Modifying a Cataloged
ALGOFCL (Compile-Link
· ·
·ALGOFCLG · · · · ·(Compile-Link ···· ·· ·· ·ALGOFCG · · · · (Compile-Load) · · ·· ·· · · ASI\I:t;C (Compile)
.316
.317 .317 .318 318 ASfomCL (Compile-Link Edit) ASI"lECLG of a linkage editor run until it is executed by a later job step. The program stored in a temporary library is assigned a name by the system, which is not predictable by the programmer. Therefore, you use the PGM parameter to identify it by location rather than by name. You do this using the backward-reference feature of JCL (see "Backward References" in the section "Coding Conventions".> The format of the PGM parameters for specifying programs that reside in temporary libraries is:
r-----------------------------------·------------------------------,I
I
PGM=*.stepname.ddname L ___________________________________ .______________________________ J
Replace the term "stepname" with the name of the EXEC statement of the job step (of the same job) where the temporary library is created. Replace the term "ddname" with the name of the DD statement that defined the library. The following example shows the EXEC statement for a link edit step, the DD statement in that step that defines the temporary library, and the EXEC statement that requests the execution of the program stored in the temporary library.
r-----------------------------------------------------------------, I · I I . I /ILINK
I I I EXEC PGM=IEWL This EXEC statement requests the I , linkage editor I I /ISYSLMOD DD This DD statement defines the I I temporary library I I • I I I IL _________________________________________________________________ /IGO EXEC PGl'1=*. LINK. SYSLMOD JI
When the terr.porary library is created in a cataloged procedure step, (of the same job) you may want to call it in a later job step outside the procedure. In order to call it, you must give both the name of the job step that invokes the procedure and the procedure step name, i.e., PG~=*.stepname.procstepname.ddname. The first part of the following example shows an EXEC statement that calls a cataloged procedure named ASMFCL (ASIvlF'CL is a cataloged procedure which assembles and link edits a source program), and the EXEC statement that requests the execution of the program link edited with the cataloged procedure. The second part of the example shows the EXEC statement of the procedure step in ASMFCL where the terrporary library is created, and the DD statement that defines the library.
The
EX~C
statement
53
r----------------------------------------------------------------------,I
I Input Deck
~----------------------------------------------------------------------~
I I I I I
· .. ..
//CALL EXEC
I ..
~.
I I I I I
AS~FCL
~
1
I .. stepname ....... I PGM=*'":"CALL .. LKED .. SY 3LMCD I I / / GO EXEC name I· /d7 I I.. / I I .. procstepname I t------------------£---------------------------------------------------~ I Cataloged proced~re / I
/L
t-------------~-------------------------------------------------------~ I II ·.. I· / I I //LKED EXEC I
I I
GM=IEWL
//SYSLMOn/DD... L ____________________________________________________________________ .J
Programs residing in the system library or private libraries can also be executed by coding PGM=*.stepname.ddname, provided the named DD statement defines the program as a member of such a library. Note: If your DD statements requEst space allocation and disposition processing you can satisfy these requirements prior to executinq your program (see the next chapter). To do this, write PG~=IBFBR14 instead of specifying your program's name. This also allows you to check the accuracy of your JCL statements. (If you create a data set when using this program, the data sets status will be OLD when you execute your own program. Make sure you change the DD statement to indicate this fact.>
PROC or Procedure Name Parameter
Instead of executing a particular program a job step may use a cataloged or in-stream procedure. A cataloged or in-stream procedure can contain JCL statements for several steps, each of whicn executes a particular program. cataloged procedures are members of the procedure library. (The IBM-supplied procedure library is named SYS1.PROCLIBi at your installation, there may be additional procedure libraries which would have different names.) The format of the PROC parameter is:
r--------·--------------------------------------------------------------,
I
PROC=procedure name L ______________________________________________________________________ JI Replace the term ftprocedure name ft with the member name of the cataloged procedure or the name on the PROC statement of the in-stream procedure. If you prefer, omit ftpROC ft and simply code the procedure name. For example, you can request a cataloged procedure named COBFLG with either one of the following EXEC statements: //name EXEC PROC=COBFLG //name EXEC COBFLG The PROC parameter or the procedure name must be the tirst in the operand field. 54
paramet~r
Note: • Subsequent parameters in the operand field can be used to override EXEC statement parameters in the cataloged procedure. • Such parameters reflect a reference t:o cataloged procedure steps in their keywords. • For details on using and modifying cataloged or in-stream procedures, see "Part III: Cataloged and In-stream Procedures."
P ARM Parameter
Some IBM-supplied processing programs allow you to select alternatives from a set of options. For example, two of the options the FORTRAN G compiler gives you are: (1) whether or not a listing of the object module is to be printed, and (2) the number of lines in each page of the listing. Your choices are indicated by certain values given to the PARM parameter. For example, to indicate that you want a listing and that each page is to have 65 lines write PARM==(LIST,'LINECNT=65'). Each IBM program that requires PARM information bas a specific value for each of its options. For example, in the case of the FORTRAN G compiler, LIST specifies that a listing of the object module is to be printed. The PARM values are listed in the publication associated with the program and in Part II of this publication. In many cases, default values can be selected for PARM values during system generation. That is the system programmer will select one alternative (e.g., LIST) or assign a fixed value to another (e.g., LINECNT=40). The system will assume the default option unless you specify the other alternative or change the fixed value. For example, assume the defatiltsare LIST and LINECNT:::40. If you want a listing of the object modUle that has 30 lin€"$ per page, write: ,1
PARM='LINECNT=30' (LIST is the default) If you do not want a listing, write: PARM=NOLIST (LINECNT is ignored because the listing will not be printed. If you want a listing that has 40 lines per page, omit PARM and both defaults are assumed. Your manager or supervisor will tell you which default values were generated for the installation's operating system. The installation's processing programs or your own program can accept PARM values if the program is written in assembler language or PL/I. The system will place the PARM values in an area of main storage available to the program. You can then obtain these values by following the instructions in "Acquiring the Information in the PARM field of the EXEC Statement" in the publication IBM System/360 Operating System: supervisor and Data Management Services, GC28-6646, or in the pUblication IBM System/360 Operating system: PL/I (F) Programmer's Guide. The format of the PARM parameter is:
r-----------------------------------------------------------------------,
IL __________________________ PARM=value •_____________________________________________ JI
The EXEC statement
55
Replace the term "value" with up to 100 characters of data. following are general rules for coding the PARM parameter:
The
• If the value contains more than one expression separated by commas, the value must be enclosed in either apostrophes or parentheses. For example: PARM= (DECK,LIST, NOMAP) PARM='DECK, LIST,NOMAP, • If any of the expressions contain special characters, you can eithe]~ 1) enclose that expression in apostrophes (5-8 punch) and the value in parentheses, or 2) enclose the entire value in apostrophes. (The enclosing apostrophes and parentheses are not considered part of th€~ information and do not count towards the maximum of 100 characters of data; commas within apostrophes are passed as part of the information.> For example: PARM=(DECK,'NM~E=FIRST',LIST)
or PARM='DECK,NAME=FIRST,LIST' PARM=(Pl,167,'P*AA') or PARM='Pl,167,p*AA'
• If the special character is an apostrophe, it must be shown as two consecutive apostrophes. For example show NAT'L as: PARM='NAT"L' When two apostrophes are coded only one is passed to the processing progl:am. • If the special character is an ampersand and you are not defining a symbolic parameter, show the ampersand as two consecutive ampersands. For example, show ABC&D as: PARM='ABC&&D' When two ampersands are coded, only one is passed to the processing program. • If there is only one value and the value does not contain special characters, you need not enclose the value in parentheses or apostrophes. If the value contains special characters enclose the value in apostrophes. For example: PARM=LIST PARM='L .. 24' PARM='NATnL' since the value can consist of up to 100 characters, you may have to continue the value onto another card. If the value is to be continued, enclose the value in parentheses. Any value enclosed in apostrophes must be coded on one card. To continue the value, follow the continuation conventions as outlined in the topic "Continuing Control statements" in the section "Coding Conventions". The continuation comma is considered part of the value field and counts towards the maximum of 100 characters of data. The following is an example of continuing the value onto another card. //name EXEC ••• ,PARM=(DECK,LIST,'LINECNT=80', // NOMAP) When the job step uses a cataloged procedure, you can pass information to a step in the procedure by including as part of the keyword PARM, the procedure step name, i.e., PARM.procstepname. This specification overrides the PARM parameter in the named procedure step, if one is present. You can code as many parameters of this form as there are 56
steps in the cataloged procedure. For example, the following EXEC statement passes PARM information to two procedure steps of a cataloged procedure named PROCTWO. The names of the two procedure steps are STEPl and STEP2. //Al // //
EXEC PROC=PROCTWO,PARM.STEP1=(ONE,'T~O=B', THREE),PARM.STEP2=(FOUR,FIVE,SIX, • SEVEN=G')
TO pass information to the first step in a cataloged procedure and nullify all other PARM parameters in the procedure, code the PARM keyword without a procedure step name. For example: //Al
_II
EXEC PROCTWO,PARM=(ONE,'TWO=B',EIGHT)
Installation Management Information Some installations have job step accounting routines in addition to thE regular job accounting routines. Job step accounting is particularly useful in cases where a different programmer is assigned to write each step of a job, or where the installation'S management wants to know now much time is spent on different functions such as compilation or link editing. You can specify job step accounting information instead of, or in addition to job accounting information. Job step accounting informqtion is specified with the ACCT parameter in the EXEC statement. Job accounting information is specified with a positional parameter in the JOB statement (see the chapter "The JOB statement"). ACCT Parameter
The ACCT parameter allows you to supply iob step accounting information. It has the following format:
r----------------------------------------------------------------------,
I ______________________________________________________________________ ACCT=(accounting information) L JI Replace the term "accounting information" with one or more subparameters separated by commas. Your manager or sUpervisor should tell you exactly how to code this parameter. The following are general rules for coding the accounting information: • The total number of characters of accounting information, plus the commas that separate the subparameters, cannot exceed 142. • If the list contains only one subparameter, you need not enclose it in parentheses. For example: ACCT=12345 • If any subparameter contains special characters (except hyphens), you can either 1) enclose the subparameter in apostrophes (5-8 punches) and the value in parentheses, or 2) enclose the entire value in apostrophes. The apostrophes are not considered part of the information. For example: ACCT=(12345,'T/24') or ACCT='12345,T/24' ACCT=(12345,T-24) The EXEC Statement
~7
When the job step uses a cataloged procedure, you can supply accounting information pertaining to a single procedure step by including, as part of the keyword ACCT, the procedure step name, i.e., ACCT.procstepname. This specification overrides the ACCT parameter in the named procedure step, if one is present. You can code as many parameters of this form as there are steps in the cataloged procedure. For example, the following EXEC statement passes job step accounting information to two procedure steps of a cataloged procedure named PROC3,. The name of the two procedure steps are ONE and TWO. //BBB //
EXEC PROC3,ACCT.ONE=(COMPILE,'T.JONES', 'S/20/69'),ACCT.TWO=(LKED, 'T.JONES', '5/20/69')
To supply accounting information pertaining to all steps in a procedure w code the ACCT parameter without a procedure step name. This specification overrides all ACCT parameters in the procedure, if any arE~ present,. For example: //BBB
EXEC PROC=PROC3.ACCT=('T.JONES','S/20/69')
Processing Options There are two processing options available to the job step through EXEC statement parameters. The COND parameter specifies conditions for executing or bypassing the job step according to the success or failure of previous steps in the job. For example, if one of the steps in your job is an error analysis program, you would only want to execute it if there were errors in the preceding steps. The TIME paramp.ter is only available in systems with MFT or MVT. It lets you set the maximum amount of time the step may use the cpu. This parameter lets you find out how long the job step uses the CPU and limits the cpu time wasted if the job step goes into a loop.
COND Pal"ameter Occasiona.lly, some of the steps in a job may be unnecessary. For example, the last step of an inventory job might be to prepare reorder forms for depleted items. You would not want to execute this last step if one of the previous steps discovered that there were no missing items. The COND parameter of the EXEC statement lets you:: • Make as many as eight tests on return codes issued by preceding job steps or cataloged procedure steps, which completed normally. If anyone of the tests is satisfied, the job step is bypassed. • Specify that the job step is to be executed even if one or more of the preceding job steps abnormally terminated or only if one or mure of the preceding job steps abnormally terminated. The tests specified with the COND parameter of the EXEC statement are performed in addition to the tests specified with the COND parameter of the JOB statement. That is, the tests in the JOB statement are performed first, and if any are met the job is discontinued regardless of what you specify in the .EXEC statements. Using the COND parameter in both the JOB and EXEC statement allows you to set some conditions that apply to all steps in the job and other conditions that apply only to particular job steps. Abnormal termination (ABEND) of a job step 58
normally causes subsequent steps to be bypassed and the job to be terminated. By means of the COND parameter, however, you can specify execution of a job step after one or more proceding job steps have abnormally terminated. For the COND parameter to be acted on, a job step must ABEND while the program has cont:rol. If a job step is abnormally terminated during scheduling, due to failures such as JCL errors or inability to allocate space, the remaining job steps are bypassed, no matter what you specified in any COND parameter. The format of the COND parameter of the EXEC statement is:
r----------------------------------------------------------------------,
I (code, operator) I I (code,operator,stepname) I I COND=( (code,operator,stepname.procstepname) , ••• ) I I EVEN I I ____________________________ ONLY L ,__________________________________________ JI You can write the term (code,operator[,stepname[.procstepname]]) up to eight times, or you can can write either EVEN or ONLY and the term (code,operator[,stepname[.procstepname]]) up to seven times. Replace the term "code" with any decimal number from 0 through 4095. Replace the term "operator" with one of the following:
,..11'"
GT GE EQ LT LE NE
(greater than) (greater than or equal to) (equal to) (less than) (less than or equal to) (not equal to)
Replace the term "stepname" with the name of the preceding job step that issues the retu~n code to be tested. If you do not code a "stepname" the test indicated is performed on all preceding steps. When the return code is issued by a cataloged procedure step, you may want to test it in a later job step outside of the procedure. In order to test it, you must give both the name of the job step that invokes the procedure and the procedure step name, i.e., COND=«code,operator, stepname.procstepname), ••• ). For example, if you write: COND= ( (20, GT, STEP1) , (60, EQ, STEP2» it would read "Bypass this step if 20 is greater than the return code issued by STEP1, or if STEP2 issues a return code of 60." If you write:
it would read "Bypass this s·tep if 20 is greater than the return code issued by STEP1, or if any of the preceding steps issues a return code of 60". If you want only one test made, omit the outer parentheses, for example: COND=(lO,LT) or COND=(15,NE,STEP5) The EXEC statement
59
EXEC
If you write: COND=(7,LT,STEP4.LINK) it would read "Bypass this step if 7 is less than the return code issued by a procedure step named LINK in the catalcged procedure called by an EXEC statement named STEP4". The E~EN and ONLY subparameters are mutually exclusive. Whichever subparameter you select can be coded in combination with up to 7 return code tests, and can appear before, between, or after return code tests, for example: COND=(EVEN, (4,GT,STEP3» COND=«8,GE,STEP1),(16,GE),ONLY) COND=«15,GT,STEP4),EVEN,(30,EQ,STEP7» The EVEN subparameter causes the step to be executed even if one or more of the preceding job steps have abnormally terminated. However, if any return code tests specified in this iob step are satisfied, the step is bypassed. The ONLY subparameter causes the step to be executed only if one or more of the preceding job steps have abnormally terminated. however, if any return code tests specified in this jOb step are satisfied, the step is bypassed. When a job step abnormally terminates, the COND parameter on the EXEC statement of the next step is scanned for the EVEN or ONLY subparameter. If neither is specified, the job step is bypassed and the EXEC statement of the next step is scanned for the EVEN or ONLY subparameter. If EVEN or ONLY is specified, return code tests, if any, are made on all previous steps specified that executed and did not abnormally terminate. If anyone of these tests is satisfied, the step is bypassed. Otherwise, the job step is executed. For example, if you write: COND=EVEN it would read "Execute this step even if one or more of the preceding steps abnormally terminated during execution". If you write: COND=«10,LT,STEPA),(20,EQ),ONLY) it would read, "Execute this step only if one of the preceding steps terminated abnormally but bypass it if 10 is less than the return code issued by STEPA or if any of the steps that terminated normally issued return code of 20".
ii
If you write: COND=«10,LT,STEPA),(20,EQ),EVEN} it would read, "Bypass this step if 10 is less than the return code issued by STEPA, or if any of the preceding steps issues a return code of 20, otherwise execute this step even if one of the preceding steps terminated abnormally". If you omit the COND parameter, no return code tests are made and step will be bypassed if any of the preceding job steps abnormally terminated. 60
thE~
Any tests specified with the COND parameter of the JOB statement take precedence over those specified with EXEC statements. For example, Figure 9 shows an input deck with nine steps and the return codes produced by those steps that were executed. The following tests are performed:
• Before STEP2 (STEPl produced a return code of 6): 1. Is 10 less than 6? No. 2. Is the return code 2 or 4? No. Execute STEP2 • Before STEP3 (STEP2 produced a return code of 2): 1. Is 10 less than 2 or 6? No. 2. Did one or more of the preceding steps terminate abnormally? No. Bypass STEP3.
EXEC
r--------------------------------------------------------T-------------, //MYJOB JOB A.SMITH,COND=(10,LT) I Return Code I I I I I I I I I I I I I
//STEPl EXEC
PGM=AAA
6
//STEP2 EXEC
PGM=BBB,COND=«2,EQ),(4,EQ»
//STEP3 EXEC
PGM=CCC,COND=ONLY
//STEP4 EXEC
PGM=DDD,COND=«S,GT,STEP1), (2,EQ»
//STEP5 EXEC
PGM=EEE
//STEP6 EXEC
PGM=FFF,COND=«S,GT,STEP5),EVEN)
10
//STEP7 EXEC
PGM=GGG,COND=(4,GT,STEP4)
12
//STEPS EXEC
PGM=HHH
2
9
________________________________________________________ ~ _____________ J //STEP9 EXEC PGM=III,COND=ONLY
Figure
9.
Using the COND Parameter
• Before STEP4: 1. Is 10 less than 2 or 6? No. 2. Is 5 greater than 6? No. 3. Is one of the preceding return codes equal to 2? STEP4. • Before STEPS: 1. Is 10 less than 2 or 6?
No.
Yes.
Bypass
Execute STEPS. The EXEC statement
61
• Before STEP6 (STEP5 produced a return code of 9): 1. Is 10 less than 9, 2, or 6? No. 2. Is a greater than 9? No. 3. Did one of the preceding steps terminate abnormally? Execute STEP6.
No.
• Before STEP? (STEP6 produced a return code of 10): 1. Is 10 less than 10, 9, 2, or 61 No. 2. Is 4 greater than return code of STEP4? STEP4 was bypassed and did not produce a return code so this test is ignored. Execute S'rEP? • • Before STEPa ,(S,EQ»
The stepname you specify in the condition, for example, STEP2 in (S,EQ,STEP2), can be the name of either a preceding procedure step in the cataloged procedure or of a preceding step in the job. Make sure you do not use the same stepnames for EXEC statements in your job as those used for procedure steps in any cataloged procedure used in that jon. You can also test the return code produced by a procedure step of The EXEC Statement
63
......
another cataloged procedure used in the job. For example, if you want procedure step ST3 of the PROCB cataloged procedure bypassed when 10 is less than the return code produced by procedure step EDIT of a cataloged procedure called by the EXEC statement named TWO, code: //THREE EXEC
PROCB,COND.ST3=(10,LT,TWO.EDIT)
You can establish similar tests for all steps in the procedure by codinq the COND parameter without a procedure step naroe. For example, if you want the entire PROCB cataloged procedure bypassed when 10 is less than the return code produced by step EDIT of a cataloged procedure called by the EXEC statement named TWO, code: //THREE EXEC
PROCB,COND=(10,LT, TWO. EDIT)
• When a job step that contains the EVEN or ONLY subparameter references a data set that was to be created or cataloged in a preceding step, the data set (1) will not exist if the step creatin9 it was bypassed, or (2) may be incomplete if the step creating it abnormally terminated. • It is meaningless to specify the COND parameter for the first step of a job.
I
TIME Parameter (Systems With MVT Only) The TIME parameter specifies the maximum amount of time a job step or cataloged procedure step may use the cpu. Two benefits of the TI~E paramete:r are that it allows you to find out how long the step uses the cpu (CPU time appears on the output listing) and it helps limit the cpu time wasted by a step that goes into a loop. Normally, a job step that exceeds its time limit is terminated. However, if the System Management Facilities option is included in the cpu system and a user exit routine is provided, this routine can extend the time limit so that processing can continue. (The system Management Facilities option and user exit routines to be used with it are discussed in the publication IBM sys'tern/360 Operating System:--.9Ystem Programmer's Guide.) 'rhe forma·t of the TIME parameter is:
r--'------'-'-------------------------------------------------------------,
I ______________________________________________________________________ TIME=([minutes] [,seconds]} L JI Replace the term "minutes" and "seconds" with the maximum number of minutes and seconds that the step can use the cpu. The number of minutes must be less than 1440 (24 hours); the number of seconds must be less than 60. That is, the maximum time you can specify is TIME=(1439,59}. If the job step may require use of the cpu for more than 1439 minutes, code TIME=1440 to eliminate the time limit. If the cpu time limit is given in parentheses. For example, TI~E=12. seconds only, you must code both the the absence of minutes. For example
minutes only, you need not code the If the cpu time limit given is parentheses and a comma to indicate TIME=(,30}.
If you omit the TIME parameter, the default cpu time limit for a job (as established in the cataloged procedure for the input reader) is assumed. 64
Coding TIME=1440 also lifts the restrictions on the amount of time a job step may remain in a wait state. If the system Management Facilities option is included in the system, the installation determines this time limit. In this case, a job step remaining in a wait state for more than the established time limit causes termination of the job unless a user-provided exit routine extends the wait-state time limit for that step_ If the system Management Facilities option is not included, the system automatically provides a 30-minute time limit for wait states; that is, a job step remaining in a wait state for more than 30 consecutive minutes causes termination of the job. If the job step should be allowed to remain in a wait sta1:.e for more than the established time limit, code TIME=1440 to eliminate the time limit. When the job step uses a cataloged procedure, you can set a CPU time limit for a single procedure step by including, as part of the keyword TIME, the procedure step name, i.e., TIME.procstepname. This specification overrides the 'rIME parameter in the named procedure step, if one is present. You can code as many parameters of this form as there are steps in the cataloged procedure. For example, the following EXEC statement sets a time limit for two procedure steps of a cataloged procedure named PROCS. The name of the procedure steps are ABC and DEF. //AAA EXEC
PROCS,TIME.ABC=20,TIME.DEF=(3,40)
To set a CPU time limit for an entire procedure, code the TIME parameter without a procedure step name. This specification overrides all TIME parameters in the procedure if any are present. For example: //AAA EXEC
PROCS,TIME=20
Queuing Option (Systems With MVT Only) The DPRTY parameter allows you to specify a dispatching priority for the job step. For further information on dispatching priority, refer to "Task Priority" in the publication IBIVl system/360 Operating system: supervisor and Data Management Services, GC28-6646.
DPRTY Parameter (Systems With MVT Only) The format of the DPRTY parameter is:
r---------------------------·-------------·------------------------------,
IL________________________________________ DPRTY= ( [value~] [, value~d) .______________________________ JI Replace both "value~" and "value 2 " with a number from 0 through is. system uses the following formula to form the dispatching priority: (value~x12)
The
+ value2=dispatching priority
If you do not assign a number to "value~", a default value of 0 is assumed. If you omit "value:1." you must code both the parentheses and a comma preceding "value2" to indicate the absence of "value~". For example, if you code: DPRTY= (, S) a value of DPRTY=(O,S) is assumed. The EXEC Statement
6S
If you do not assign a number to "value 2 n , a default value of 11 is assumed. If you omit nvalue2" you need not code the parentheses. For example, if you code: DPRTY=7 a value of DPRTY=(7,11) is assumed. If you omit the DPRTY parameter, the ;ob step is assigned the priority you specified for the entire job either with the PRTY parameter of the JOB statement, or by default. Whenever possible, you should avoid assigllillg a numLer of 15 to "value 1 " . This number is used for certain system functions. When this step uses a cataloged procedure, you can assign a dispatching priority to a single procedure step by including, as part of the DPRTY parameter, the procedure step name, i.e., DPRTY.procstepname. This specification overrides the DPRTY parameter in the named procedure step, if one is present. You can code as many parameters of this form as there are steps in the cataloged procedure. For example, the following EXEC statement is used to establish a dispatching priori ty fo:rtwo procedure steps of a cataloged procedure named PROC6. The names of the procedure steps are UP and DOWN. //STEP9 EXEC PROC6,DPRTY.UP=(,S),DPRTY.DOWN=(4,6) To assign a single dispatching priority to an entire cataloged procedure, code the DPRTY parameter without a procedure step name. 'l'hi:3 specification overrides all DPRTY parameters in the procedure, if any are present. For example: //STEP9 EXEC PROC=PROC6,DPRTY=(5,9) Note: If your installatioh provides time-slicing facilities in a system with MVT, the DPRTY parameter can be used to make a job step part of a group of job steps to be time-sliced. At system generation, the priorities of the time-sliced groups are selected. If the number assigned to value 1 corresponds to a priority number selected for time-slicing and value 2 is either omitted or assigned a value of 11, then the job step will be time-sliced.
Main Storage Options (Systems With MVT Only) MVT processes several jobs at the same time in different regions of main storage. The size of each region depends on the requirements of each job. Once the processing of that job is completed, the system uses thai: space for other jobs. (The free space can be subdivided into smaller regions, used as is for a region the same size, or combined with adjacent free space for a larger region.) Usually you assign a region size through the HEGION parameter of the JOB statE~ment as described in the preceding chapter. In this case each step of the job will be executed in that region. You can, however, specify a different region size for each step in the job using the RBGION parameter of the EXEC statement. This is desirable in cases where different steps need a greatly different region size. For example one step of your job may need 16K while another may need 12SK. If you do not specify a region size for each step, there would be 112K unused wnile the first step is executed. Had you specified a region size for each step, MVT could use those 112K for executing other jobs while your first step is executed. 66
...___._."."..
~
_____._______._._... _.... _ _ .....
~
_ _ _ ..
~
_ _ _ _ _ _ _ _ _ _ _ _, _ l l i . _ _ _ _ _ _ _ _ _ ,RmE£
Regions are contiguous areas of main storage. However, you can define a two-part region if your operating system was generated with "main storage hierarchy support". Main storage hierarchy support provides for storage hierarchies 0 and 1. If IBM 2361 Core storaae, ~odel 1 or 2, is present in the system, processor storage is referred to as hierarchy 0 and 2361 core storage is re:Eerred to as hierarchy 1. If 2361 Core storage is not present but main storage hierarchy support was specified during system generation, a two-part region is established in processor storage when a region is defined to exist in two hierarchies. The two parts are not necessarily contiguous. The REGION parameter allows you to specify the region size to be used by your job step. Notes: • If you have specified a RBGION parameter in the JOB statement, REGION parameters on the JOB'S EXEC statements are ignored • • In systems without main storage hierarchy support, processor storaqe is referred to as main storage. In systems with main storage hierarchy support, main storage comprises both processor storage (hierarchy 0) and 2361 core storage (hierarchy 1). Sometimes a job step will run out of space in its region. Normally, this means that the step is terminated. However, if the rollout/rollin option was generated for your MVT system, the system can obtain more space for your job step. This is accomplished by "rolling out" another job step that is currently being executed and allocating its region to your job step. After proc~ssing of your step is ended, the rolle3-out step is "rolled inn and its processing continues. The ROLL parameter lets you specify whether the job steps in your iob can be rolled out and whether they can cause rollout of other job steps. Note: ROLL parameters coded on EXEC statements are superseded by a ROLL parameter coded on the JOB statement.
REGION Parameter (Systems With MVT Only) The REGION parameter allows you: 1.
'To request the maxirrtum amount of main storage to be allocated to the job step. This figure must include the size of those components that are required by your progr~a and are not resident in storage.
2.
'ro request the amount of main storage to be allocated to the job step and in which storage hierarchy or hierarchies the space is to be allocated. This request should be made only if main storage hierarchy support is specified during system generation.
The storage requirements you must consider when specifying a region size are outlined in the publication IBM System/360 Operating System: Storage ~stimates. 1.
The format of the REGION parameter for systems without storage hierarchies is: r ------------------------------------------------- - - - - - - - - - ---------,
IL _________________________________________________________________ REGION=vaiueK JI
The EXEC Statement
67
EXEC
~eplace the term "value" with the number of contiguous 1024-bytes areas you want allocated to the jobstep, for example, REGION=52K. This number can range from one to five digits but cannot exceed 16383. It should be specified as an even number. (If you specify an odd number, the system treats it as the next highest even number.)
If you omit the REGION parameter, the default value (as established in the input reader procedure) is assumed. When the job step uses a cataloged procedure, you can request a region size for a single procedure step by including, as part of the REGION parameter, the procedure step name, i.e., KEGION.procstepname. This specification overrides the REGION ~arameter in the named procedure step, if one is present. You can code as many parameters of this form as there are steps in the cataloged procedure. For example, the following EXEC statement is used to assign region sizes to two procedure steps of a cataloged procedure named PROC7. The names of the procedure steps are LITTLE and BIG. //GO EXEC PROC7,REGION.LITTLE=20K,REGION.BIG=200K To request a single region size for an entire cataloged procedure, code the REGION parameter without a procedure step name. This specification overrides all REGION parameters in the procedure, if any are present. For example, //GO EXEC PROC=PROC7,REGION=200K 2 pendix D. 'Tnis appendix shows tne correct formats of the parameters for each of the functions without textual descriptions. Note: Some devices, such as graphics devices, are not discussed in this manual. For information on how to specify IEM devices not described in this manual, refer to IB~ System/360 Cperatinq System: Job Control Language Reference.
The DD statement
75
Table
5.
DD statement Paran,eters
(Part 1 of 2)
r------------T---------T----------------------T---T---------------------~
I
Type
I Parameter I
Functiol1
IP/KI
Comments
I
~-----------+---------+----------------------+---+---------------------~
IData Set I DSNAME INames the data set. Ifl K I I I Information I (or DSN) I on:i tted, the data set I I I I I is considered to be I I I I I I I t.€lT,porc..ry. I I I I t---------+----------------------+---+---------------------~ I IDISP Ispecifies the current I K I I I I I status of the datd set I I I I I land whether or not i t I I I I I I will be retained after I I I I I Ithe job step. I I I ~-----------+---------+----------------------+---+--------.-------------~
Location oflUNIT the oata I set I
I specifies the type of I K I I device to be used for I I Ithe data set.
I
I
I I I
t---------+----------------------+---+---------------------~
I VOLUME I Describes the volume I I (or VOL) Ion which the data set I I I resides. I
K
IFor magnetic tape or I Idirect access devices I lonly. I
t---------+-----------------------+---+---------------------~
I LABEL I I
I label.
I K IFor magnetic tape or I I I direct access cievices I
I
I
IDescribes the volume
lonly.
I
t---------+----------------------+---+---------------------~
ISYSOUT
I I
IRoutes a data set I t:hrough the output I stream.
I K I I I I I
I I I
t---------t----------------------t---+--------·-------------~
1* I
I Indicates that the Idata set is in the linput stream.
I
I
I
I P IOnly one of these I Iparameters can be I lused in a DD stateI Iment.
t---------+----------------------+---~
I DATA
I I I I
I
I Indicates that the I P I I data set is in the I I linput stream and that I I I I i t contains JCL sta te- I Iments to be treated asl I I data. I I
I I I I
I
I I I I I I
t-----------t---------+----------------------t---+---------------------~
ISize of theisPACE IData Set I I I I I
IRequests space on Idirect access devices. I I
I K IOnly one of these I Iparameters can be I I used in a DD stateI Iment.
I
t---------+----------------------+---~
I I I
I
I
I I I
I SPLIT
IUsed to split cylinI K Iders between data setsl
I I
.---------t----------------------+---~
ISUBALLOC I Specifies that the I K I Idata set shares direct I I I I I access space with I I lother data sets. I I I
t-----------t---------+----------------------+---+---------------------~
I Data IDCB I Specifies the data I K I I IAttributes I lattributes not speci- I I I I I I I I fied in your process- I IL___________ LI _________ LI ______________________ inq program. LI ___ LI ____ _________________ JI
76
Table
5.
DD statement Parameters (Part 2 of 2)
r-----------T---------T-----------------------T---T---------------------~
I
Type
I Parameter I
Function
I P/K I
I
COIrments
~-----------+---------+----------------------+---+---------------------~
special ISEP processing I Options I
I I
IRequests that the datal K 10nly one of these I set be assigned a I Iparameters can be Iseparate channel frlagnetic I Data ITape I Information
I DSNAME I Required if the data set is to be cataloged or I (or DSN) I used by a later job.
I
~---------t---------------------------------------------------~
I
I I I
I DISP I I
I I
I Required if the data set is to be cataloged, used I I by a later step in this job, or used by another I I I job.
~----------------t---------t---------------------------------------------------~
I Location of the I UNIT IData Set I I I
I Required unless you request (with the VOLUME paI I rameter) the same volume used for an earlier data I I set in your job. earlier data set in your job. I
I
~---------+---------------------------------------------------~
I
r---------t---------------------------------------------------~
I I
I VOLUME I Required if you want a specific volume. If you dol I (or VOL) I not use this parameter you get a scratch tape. I
I I
I LABEL I
I Required if you do not want to use standard I labels for the (lata set.
I I
r----------------t---------t---------------------------------------------------~
IData Attributes I DCB
I Optional.
I
r----------------t---------+---------------------------------------------------~
13pecial Process-I SEP I Either parameter can be used. ling Options ~---------~ I I AFF I
r---------t---------------------------------------------------~
I
I
I I I
I
I DUMMY
I Optional.
I
r--------+----------------t---------+---------------------------------------------------~
I Direct IData Set IAccess I Information IDevices I I I I I I I I I I I I
~---------t---------------------------------------------------~
I DISP
I I
ILocation of the I UNIT IData Set I I I I I I I
I Required if the data set is to be cataloged, used I I by a later step in this jOb, or used by another I I job. I I I I I I
Required unless you request (with the VOLUME parrameter) the same volume used for an earlier data set in your job, or unless you use the SPLIT or SUBALLOC parameters to allocate space to this da ta set.
I I I I I
~---------+---------------------------------------------------~
I
i
!VOLUME ! Required if you want a specific volume or mUltiple I I (or VOL) I volumes. If you do not use this parameter your I I I data set will be allocated on any suitable volume. I I ~---------t---------------------------------------------------~ I I LABEL I Required if you want the data set to have both I I I I standard and user labels. I r----------------t---------t---------------------------------------------------~ ISize of the DatalSPACE lOne of these parameters is required. SPLIT can I ISet t---------~ only be used for BSAM or QSAM data sets SPACE mustl I I SPLIT I be used for ISAM data sets. I I r---------~ I I I SUBALLOC I I ~----------------t---------t---------------------------------------------------~ IData Attributes IDCB I optional. Required for BDAM and ISAM data sets. I ~----------------t---------+---------------------------------------------------~ ISpecial Process-ISEP I Either parameter can be used. I ling Options t---------~ I I IAFF I I
I I
I I I
I
I
I I
I
I I I
I I
I
I
I
I I
I I
80
I I
r----------------t---------t---------------------------------------------------~
I
I _____ L
I DSNAME I Required if the data set is to be cataloged or I (or DSN) I used by a later job.
r---------t---------------------------------------------------1
I
~
I ____________ __ .L
, •••
Tempora:~
-- For the Duration of the Job step: Both the DSNAME and DISP parameters can be omitted to indicate a temporary data set which will be deleted at the end of the job step. You can, if you wish, code the following:
r-----·-----------------------------------------------------------,
I DSNAME=J&&name} ~ISP=(NEW,DELETE,DELETE) I t&name I __.____.___________________________________________________________ L ._JI
94
The temporary name in the OSNAME parameter is coded as described for temporary data sets for the duration of the job. All subparameters of the OISP parameter are assumed if omitted" For example, the three following 00 statements define the same data set: 1/002 OD OSNAME=i&AREA,DISP=(NEW,DELETE,DELETE), ••• or .//002 DD DSNAME=&&AREA, ••• or ./ /DD2 DD ••• Note that the location parameters must still be coded in those sta-tements •
(
Non-temporary are:
cataloged:
Creating
The formats of the OSNAME and DISP parameter
r-----------------------------------------------------------------------,
I DSNAME=dsname, OISP= (NEW, CATLG [, CATLG ]) I I ,DELETE I Il _______________________________________________________________________ ,KEEP JI In the DSNAME parameter, replace the term "dsname" with the qualified name you want to give to the data set. A qualified name is made up of several 1-to-8-character names separated by periods. All but the last of those names correspond to index levels in the catalog. Each name must begin with a letter or national-(Ol,$(f#) character. Any letter, number, national character, -the hyphen, and the +0 (12-0 mUltipunch) can be used to complete each name. A qualified name can consist of 1 through 44 characters (including periods)" For example, DSNAME=AB-S0l3.M.$7.R2579AB2 Each level of qualification must already exist as an index in the system catalog before you can request the system to catalog the data set. An index level is created using the IEHPROGM utility program. Once the indexes are established, the data set can be cataloged. If the name has no qualifiers (called unqualified name), the system will create the index entry for you. For example, DSNAME=C174B or DSNAME=D In the DISP parameter, the NEW subparameter indicates that you are creating the data set. You do not have to code NEW as long as you indicate its absence by a comma. The CATLG subparameter indicates that the data set is to be cataloged. The third subparameter tells the system what is to be done with the data set if the step abnormally terminates (ABEND). If the data set name is either qualified or unqualified, you can specify CATLG or DELETE. CATLG is assumed if you omit the third subparameter. If the data set is unqualified, you can specify KEEP as the third subparameter. KEEP tells the system that if the step abnormally terminates you want the data set kept intact (but not cataloged) until a later job requests that the data set be deleted or until the expiration date has passed. (You can specify a retention period or expiration date in the LABEL parameter.) The DO statement
95
Magnetic Tape
In the following example. a new data set named SYSTEM~FILEl is to be cataloged. If the step abnormally terminates it will be cataloged. //003 000SNAME=SYSTEM.FILE1.0ISP=(.CATLG) •••• In the following example, a new data set named AREA#5 is to be cataloged. If the step abnormally terminates. it will be kept. //004 00 OSNAME=AREA#5,0ISP=(,CATLG,KEEP), ••• Nontemporary -are:
~~i:
The formats of the DSNAME and DISP parameters
r-------·--------------------------------------------------------------,
I DSNAME=dSname,DISP=(NEW,KEEP[,KEEP ]) I ,DELETE I I Il _______._._____________________________________________________________ ,CATLG JI In the DSNAME parameter, replace t.he term "dsname" with the unqualified name you want to give to the data set. The name can contain from 1 to 8 characters. The first character must be a letter or a national character (@,$,#). Any letter, number. national character, the hyphen, and the +0(12-0 mUltipunch) can be used to complete the name. For example, DSNAME=@A#753 In the OISP parameter, the NEW subparameter indicates that you are creating the data set. You do not have to code NEW as long as you indicate its absence by a comma. The KEEP subparameter indicates that the data set is to be kept intact (but not cataloged) until a later job step or job requests that the data set be deleted or until the expiration date has passed. (You can specify a retention period or expiration data in the LABEL parameter.) The third subparameter tells the system what is to be done with the data set if the step abnormally terminat.es (ABENO). You can specify KEEP, DELETE, or CATLG. KEEP is assumed if you omit the third subparameter. In the followinq example, a new data set named RTW is to be kept. the step abnormally terminates, it will also be kept.
If
//005 00 OSNAME=RTW,DISP=(,KEEP), ••• In the following example, a new data set named TWO is to be kept. the step abnormally terminates it will be deleted.
If
//OD6 00 DSNAME=TWO,DISP=(,KEEP,DELETE), ••• No·tes: -• You can give a disposition of PASS to a new data set with an unqualified name. For example, DSNAME=DATA, DISP= (, PASS) Such a data set can become a temporary, cataloged, or kept data set according to the disposition you give to i t in a later DO statement. See "Passed Data Sets" in "Retrievinq an Existing Data Set." If the data set is not referred to by a later DD statement in the job, i t is deleted at the end of the job. 96
• You can use special characters as part of the unqualified data set name if you enclose the name in apostrophes. For example, DSNAME=' AB=750" If the special character is an apostrophe, you must code i t as two consecutive apostrophes. For example, code NAT'L as DSNAME='NAT"L' Do not catalog the data set if you enclose the data set name in apostrophes.
Nont.emporary -- Member Generation Data Gro!!Q: A cataloged data set that is periodically processed can be grouped with its earlier generations to form a named generation data group. The entire group has a generation group name. Each member of the group can be addressed by a simple generation number. The last generation produced before the start of your job has a generation number of O. The generation produced before the last one is -1. The generation you are going to produce in your job is +1. After your job ends, the generation you produced automatically becomes generation O. If you produce more than one generation in your job, you must name them +1, +2, +3, etc. After your job, the highest generation number you produced, say, +3, becomes generation 0; +2 becomes -1; and +1 becomes -2. :E,'or further information on creating generation data groups, refer to AppE:mdix D of the publication IBM System/360 Job control Language RefE~rence. The formats of the DSNAME and DISP parameters for creating a new member of a generation data group are:
r-----------------------------------------------------------------------, J)
I DSNAME=groupname(+number) ,DISP=(NEW,CATLG[,CATLG I IL_______________________________________________________________________ ,DELETE JI In the DSNAME parameter, replace the term "groupname" with the name of t:he generation data group. The name can contain from one to eight characters. The first character must be a. letter or national character (@,~~,#). Any letter, number, national character, the hyphen, and the +0(12-0 multipunch) can be used to complete the name. The groupname can be a qualified name. The qualified name can contain up to 35 characters (including periods). Replace the term "number" with the number of the genE~ration you are creating. If you are only creating one generation in yOu]~ job, this number will be 1. For example, DSNAlVIE=PAYROLL. PLANT 2 0 (+1) or DSNAME=MASTER(+1) If you are creating more than one generation in your job, number each generation consecutively. For example, DSNAME=MASTER(+1) DSNAME=MASTER(+2) etc,. ~[n the DISP parameter, the NEW subparameter indicates that you are crea.ting the data set. You do not have to code NEW as long as you indicate its absence by a comma. The CATIJG subparameter indicates that the new generation is to be cataloged. (This subparameter is required.)
The DD statement
97
(
Creating Magnetic Tape
The thil~d subparameter tells the system what is to be done with the dat~a set if t:he step abnormally tepninates (ABEND). You can specify CATLG or DELETE. CATLG is assumed if you omit the third subparameter. In the following example. two new generations are added to the PAYROLL generation data group. If the step abnormally terminates the new generations will be deleted.
r----------------------------------------------------------------.,
I //STEP EXEC PGM=... I I . I I · I I I . I //DD7 DD DSNAME=PAYROLL(+l).DISP=(.CATLG.DELETE).... I I I //DD8 DD DSNAME=PAYROLL(+2),DISP=(,CATLG,DELETE),... I · I I · I L •___________________________________________________________ ,JI I ______ · After your job is successfully completed PAYROLL(+2) becomes PAYROLL(O>, and PAYROLL(+l) becomes PAYROLL(-l).
The UNrr. VOLUME and LABEL parameters are used to describe the locatioIl, of your data set. The UNIT parameter indicates which kind of tape drive you want~, and, if your data set is to occupy more than one volume, i t indicates how many tape drives are needed. The VOLUME parameter lets you request a scratch volume (or volumes) or a private volume (or volumes). If you request a private volume you can request a specific volume or you can let the system assign you a volume. The LABEL parameter describes the tape label of the volume used for your data set. UNIT:
The format of the UNIT parameter is:
r-------·-·---------------------------------------------------------, I {Unit addreSS}[,UnitcountJ I I UNIT=: ( device type ,P [ , DEFER] ) I group name , I _______.______________________________________________________________ L JI The first positional subparameter identifies the tape drive you want to use for your data set by its address. or unit name, or group name. unit address is the actual machine address of the tape drive.
For example,
UNIT=240 You should not specify the address unless you are sure you want it. Do not specify an address if you are going to need more than one drive for the data set. (Multiple drives are requested with the second subparameter of the UNIT parmeter.) device type corresponds to the type of tape drive. Coding a device type provide you with a certain degree of device independence in that your data set may be placed in any number of devices of the same type~ For example. if you code UNIT=2400-1 98
,_ _ _.'_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ I _ _ ...,,,,,,'''''.:ur.r''' .............'''''.,_............ _ . _ _ _ • _ _ _ _ _ • _ _ _ . . _ _ _ _ _ _ _ ,
...........a1_
your data set will be placed on any 2400 series tape drive with seven-track compatibility and without data conversion. The following device types can be specified. Device Type
Description
2400
2400 series Nine-Track Magnetic Tape Drive that can be allocated to a data set written or to be written in 800 bpi density when the dual density feature is not installed on the drive, or in 1600 bpi when the dual-density feature is installed in the drive ..
2400-1
2400 series Magnetic Tape Drive with Seven-Track Compatibility and withou-t Data Conversion.
2400-2
2400 series Magnetic Tape Drive with Seven-Track Compatibility and Data Conversion.
2400-3
2400 series Nine-Track Magnetic Tape Drive that can be allocated to a data set written or to be written in 1600 bpi density.
2400-4
2400 series Nine-Track Magnetic Tape Drive having an 800 and 1600 bpi capability.
Magnetic Tape
group name is the name of a collect.ion of devices, selected by your installation during system generation. For example, your installation might select the name TAPE for all tape drives in the configuration. If you do not care which tape drive is used for your data set, you would then code UNIT=TAPE Your manager or supervisor should tell you which group names were generated for your installation. ~~he second positional subparameter is used only if your data set will occupy more than one volume and if you want more than one of those volumes to be mounted at the same time. This subparameter indicates how many drives are to be used for mounting your data set's volumes.
unit. count indicates how many tape drives you want assigned to the data set. You can specify a maximum of 59 drives per DD statement. Make sure that your system has at least the number of drives you specify. otherwise an error will result. If you specify fewer drives than the number of volumes in your data set, only the same number of volumes as there are drives can be mounted at the same time. (If you think your data set may use more volumes than you expect, you should indicate the maximum number of volumes that can be used with the volume count subparameter of the VOLUME parameter. Do not request any more tape drives than the maximum number of volumes you specify.) For example, if you write UNIT= (2400,5) five 800 bpi drives will be assigned to your data set. P
specifies parallel mounting. When you request parallel mounting the system counts the number of serial numbers specified with the VOLUME parameter and assigns to the data set as many tape drives as there are serial numbers. You should only use the P subparameter if you are making specific volume requests in the VOLUME parameter. The DD Statement
99
If, in addition to indicating specific par'ameter, you also indicate a maximtml be used by the data set, the number of nurrmer of serial volumes you specified number of volumes that can be used.
serial numbers in the VOLUME number of volumes that can drives assigned is the and not the larger maximum
If your data set required only one tape drive, you can either code 0 or omit this parameter. If you omit this subparameter and the DEFER subparameter follows, you should code a comma to indicate its absence. For example, UNIT=(2400"DEFER) DEFER is the third positional subparameter. DEFER requests the system to assign the required tape drives to the data set and to defer the mounting of the volume or volumes until the processing program attempts to open the data set. If you are running under MFT or MVT, operating efficiency may decrease if you specify DEFER for a tape data set. This is because if you code DEFER, the system issues a mount message to the operator when the processing program attempts to use the data set and then waits until the volume is mounted. If you do not code DEFER, the mount message is issued when the device is assigned and ther,e is no waiting for the operator. By the time your program tries to use the data set, it is very likely that the operator has already mounted the volume and that the system will not have to wait for him. In the following example. the UNIT parameter is used to request four seven-track tape drives with data conversion. UNIT=(2400-2.4) In the following DO statement, the unit parameter is used to request as many tape drives of a group named TAPE as there are volumes specifically requested with the volume parameter. Deferred mounting is also requested. //D09 DO UNIT=(TAPE.P,DEFER).VOLUME=SER=(ABC24,ABC25.ABC29> •••• As a result three tape drives are assigned to the data set. and all three volumes requested can be mounted at the same time. Note: The UNIT parameter is ignored if you use the VOLUME parameter to request a volume used by a data set defined earlier in your job, that is, if you specify VOLUME=REF.
VOLUME: The VOLUME parameter lets you request a specific volume for your data set or lets the system assign your data set a suitable volume (nonspecific request). If you make a nonspecific request" you can ask for a scratch volume or for a private volume. If you make a specific request, you get a private volume. Scratch volumes can only be requested for temporary data sets. Private volumes can be requested fOl: either temporary or nontemporary data sets. The following is a summary of the types of volume request that can be made for new data sets on magnetic tape: 1.
Nonspecific request a. b.
2.
Specific request
a. 100
Scratch volume Private volume
Private volume
Note: When you ask the system (nonspecific request), you can want that volume to have. You LABEL parameter and the system available to you.
to assign you an available volume also specify which kind of labels you simply indicate the label type with the will make a volume with that label type
Nonspecific Request -- Scratch Volume: If you have a temporary data set you can request a scratch volume. The format of the VOLUME parameter depends on whether you need one volume or more than one volume. 1.
To request only one scratch volume simply omit the VOLUME parameter. For example, if you have a temporary data set that will last only for the duration of the job step and you want a scratch volume to be mounted on a nine-track (800-bpi) tape drive, code: //DDIO OD UNIT=2400, ••• If you have a temporary data set named &&AREA that is to be passed to other steps in your job and you want a scratch volume to be mounted on a seven-track drive with data conversion, code:
If your temporary data set requires more than one scratch volume, code the VOLUME parameter as follows:
r-----------------------------------------------------------------,
Il _________________________________________________________________ VOLUME=(",volcount) JI Replace the term "volcount" with the number of volumes required for your data set. For example, if your data set requires four scratch volumes and you want them in succession on one nine-track tape drive, code: //0012 OD UNIT=2400,VOLUME= I IL ___.___________________________________________________________________ *.stepname.procstepname.ddname JI
Replace "ddname" with the name of the DD statement whose DCB parameter you want to copy. Replace "stepname" with the name of the EXEC stat.ement of the step that contains that DD statement. If the DD stat.ement you want to copy is contained in the same job step, omit the stepname, i .. e., DCB=*. ddname. The following example . shows how. to code the DCB parameter to copy the DCB parameter of a DD sta'tement in previous step:
r-----------------------------------------·-----------------------------,
I //STEP2 EXEC... I I //DD1 DD ••• ,DCB=(BLKSIZE=1600,LRECL=80) I I . I I . I I . I I I //STEP4 EXEC... I I //COPY DD ••• ,DCB=*.STEP2.DD1 I . I I . I L JI I ______________________________________________________________________ .
The following example shows how to code the DCB parameter of a previous DD statement in the same step:
r--·------------------------·----------------.. . -------------------------,
I I I I I I
. . . .
I I I I I I
1 •
I
/.1 S TEPD EXEC...
//DDA DD ••• ,DCB=RECFM=F
I . I I I /.IDDC DD ••• , DCB=*. DDA I . I , I I ___________________________ . L .____________ •_____________________________ JI
If you want to copy the DCB parameter of a DD statement contained in a cataloged procedure step, you must give both the name of the job step that invokes the procedure and the procedure step name, i.e., DCB=*.stepname.procstepname.ddname The: first part of the following example shows your input deck; the second part shows a cataloged procedured called by the ST2 EXEC statement in your deck. The DD statement
111
Magnetic Tape
r-------------------------------------------------------.--------------,
I INPUT DECK
I
~-----------------------------------------------------------------------~
I . I . I . I //ST2 EXEC PROC=XYZ I· ~ I· ~ I . s tepname I //COPY EXEC ••• ~ I //DD1 DD ••• ,DCB=*.ST2.STEP4.DATA I , / ddname ~ I procstepname ~
~-------_.----------L--------------------------------- _.
I CATALOGED PROCEDuRE
I I I I I I I I I I I
______________ ~
I
/'
r-~---~~-----------------------------------------------l
I //STEP4 EXEC... I I I //DATA~D ••• ,DCB=BUFNO=4 I . I I . I JI IL_______________________________________________________________________ . If you want to modify the DCB subparameters you are copying add the new subparameters to the reference. The subparameters you specify will override the corresponding copied subparameters. For example,
r----------------------------------------------------------------------,
I . I I . I I I . I I //OUT EXEC... I //TAPE1 DD ••• ,DCB=(BLKSIZE=160,LRECL=80,OPTCD=C,DEN=1 I I //TAPE2 DD ••• ,DCB=(*.TAPE1,DEN=2,RECFM=V) I I . I I . I . I _________________________________ L _____________________________________ JI ~
special
Proc~ssing
Options
There are two special processing options for data sets on magnetic tape: 1.
You can request channel separation from other data sets in the same job step using either the SEP or the AFF parameter.
2.
You can suppress I/O operations on your data set using the DUMMY parameter.
SEP: When two or more data sets are to De used in a job step, processing time may be shortened by requesting that the system transmit data sets over separate channels. For example, it would be faster to have your input data set and your output data set on separate channels than to have them on the same channel. 112
You can request channel separation for data sets in each job step using the SEP parameter. If possible, the system will honor this request. It may not always be possible to honor the request for separation because given devices may not be available for allocation when the job step is executed or because there may not be enough devices of a given type on different channels for all the data sets that request separation. If channel sepa:ration is not requested, the system will assign any available channel that has the device specified with UNIT parameter. 'rhe format of the SEP parameter is:
r--·-------------------------·-------------·------------------------------,
I ______________________________________________________________________ SEP=(ddname, ••• ) L JI Replace the terms "ddname" with the names of up to eight earlier DD statements in the same job step. The earlier DD statements can define any type of data set; new or existing, on magnetic tape or direct access, temporary or nontemporary, etc. In the following example, you request that the data set defined by the FOUR DD statement be assigned to a channel other than the ones assigned to the data sets defined by the ONE and TWO DD statement. The data sets defined by ONE and TWO may o.r may not be on the same channel. The data set defined by THREE mayor may not be on the same channel as any of the other three data sets.
r------------------------------------------------------------------------,
I IIPROGl EXEC PGM=PROCESS I I /IONE DD UNIT=2400,VOLUME=PRIVATE,LABEL=(,NL) I I /ITWO DD DSNAME=SYSTEM.USER.ABC,DISP=OLD I I //THREE DD DSNAME=HELP,DISP=(,KEEP),UNIT=2314, I I /1 VOLUME=SER=AFL,LABEL=RETPD=31 I I I /IFOUR DD DSNAME=END,DISP=OLD,UNIT=2400-2, I ________________________________________ II VOLUME=SER=TAPE75,SEP=(ONE,TWO) L .______________________________ JI Using the preceding example, if you want to request that the data set defined by the THREE DD statement be on a channel other than the one assigned to the data set defined by the TWO DD statement code:
r----------------------------------------·-------------------------------,
I //PROGl EXEC PGM=PROCESS I I //ONE DD UNIT=2400,VOLUME=PRIVATE,LABEL=(,NL) I I /ITWO DD DSNAME=SYSTEM.USER.ABC,DISP=OLD I I //THREE DD DSNAME=HELP,DISP=(,KEEP),UNI'r=2314, I I // VOLUME=SER=AFL,LABEL=RETPD=31,SEP=TWO I I /IFOUR DD DSNAME=END,DISP=OLD,UNIT=2400'-2, I I _______________________________________________________________________ /1 VOLUME=SER=TAPE75,SEP=(ONE,TWO) L JI As a result of this example, the data sets defined by ONE and TWO may or may not be on the same channel. The data set defined by THREE and l!'OUR mayor may not be on the same channel, but neither one wi 11 be on the same channel as the data set defined by TWO. Also the data set defined by FOUR will not be on the same channel as the data set defined by ONE. Remember that the request for channel separation made with the SEP parameter is only a suggestion for more efficient operation, and not a requirement. If your data set must be on separate channels specify unit add~esses with the UNIT parameter. You can obtain a configuration chart with all the unit addresses from your manager or supervisor. The DD statement
113
Magnetic Tape
AFF: The AFF parameter provides a shortcut method of requesting channel separation. When two or more data sets in the same JOD step have the same channel separation requirements, you can code the Sl!,P parameter for the first data set, and then request the same separation using the AFF parameter for the later data sets. The AFF parameter tells the system that you want the data set defined in this DD statement to have the same channel separation as the data set defined in the named DD statement. The format of the AFF parameter is:
r----------------------------------------------------------------------,
IL ______________________________________________________________________ A.FF=ddname JII Replace "ddname" with the name of the earlier DD statement that requests the desired channel separations. This data set and the earlier data se1: mayor may not be on the same channel. In the following example, the data sets defined by DDl and DD2 mayor may not be on the same channel. The data sets defined by DD3 and DDS mayor may not be on the same channel, but neither one will be on the same channel or channels as the data sets defined by DDl or DD2. The data set defined by DD4 will not be on the same channel as the data set defined by DD3, but it may be on the same channel as the data sets defined uy DD1, DD2, or DDS.
r-------·---------------------------------------------------------------,
I //STEP EXEC PGM=METHOD2 I I //DD1 DD I I //DD2 DD I I //DD3 DD SEP=CDD1,DD2),... I I //DD4 DD SEP=DD3,... I I ____________________________ //DDS DD AFF=DD3, ••. __________________________________________ . L JI The requests for channel separation and affinity are only suggestions to the system. They will be honored if the appropriate devices are available.
u01~jY: The DUMMY parameter allows you to bypass I/O operations and data. set-disposition. When your processing programs ask to write the dummy data set, the write request is recognized, but no data is transmitted. This facility is particularly useful when you are debugging your program because it saves you processing time. For example, you can suppress the~ writing of a data set until you are sure your program is going to produce meaningful output.
The DUMMY parameter is a positional parameter. That means that it must be coded first in the operand field. For example: //OUT:PUT DD DUMMY,UNIT=2400-1, //DD7 DD DUMMY,DSNAME=&&JOE,DISP=(,PASS),UNIT=TAPE7, // LABEL=(,SUL),DCB=TRTCH=ET If you wish, you can omit all other parameters required to define your data set except DCB. (If you were not going to write the DCB parameter you do not have to write it.) For example, the two DD statements shown above could be coded as follows: //OUTPUT DD DUMMY //DD7 DD DUMMY,DCB=TRTCH=ET 114
When you are ready to perform I/O operations on your data set, sirrlply omit the DUMMY parameter and code all parameters required to write the data set. For example, //OUTPUT DD UNIT=2400-1, //007 DD OSNAME=&&JOE,DISP=(,PASS),UNIT=TAPE7, // LABEL=(,SUL),DCB=TRTCH=ET
DirElct Access Devices
You can create five different kinds of data set on direct access devices: • • • • •
sequential data sets. Direct data sets. Partitioned data sets. Generation data sets. Indexed sequential data sets.
(
Direct Accel Devices
The parameters shown in Table 6 are USE:~d to create those data sets. The definition of an indexed sequential data set may require up to tnree DD statements, and is discussed in Appendix A. The remaining four kinds of data sets are defined with only one DD statement. The way you use certain parameters indicates which kind of data set you are defining. These differences are summarized below and will be pointed out aqain when the parameters are discussed in the remainder of this topic. • sequential data set -- You use basically the same parameters used to define a data set on magnetic tape and you must also allocate space for the data set using one of the following parameters: SPACE, SPLIT, or SUBALLOC. • Direct data set -- You use the same paranleters as for a sequential data set, with the exception of the SPLIT parameter. If not specified in your program, you must write DSORG=DA or DSORG=DAU in the DCB parameter. • Partitioned data set -- You use the same parameters as for a sequential data set, with the exception of the SPLIT parameter. You must code the number of directory blocks in the SPACE or SUBALLOC parameters. You can define the first member of the data set at the same time you allocate the partitioned data set.. To do this use a special form of the DSNAME parameter, i.e., DSNAME=dsname(membername) To learn how to add more members to a partitioned data set, refer to the section "Extending an Existing Data set." • Generation data set -- You use the same parameters as for a sequential, partitioned, direct, or indexed sequential (if the data set is defined on one DD statement) data set. You must use a special form of the DSNAME parameter, i.e., DSNAME=groupname(+number) Generation data sets must be cataloged, i.e., -~
...
'
Creating
DISP= ( , CATLG) The DD statement
115
For further information on the different types of data set refer to section 3: Data Management" in IBM ?-.Y~tem/3 6 O~ra ting System :_ Concepts and Facilities.. Pr:ograms written in ALGOL or FORTRAN H cannot use direct data sets. Partitioned data sets can only be used by programs written in the assembler language. (programs written in COBOL or FORTRAN can use partitioned data sets in a restricted way. For further information refer to the language Programmer's Guide.) n
This section is summarized in Table 66 of Appendix D.
The DSNAIV1E and DISP parameter are used to specify which type of data se't you want to create. There are two types of data sets: temporary and nontempo:r:ary. A temporary data set is one that will be used for the duration of the jobstep or the job only. A nontemporary data set is one that can be used not only by the jobsteps in your job, but by later ions as well. 'I'here are three types of nontemporary data sets: cataloged data sets, kept (or noncataloged) data sets, and members of generation data groups. The following is a summary of the types of data sets that can be created on direct access devices: 1.
Temporary a. b.
2.
For the duration of the job (sequential, direct or partitioned) • For the duration of the jobstep (sequential, direct or partitioned) •
Nontemporary a. by c.
cataloged (sequential, direct, or partitioned). Kept (or noncataloged) (sequential, direct or partitioned). Member of a generation data group.
The formats of the DSNAME and DISP parameters for each type of data set are described below.
TemEorary--::- Fo_:r.:_t_l:!~_p_-q, UNIT= (2311 ,2) , •••
." . · //OD5
DD "VOLUME= (, , , .5,REF=* :.DD1) , UNIT=(, 5), •••
I · I . -------___________________________ JI IL_______________________________ · When the earlier DD statement is contained in a cataloged procedure step, you must give bo·th the name of the job step that invokes the procedur~ and the procedure step name, i.e., VOLUME=REF=*.stepname.procstepname.ddname T"he first part of the following example shows your input deck: the second part shows a cataloged procedure called by the STEP9 EXEC statement in your job. The DD statement
129
creat:; Direct Acci Devices
r-----------------------------------------------------------------, I INPUT DECK
II
~-----------------------------------------------------------------1i
I · I · I · I //STEP9 EXEC PROC=ABC I· ______ I· ~ I • stepname ___ ~ I //STEP12 EXEC... ~ I //DDA DD VOLUME=REF=*.STEP9. HASE3.FILE I protstepname~ I / ~~
Ii
I I I I I I I I I I
~---.----------------?----------~---------------------------------~
I CATALOGED PROCEDURE
~
I
r-~-----~~------------------------------------------l
I //PHASE3 EXEC I I //FILE~ VOLUME=SER=123456,... I I · I I . I - __________________________________________________________ J IL ______ • I If you want to use the volume assigned to a kept data set defined in another job, you must use VOLUME=SER.
specific Reguest -- Private Volume: You can request specific volumes by either stating the serial number of the volumes you want, or by requesting -the same volume used by an earlier data set. 1.
The format of the VOLUME parameter for requesting volumes by their serial numbers is:
r-----------------------------------------------------------------,
I VOLUME=(PRIVATE['RETAINJ[.'VOlcount']SER=(Serial'.~.» I I , L _________________________________________________________________ JI The PRIVATE subparameter is required. The RETAIN subpararneter means that the volume will not be demounted at the end of the step. (RETAIN has the same effect on volume mounting as coding PASS in the DISP parameter.) Private volumes are demounted at the end of the step unless it is an unremovable volume, such as a 2301, or unless it has been designated by your installation to be a permanently resident volume, for example, the system residence volume. It is recommended that you use the RETAIN stibparameter whenever you want the volume to remain mounted at the end of the step. For example, if you want 10 cylinders of a private 2314 volume named SYS333 for a temporary data set, code: //DASD14 DD UNIT=2314,VOLUME=(PRIVATE,SER=SYS333),SPACE=(CYL,10)
130
If you want 20ttacks of a p:rivitte2311 vol,umenall1ed Sys007 fora kept data set named MIKE, and you want the volume'to remain mounted at the end of the step, code: //DASD15 DD,DSNAME=MIKE,DISP=(,KEEP),UNIT=2311 // VOLUME=(PRIVATE,RETAIN,SER=SYS007),SPACE=(TRK,20) If your data set needs more than one volume, replace the term "volcount n with the nwnber of volumes needed. If the number of volumes is equal to the number of devices requested in the unit parameter all volume are mounted at the same time. When the number of volumes is greater than tile number of devices requested, and all the mounted volumes are used, the system demounts one of the volumes and then mounts another vollooe in its place so that processing can continue. If you specify RETAIN, the volumes mounted at the end of the step remain mounted. The SER subparameter is coded as described for nSpecific Request Public Volume. n ~J?'the fpllowing example, 2301t~.Au;t',,~?t~mpo:i;ap~L}~at:,a ,~~,t~;t~ naliled, , &&A1IP~iA,,'6,&~ET~i:,,:,~&:1:),~ttl!'A,'~"'~nd: 'iJ&:GA~,,:ct':rffe: to:' '$p:t:it ::2:Qd ,,'a:'024'~byte blocks ona.public,~it'3,2~1 ',,,"011,lme. '&&Al;lPHA i'a~'to ,hav,e ,:;10%'0£; '~ac;p cylinder: &&BE:TA is to:, ha~e':'2'~%"J&&D.:EL1'A';"i(i; ·to,:'have '50%# '~ntf&&OAMMA is to have 15%. " "" ' ','" '. ", .. ' . "
r---· .....------:_:.;wo;,..'~_:"'.~--:~..,...-~_:.,.;_:-'~_:;..;.~·~--_:'~~.... ...;.....:.~,.;::.....,.;--:------ ....- ..... - ...·;-1 /I'DDA' DD. ,DSN1\Mt;:~~'~~PHA,,~l?'lp,(;;.PASSl:, tl:N:r~;:2~ 2 1 , . ;J / l , ; 'S·p,L,+;.r=:t;t:~oi:~,0'2'Lri:l2·0:::;,:i:';,. .,'" . , . :ll/lf)PB.DQ';t:r$~A$1p::::g:i13~+A;,Q!ISf'
.... -------'-....:......- - - - ,
,I
I I I I
~i~~$:s')"~S1;L+'l?;:2:5"
,I / l~DC 'DD::·D.$:N~'e:;:;s~gD$Ii"'A·iP, .~,; ':1 / lODD DD' ·Ds1:·u~Me~&'&G~., oJ:.sP.~q:; 'A
,;);i:S~lItTc::5~
'.
8S~: " SFLI T=15. '
;SN~:~~:$X~IJ;'EM" l1SER.·~B~C!,'"litsPJ:::PL,lff· .. '
I I
"
1/'/'I'B~tE~ .tlp: ;'DSN,~E;,:::ij~X;P, D,IS]?'::: (~;'Kl1iE~): ~.tlNIT=2 314', . I ':I / .' .".~." 'VO:;t;UM:E;=pER=AFL i LABEL~I(IDTpn7=:31~SEP=TWO . I / / FqUR'~p; : DSNJ\ME=;:,E~IY, '1:> lSF==QJ:,p"uftrT#=2 4~OO~:2 ,
'1//
I I I I I
'. ,.,' ·VO~UME=SE~=T,APE·,5~i,SEP:==)(·ONE:,1lW~:» .....·.....--..;...~:- ....... ~~-:-..-:;....:~-.-..;~~ ..... ~~,;...--~..~~:-~~ ....~:..v;;...~~ .....~ .....;....·....---.........._~.~...... _.:-- ___ .-; _____ ~~_.......... __ J
L~
'usin9'::t!le;,pre~~ci~r)g ...~x-~~p·le:,if Y9uwantto:req~eflt:that tae data. set ,de£'in:edby:: t]:ie·:TH:f~.EE'DD: .. statement: ;be;qn. a channel. other tha,n the Olle assigned 1:;0 the dp'i::a. 'set· definedby::the T'WODD st.atement code: The DD statement:
153
Direct Accel Devices
r---------------------------------------------------------------------"1 //PROGl EXEC PGM=PROCESS I
I
I //ONE DD UNIT=2400,VOLUME=PRIVATE,LABEL=(,NL) I //TWO DD DSNAME=SYSTEM.USER.ABC,DISP=OLD I //THRE.E DD DSNAME=HELP,DISP=( ,KEEP) , UNIT=23l4,
I I I t // VOLUME=SER=AFL,LABEL=RETPD=3l,SEP=TWO I I //FOUR DD DSNAME=END,DISP=OLD,UNIT=2400-2, I IL _________________________ // VOLUME=SER=TAPE75,SEP=(ONE,TWO) ________ ________________ ._________________ .JI ~
~
As a result of this example, the data sets defined by ONE and TWO may o:r may not be on the same channel. The data set defined by THREE and FOUR mayor may not be on the same channel, but neither one will be on the same channel as the data set defined by TWO. Also, the data set defined by FOUR will not be on the same channel assigned by ONE. Remember that the request for channel separation made with the SEP parameter is only a suggestion to the system for more efficient operation, and no·t a requirement. If your data sets mus!: be on separab~ channels specify unit addresses with the UNIT parameter. You can obtain a configuration chart with all the unit addresses from your manager or supervisor.
AFF: The AFF parameter provides a shortcut method of requesting channel separation. When two or more data sets in the same job step have the same channel separation requirements, you can code the SEP parameter fo:r the first data set, and then request the same separation using the AFF parameter in the later data sets. The AFF parameter tells the system that you want the data set defined on this DD statement to have the sam4~ channel separation as the data set defined in the named DD statement. The format of the AFF parameter is:
r--------------------------------------------------------.--------------,
I
I
AFF=ddname L ________________________________________________________ ._______________ .1
Replace I1Iddname" with the name of the earlier DD statement that requests the desired channel separation. This data set and the earlier da~a set mayor may not be on the same channel. In the following example II the data sets defined by DDl and DD2 may OJ( may not be on the same channel. The data sets defined by DD3 and DDS mayor may not be on the same channel, but neither one will be on the same channel as the data sets defined by DDl and DD2. The data set defined by DD4 will not be on the same channel as the data set defined by DD3, but it may be on the same charmel as the data set.s defined by DDl, DD2, or DD5_ r--·--------------------------------------------------------------------~I
I //STEP EXEC PGM=NINE I I //DDl DD I I //DD2 DD I I //DD3 DD SEP=(DD1,DD2>,___ I I //DD4 DD SEP;DD3,... I IL___________________________________________________________________ //DD5 DD AFF=DD3,... I ~1
The requests for channel separation and affinity are only suggestions to the system_ They will be honored if the appropriate devices are available.
154
The DUMMY parameter allows you to bypass I/O operations and data set disposition. When your processing programs ask to write the dummy data set, the write request is recognized, but no data is transmitted. This facility is particularly useful when you are debugging your program because it saves you processing time. For example, you can suppress the writing of a data set until you are sure your program is going to produce meaningful output. The DUMMY parameter is a positional par~neter. That means that i t must be coded first in the operand field. For ~~xampl e : DUMM~~:
//OUTPUT DD DUMMY, UNIT=2311,VOLUME=SER=AAA999, SPACE= (TRK, (20,1» //DASD2 DD DUMMY,DSNAME=A.B.C.,DISP=(CATLG),UNIT=2301, // VOLUME=(PRIVATE,RETAIN),SPACE=(2000,(SOO,,20), // DCB=(BUFNO=2,BLKSIZE=2S00,LRECL=50) If you wish, you can omit all other paramet:ers required to define your data set except DCB. (If you were not going to write the DCB parameter you do not have to write it.) For example, the two DD statements shown above could be coded as follows: (
//OUTPUT DD DUMMY //DASD2 DD DUMMY,DCB=(BUFNO=2,BLKSIZE=2500,LRECL=50) When you are ready to perform I/O operations on your data set, simply omit the DUMMY parameter and code all parameters required to write the data set. For example: //OUTPUT DD UNIT=2311,VOLUME=SER=AAA999, SPACE= (TRK, (20,1» //DASD2 DD DSNAME=A.B.C,DISP=(CATLG),UNIT=2301, // VOLUME=(PRIVATE,RETAIN),SPACE=2000,(500,,20), // DCB=(BUFNO=2,BLKSIZE=2500,LRECL=50)
The DD statement
155
Creating Direct Access Devices
Table 15.
Parameters for Retrieving a Data Set
r---------T--------------------------T---------T----------------------------------------,
IData Set I
Parameter Type
I Parameter I
Comments
I
~---------t--------------------------+---------+----------------------------------------~
IUnit I Record I Devices I
I
ILocation of the data set
I UNIT
I Required.
I
t--------------------------+---------+----------------------------------------~
IData attributes
I DCB
I
I Optional.
t--------------------------+---------+----------------------------------------~
Ispecial processing Option I DUMMY
jOptional.
j
~---------+--------------------------+---------+----------------------------------------~
I
*
!Input ,Stream
ILocation of the data set I
" I
t--------------------------t---------+----------------------------------------~
,
I Data attributes
t---------~parameters.
IYou must specify
I I
I DATA
I
I
I DCB
I Systems with
tvlFT
on~
of these
or MVT only. Optional.
I
~---------+--------------------------+---------+----------------------------------------~
Passed IData set information Data Set I I
I DSNAME
I Required.
I
t---------+----------------------------------------~
I DISP
I rtequired.
I
t--------------------------+---------+----------------------------------------~
ILocation of the data set
I UNIT
I
t---------+----------------------------------------~
IKequired only if you want more units.
I I
I LABEL I
IRequired only if the data set does not I have standard labels.
I I I
r--------------------------+---------+----------------------------------------~
IData attributes
I DCB
I Optional.
I
t--------------------------+---------+----------------------------------------~
ISpecial Processing Option I DUMMY
I Optional.
I
t---------+--------------------------+---------+----------------------------------------~
catalogedlData Set Information Data Set I I
I DSNAME
I Required.
I
t---------+----------------------------------------~
I DISP
I Required.
I
t--------------------------+---------+----------------------------------------~
I
ILocation of the data set
I UNIT
I I
t---------+----------------------------------------~
I
I I I I
I VOLUME I I
I Optional. IMay be required if you want to begin Iprocessing with a volume after the I first.
I I I
t---------+----------------------------------------~
I LABEL I
IRequired only if the data set does not I have standard labels.
I I
t--------------------------+---------+----------------------------------------~
IData attributes
I DCB
I
IO?tional.
t--------------------------+---------+----------------------------------------~
ISpecial Processing Options I SEP
I I I I
IEither parameter can be used.
I
I I
t---------~
I
AFF
I
t---------+----------------------------------------~
I DUMMY
I Optional.
I
~---------+--------------------------+---------t----------------------------------------~
Kept I Data set information Data Set I I
I DSNAME
I
I Required.
t---------+----------------------------------------~
I DISP
I Required.
I
t--------------------------+---------+----------------------------------------~
ILocation of the data set
I UNIT
I
t---------+----------------------------------------~
I Required.
I
I Required.
I
I
I VOLUME
I
t---------+----------------------------------------~
I I
I LABEL I
IRequired only if the data set does not I have standard labels.
I I
t--------------------------+---------+----------------------------------------~
IData attributes
I DCB
I Optional.
I
t--------------------------+---------+----------------------------------------~
L _________
156
I I I
Ispecial Processing Options I SEP
IEither parameter can be used.
I I
I
I
I
t---------+----------------------------------------~
t---------~
AFF
I __________________________ I _________ DUMMY I ________________________________ Optional.
~
~
~
~_~
I
_____ J
Ret:rieving an Existing Data Set You can retrieve an existing data set located in unit record devices (card reader and paper tape reader), the input stream, magnetic tape, or dirE:~ct access devices. Data sets on magnetic tape and direct access devices are retrieved in simi.lar ways depending on whether they were passed, cataloged or kept when you created them. This chapter describes how to retrieve: • • • • •
unit record data sets (card reader and paper tape reader). Input stream data sets. passed data sets. cataloged data sets. Kept data sets.
Table 15 shows the parameters required to retrieve a data set. fold out Table 15 while readi.ng this chapter.
Please
Unit Record Devices
Unit Record Devices
You can retrieve an input data set on either a card reader or a paper tape reader. As shown in Table 15, only the UNIT parameter is required to indicate the device you want for the data set. The DSNAME and DISP parameters are not used, "because data sets on unit record devices are always temporary and cannot be retrieved by another DD statement in your job., ']~his
section is summarized in Table 67 of Appendix D.
Location of the Data Set The location of th.e data set is given by t,he UNIT parameter.
UNI,]~:
The format. of the UNIT parameter is:
r-----------------------------------------------------------------------, I {Unit addreSS} I I I UNIT= device type group name LI __________________________________________ ,_____________________________ JI
uni1:. address is the actual machine address of the device. For example, UNIT=OOD. You should not specify the address unless you are sure you want that specific device. device type corresponds to the model number of the I/O device. Coding a device type provides you with a certain degree of device independence in that your data set may be placed in any of a number of devices of the same type. For example, if you code
--
UNIT=1442 The DD statement
157
your data set can be placed by the operator in any 1442 Card Reader in the system. The following device types can be specified: Device Type 1442 2520 2540 2671
Description 1442 2520 2540 2671
card Read Punch Card Read Punch Card Read Punch (Read feed) Paper Tape Reader
group name is the name of a collection of devices, selected by your installation during system generation. For example, your installation might select the name CARD for all card readers in the configuration. If you do not care which card reader is used for your data set, you would then code UNIT=CARD Your manager or supervisor should tell you which group names were generated for your installation.
Data Attributes The DCB parameter allows you to specify attributes for your data set when your program is to be executed rather than when it is compiled. Any applicable attributes not specified in your program must be specified with the DCB parameter. However, in most cases, your compilE~r will provide a default value for an attribute if you do not specify it in the program or in the DD statement. other attributes are always given a fixed value by the compiler and you do not have to specify thern at all. For example, you can select a buffering technique with the assembler, but all other IBM compilers select one for your use when it is needed.
DCB: You can use the DCB parameter to directly specify the DCB attributes of your data set or to copy those DCB attributes specified in a DD statement for another data set. The format of the DCB parameter for specifying the attributes is:
r----------------------------------------------------------------------.,
I
I
DCB=(list of attributes) L ______________________________________________________________________ .J The attributes in the list are coded in the form of keyword subparameters separated by commas; for example, DCB= (BLKSIZE=300, LRECL=100)
158
,•
,
t
" DCB Subparameter
I
ANS COBOL
COBOL F
CGBOLE
Assembler
ALGOL
~
FORTRAN E
I
FORTRAN G & H
1-3 PJ
PL/I F
tr ~
~I
i
BFALN=
!
i
For D
I
number of bytes
number of tytes
BLKSIZE=
S or E (OSAM only)
BUFL=
~
~
I
i
I
I
BFTEK=
(i)
I
I I
I
~
t1
bytes~
number of
number of bytes
~
number of bytes
number of bytes
number of bytes
~
()
to Cf"l ~
number 'of bytes
~
number of buffers
~
number of
~
ABE
tr
'0
~
BUFNO=
ABE
EROPT= HIARCHY=
o or
I
1
buffe~
number of buffers
number of buffers
A!2I
1 or.2
number of
lor .2
l::uffers~
ABE
I
I number of bytes
number of bytes
MODE=
Cor E
NCP= I
OPTCD=
number of channel programs (BSAM only)
(i)
Ul
~
I-h
RECFM=
E[B][AJ
I I
1-3 0(i)
t1 t:1
u[~]
or
BS
STACK=
number of bytes
I
~
C or
~
C or
~
C or
~
C or
C or
~
[C]
[C]
[C]
[C]
~
\d [A]
I or
F[BJ[~J
[C]
\d[~J
or
F[BJ[~J
~
Ii
Cor E
~
Ii OJ
L2-
:::0
u[~J
~ or
v[n~Jo,
{n~J
I ~
lor 2
lor 2
lor 2
lor 2
~
1 This
("t
2
For OSAM you must specify both BFALN and BFTEK on the DD statement or omit both.
~
3
American National Standard COBOL.
function can be specified in your program rather than in the DD statement. I
U'1
'" t1~
m ....
< o· -~
m nm o
(II
:2
::0 (I)
q-
(D.
'input de,ck.;the: second 'cailed'l;>y ,th~,STF;P3 .EXEC, statement
"
'""
, '
...
i:t~~~ '~~Y";":~..,~~.,...:~---~~':;'~ .......-i.--~--~~~~~~-:";'--"~~;";"'--
:l,' ':IN~UT"£])E9K
. . . ~~--;'-- ..... ,....~ ____ . . . _... _. . . __ .... _,
. 1 ~~t---~~~-~.~.;...~~ ... ~~~ ..... ~-....... ~...",.... --..,..~~;..;..:"-- . . . --.--~ . . . . .,...--.. . . -----------.. . -----..;..-----~~ .......;;.------~ :f ..... , ", ,
J
I
.'
"
.,
.,
~h~(Sn~EC PR0C=PR0C7
.,I'
.. "
's:tetJname··.'
.
j:1 /IODA'DD;DSN;AME=*. ;/S,TE~5, EX~C ~ '..' STbP3.,NOVA. Fll.,E ·
' I ' , •... '. ' / 2 t--~A;~ooiD;;~;;;;;r----:---~··.-~----------~--------1 ddrname"',
I I
,.
'
,
~-----~-""'-":'-;~-:-:7-~"';~-'~-:----------":''';''':''''';';''';''~---:';''----:-:--''';-''''''';------------- of I,' .', . '•.: ,p.:J:o.:~.~.':. '.~~.,e.pp.nnaamm~e .. : ..... ~ I
::.'·tZ;~'
J
I
//N~V~;!~t~c'~'PS~=N
,
."'.
.
I/FiLE DD])!3Nj\MF;::LEF'r~pI"SP~ (,(1?~S~) , • _..
~-~-~~~"!fII!""~~----"'r""'~~"""t!"""~~~~-~""-
..
: I I
,
.,'.
,.
~~-i"~-";~~~""""';~""";"""''''''';'''-_'''''-''''''"'......w---''';'' __ -.'....... _ ........... ~ __-_ ___________ J
DISP: You can code the DISP parameter in one of two ways depending on whether other steps in the job will also use the data set or whether this is the last time you are using the data set. The DD Statement
169
Passed Data Set
1.
The format of the DISP parameter for passing the data set to a subsequent job step is:
r-------------------[~--J----------------------------------------1 I DISP= COLD, PASS , DELETE ) I
I ,CATLG I ,KEEP Il __________________________________________________________________ JI
You must code OLD. The PASS subparameter indicates that the data set can be used by later steps in the job. The third subparameter tells the system what is to be done with the data set if the step ABENDs. You can specify PASS or DELETE for both temporary and nontemporary data sets. PASS is assumed if you omit the third subparameter. If the data set is nontemporary you can specify KEEP or CATLG. Note: When you are retrieving members of a partitioned data set, the disposition (PASS, DELETE, CATLG, KEEP) you specify applies to the entire data set and not to the one member. If you want to delete a particular member of a nontemporary partitioned data set you must use the IEHPROGM utility program. The entire temporary partitioned data set is deleted at the end of the job.
2.
The format of the DISP parameter for the last time you use a passed temporary data set in a job is:
r---·------------------------------------------------------------.,
Il _________________________________________________________________ DISP=(OLD, DELETE, DELETE) JI
You must code OLD. A passed temporary data set will always be deleted at the end of the job so you do not have to code the DELETE subparameter. The format of the DISP parameter for the last time you use a passed nontemporary data set in a job is:
[-------------[:i;;;--J--[~--J----------------------.-------------1
I DISP=(OLD ,DELETE: ,DELETE) I I ,CATLG ,CATLG I Il _________________________________________________________________ , JI You must code OLD. At the end of the step, the data set will also be kept unless you specify DELETE or CA'lLG. If the step ABENDs, the data set will also be kept unless you specify DEI.ETE or CATLG. In the following example, two data sets named &&DATA(MEM1) and LIST are defined in the first step of a job. In the second step, &&DATACMEM1) is retrieved and passed again. In the third step, LIST is retrieved and passed again. In the fourth step, &&DATACMEM1) is retrieved and all of &&DATA is deleted, and LIST is retrieved and cataloged. 170
r--;;M~d~~~,~qi-T~-~"""~~-.~~-~~~-'~-:~~~-·"---'~·~-'-~f-~.-~--,---------------1
I //:Slf'iE l I I[DS1 . I
II I I I I I I t I 1 I I I I
. .v:()~ti~!E=PJ{IY~TE,iJ3,l?A~E:;;:·(1}T{:K.;·:t~:5.;" i3:)J
// //D52
DD
1
II I I I I I I I I I I I I I I I
DSNAME~Ii:t'S';n,D'If§P=l~ PA:sSf~UNIT=2'q (to.
'
". .
..
2
/1 S.T.:$P EXEC; j>GM:::;:DO$· .,' ., .: . . .' . //'083, "DI) ·OSNAME::::;;* .. STEl?1~:D'Sl,DISP:::COLD,PAS$)
' / /$TEP~ : 'E'ifEC :,PGM==TRES //084'
I· J
I I
,'EiU~.(> PGM==UNO,..,. '-, .. ',' . ' . ' . ',,; : , .:D'p,DSt'J1ilil!J:!='&J~Datt'a(~Ml'~ ,nISl?~{tt PlkpS)',,:UNl '1'=2311,
'DD
DSNAMEi;.LJIS,T;D'I$cP=(:9:L:D, l>ASS)
,
////'DS;~l?~ 'E,XEC PGlvl::=CUATl,~~a,mple a d.ata,s,eb,'named&'ilU,NK,i};i,defiIled in the fir$'K:~~t~~;:~':A: ::max1mum;·of'f1ve voltffit~B:': a:r:ereq.u~rJ~(l:for~'&J:nNK,: ana they
a,re,' tcibe.Jnt?u,~1t:edi"iIi;"f)licG,e;ssion.on. two: miits'", ,In the,'second step, you re:tri.eve, :&"JUNl{,,' but request ,that f;pur; units ps':used. ~,
'
'~.(
~
The DD statement
171
r--------·-------------------·--------------------------.--------------, JOB I
I //SAM
I I I I · I I · I I · I I //STEPB EXEC PGM=Y I I //GET DD DSNAME=*.STEPA.DATA,DISP=(OLD,PASS),UNIT=(,4} I I · I I · I J IL-_____________________________________________________________________ • I j //STEPA EXEC PGM=X I//DATA DD DSNAME=&'JUNK,DISP=(,PASS),UNIT=(2314,2) I // VOLUME=(PRIVATE",S),SPACE=(CYL,(20,lS»
LABEL: The LABEL parameter is used only if the passed data set does not have standard labels. You must code the ~ label type you specified when you defined the data set. No other subparameters are allowed. The format of the LABEL parameter for passed data sets is:
r---------------------------------------------------------.-------------,
I ,SUL I I I LABEL= ( ,NL ,NSL I I I ________ ._______________________________________________________________ ,BLP L JI
Code: SUL if the data set has standard and user labels. NL if the data set has no labels. NSL if the data set has nonstandard labels. BLP to bypass label processing. In the following example, a data set named BANK is defined in the first step. BANK has nonstandard labels. BANK is retrieved and passed in the second step.
r----------------------------------------------------------.-------------,I
I //MAC JOB I //STEPA EXEC PGM=ZYZ I //DDAA DD DSNAME=BANK,OISP=(,PASS),UNIT=2400,LABEL=(,NSL) I · I . I • I //STEPB EXEC PGM=WZW L ________ I ________________________________________________________ //DDAB DO DSNAME=*.STEPA.ODAA,DISP=(OLD,PASS),LABEL=(,NSL» ~
172
I I I I I I ____ JI
Da1:.a Attr ibutes ThE~
DCB parameter is used only if the dat.a set does not have standard labels and the DD statement that defined the passed data set contains the DCB parameter.
DCB:
You must specify the DCB parameter in one of two ways:
1,.
Copy the DCB parameter exactly as it appeared in the DD statement where you defined the passed data set, or
2..
Make a backward reference to the DD statement that defined the data set.
Making a backward reference reduces the possibliity of error in copyinq tht= parameter. RetrieviI1
The format of the DCB parameter for copying the attributes of the passed data set is:
r-·----------------------------------------------------------------------,
I ______________________________________________________________________ DCB=(list of attributes> L_. JI Code exactly the same DCB subparameters you coded in the DD statement where the passed data set is defined. You may not add, change, or delete subparameters. For example, if you coded DCB=(BLKSIZE=800,LRECL=80) you must again code DCB= (BLKSIZE=8 00, LRECL=8 0) The format of the DCB parameter for making a backward reference is:
r----------------------------------------------------------------------,
I {*.ddname } I I DCB=( *.stepname.ddname [,list of attributes]> I I _______________________________________ *.stepname.procstepname.ddname _______________________________ JI L ~
Replace "ddname" with the name of the DD statement whose DCB parameter you want to copy. Replace "stepname n with the name of the EXEC statement of the step that contains that DO statement. If the DD statement you want to copy is contained in the same job step, omit the stepname, i.e., DCB=*.ddname If you want to copy the DCB parameter of a DD statement contained in a cataloged procedure step, you must give both the name of the job step that invokes the procedure and the procedure step, i.e., DCB=*.stepname.procstepname.ddname
The DD statement
173
Passed Data Set
The following example shows how to code the DCB parameter to copy the DCB parameter of a DD statement in a previous step:
r----------------------------------------------------------------------,
I I/STEP2 EXEC... I I IIDDl DD ••• DISP=(,PASS),LABEL=(,NL),DCB=BLKSIZE=1600 I I I . I . I I · I I I ISTEPL~ EXEC... I I IICOPY DD ••• DISP=(OLD,PASS),LABEL=(,NL),DCB=*.STEP2.DDl I I . I I . I JI IL ______________________________________________________________________ · The following example shows how to code the DCB parameter to copy the attributes of a passed data set defined in a cataloged procedure step. The first part of the example shows your input deck, the second part shows a cataloged procedure called by the T~C EXEC statement in your deck.
r----------------------------------------------------------------------,I
I INPUT DECK
~--------.--------------------------------------------------------------~
I I I I I I I I I
• · ·
II TWO
· • .
-Stepname
~ IIDDl DD ••• DISP=(OLD,PA$S),LABEL=(,BLP),DCB=*.TWO.STEP4~DATA
IICOPY EXEC...
I I I I I I I I I
~-----------------------------------------~-~~~~~:-_\---------~
I CATALOGED PROCEDURE ~ ____~ I ~--------------------------~- ---------------------------------------~ I • procstepname I I· ~ I I· ~ I I IISTEP4 E;§C... I
I
IIIDATA-DD ••• DISP=(,PASS),LABEL=(,BLP),DCB=BUFNO=4
I . I • L ______________________________________________________ I •
I I _______________ J I
Special Processing Optio!! You can use the DUMMY parame"ter to bypass operations and data set disposition on a sequential data set (maqnetic tape or direct access).
DUMMY: The DUMMY parameter allows you to bypass 1/0 operations and data set disposition. When your processing programs ask to read the dummy data sets, the read request is recognized, but no data is transmitted. This facility is particularly useful when you are debugging your program because it saves you processing time. For example, you can suppress the reading of a data set until you are sure your program is going to process it correctly. 174
T'he DUMMY parameter is a positional parameter. That means that it must be coded first in the operand field. FOr example: . /,1 INPUT /,1
DD DUMMY, DSN'AME=* .. STEP1 ..,DDA., DISP=( OLD, FASS) ,LAEfbL= ( , NL) , DCB=':BLl~'8I;ZE=£900' ..' I'IREAD DD DUMMy,DSNAME=*.STEP4.ABC~DISP:i::l(OLD,PASSl
If you wish, you can omit all other parameters required to define your data set except DCB. (If you were not going to write the DCB parameter you do not have to write it.) Eor "eXample, .the two DDstatementsshown above could be coded as follows: .
I'/INPUTDDDQMMY t DCB:;:BLKSIZE=500 I'IREAD DD DUMMY When you are ready to perform 1/0 operations on your data set, simply omit: the DUMMY parameter and code all parameters required to retrieve the data set. FOr example, l/IN?UT DD:
DSN~E=*.STEfJl.DDAtD*f?P=(OLD,PASS),iABEL=(,NL)
l/READ DDDSNAME#* .• S'l'EP4 .. ABC ,DISl';::; ('OLD "PASS)
(
Retrievin~ Cataloged Data Set
Cataloged Data Set A cataloged data set is a nontemporary dat:a set defined with the DISP=(,CATLG) parameter or cataloged by the IEHPROGM utility program. The parameters shown in Table 15 are used to retrieve a cataloged data set. This section is summarized in Table 70 of Appendix D.
Data Set Information The DSNAME and DISP parameters are required.
DSN~lE:
The format of the DSNAME parameter is:
r----------{d~~~~~-------------}
-----------------------------------------1
I DSNAME= dsname(membername) I IL ______________________________________________________________________ groupname(nurnber) JI Replace the term "dsname" with name of the cataloged data set. name is a fully qualified name you must give all levels of qualification. For-example, if you G,;r;e'ated the/data set as
If the
DSNAME==PLUS you must again,code
DSNAME=PLUS If you coded \
DSNAME=SYST.GLOBE The DD statement
175
you must again code DSNAME=SYST.GLOBE If you are retrieving a member of a partitioned data set, you must code thE~ member name in parentheses after the data set name. For example, OSNAME=ORB(MOON) or DSNAME=SYST.GLOBE(SUN) If you are retrieving a member of a generation data group you must use the form DSNAME=groupname(number) Replace "groupnarne" with the name of the generation data group. Replace "number" with the number of the generation you are retrieving. Remember that the most recent generation is 0, the previous generation is -1, and. so on. For example, if you want to retrieve the most recent generation of the ABC.FILE generation data group, code DSNAME=ABC.FILE(O)
DISP:
The format of the DISP parameter is:
r---------------------------------------------------------------------1 I {OLD}[,UNCATLGJ[,UNCATLGJ I I DISP=( SHR ,DELETE ,DELETE) I IL ______________________________________________________________________ , JI You must code either OLD or SHR. OLD indicates that you are only retrieving the data set. SHR indicates that you are operating under MF~[, or MVT and that concurrent jobs can also retrieve this data set at the same time .. The second positional parameter tells the system what is to be done with the data set at the end of the job step. If you omit this subparameter, the data set remains cataloged. If you code UNCATLG the data set will be uncataloged but not deleted. (The next time you retrieve an uncataloged data set you must follow the directions given for "Kept Data Sets.") If you code DELETE the data set will be deleted (and uncataloged). The third positional subparameter tells the system what is to be done with the data set if the step ABENDs. You can specify UNCATLG or DELETE. Note: When you are retrieving a member of a partitioned data set, the disposition (UNCATLG, or DELETE), you specify applies to the entire datal set and not to the one member. If you want to delete a particular member, you must use the IEHPROGM utility program. In the following example, you are retrieving a cataloged data set named HULA. HOOP. //D09 00 DSNAME=HULA.HOOP,DISP=OLD
176
In •tlie:~QI::Lciwi;ri9;~':'e~~iUpf,~~ y~;tt' j:fie' '~~¥ie-vln,ifa,::JnEaiUlieI;;' t?fabait'aloged data: ~et na;tlie~t:&~$1::~:Et?~~L'J:B. ,{~(ju,':a'tfe :oper,ating:underMFT,o:r ,~, and other jobs ,.DISP'=SHR
'In the fQllowin9';~el{q.mRle,":you;are :~~~:ti~ieytn,9,;a 'cataloged data set ~'~EA~' J\ft.erusing;:'!'t. :Y0'q, ;\iallt .·tQ~,unca:t:alo
nameq
/,tDOZ !DIl.
nSN~Il.,~.~~~=~oipt~~b~i: ... '. .
Location of the Data set The system obtains unit and volume information from the catalog. The UNIT, V0LUME and LABEL parameters are only needed in the following cases: Retrievin~
1. If you want more than one unit assigned to your data set, use the UNIT parameter.
Cataloged Data Set
2.
If you want to defer mounting of the volumes, use the UNIT parameter.
3.
If you want your data set assigned to the same devices assigned to a data set defined earLier in the job step, request unit affinity with the UNIT parameter '.
4•
If you want the volume -to be pri va te , use the VOLUME parameter.
5.
If the cataloged data set does not have standard labels you must use the LABEL parameter to specify the LABEL type.
UNIT: The UNIT parameter should be used only if you want to request more than one unit for your data set or if you want unit affinity. Reguesting units: The system assigns one device to your data set. you need more devices use the unit count subparameter or the P subparameter.
If
r-----------------------------------------------------------------------, , UNIT=(,[Unit count][,DEFER]) I I
I
L ________________________________________ .______________________________ J P
unit count indicates how many units you want assigned to the data set. You can specify a maximum of 59 units per DD statement. Make sure that your system has at least the number of units you specify. Otherwise an error will result. If you specify fewer units than the number of volumes in your data set, only the same number of volumes as there are units can be mounted at the same time. (If you request less units than volumes code the PRIVATE subparameter in the VOLUME parameter.) If you specify the same number of units as there are volumes, all volumes can be mounted at the same time. P \
specifies parallel mounting. When you request parallel mounting the system assigns to the data set as many units as there are serial numbers in the catalog entry. The DD statement
177
DEFER requests the system to assign the required tape drives or direct access devices to the data set and to defer the mounting of the volume or volumes until the processing program attempts to open the data set. If you are running under MFT or MVT, operating efficiency may decrease if you specify DEFER for a tape data set. This is because if you code DEFER, the system issues a mount message to the operator when the processing program attempts to use the data set and t~en waits until the volume is mounted. If you do not code DEFER, the mount message is issued when the device is assigned and there is no waiting for the operator. By the time your proqram tries to use the data set, it is very likely that the operator has already mounted the volume and that the system will not have to wait for him.
unit Affini~: To conserve the number of units used in a job step, you can request that the cataloged data set be assigned to the same device or devices as assigned to an earlier data set in the same step. This technique, known as unit a:ffinity, indicates that you want the volumes on which the cataloged data set resides and the volumes used by the earlier data set to be mounted on the same devices in sequential order. unit affinity implies deferred mounting for one of the volumes since both volumes cannot be mounted at the same time. Before you request unit affinity, make sure that both data sets use the same type of removable volum..§.~; for example, both data sets could be on 2314 volumes, or both on 2400 volumes. It does not make sense to request unit affinity where both data sets are on different types of volumes. The format of the UNIT parameter for requesting unit affinity is:
r----------------------------------------------------------------------,
Il ________________ UNIT=AFF=ddname .________________________________________ .______________ JI Replace t:he term nddname n with the name of an earlier DD statement in the job step. Whenever it is required, the volume of the earlier data set will be demounted and the cataloged data set will be mounted on the same unit. If the ddname refers to a OD statement that defines a dummy data set" the data set defined on the DO statement reques·ting unit affinity is assigned a dummy status. When unit affinity is requested for two data sets that reside on different 2321 volumes, the data sets are assigned the same device but can be assigned different bins. In the following example, the DO statement named DD2 requests that the system assign the same number of units to this data set as it assigns to the data set defined on the statement named DD1. since DD1 requests two devices, these two devices are assigned to the data set defined by DD2. //STEPC EXEC PGM=OVER //DD1 DD UNIT=C2400,2),VOLUME=C",2) //DD2 DO DSNAME=ALPHA.OMEGA,DISP=OLD,UNIT=AFF=DDl
178
VOLUME: The VOLUME parameter is needed only when one or more of the following conditions are met: 1.
You want the volume on which the cataloged data set resides to be private. A private volume is one that cannot be allocated to a new temporaty data set that makes a nonspecific request for a public volume.
2.
You want the private volume to remain mounted at the end of the job st,ep.
3.
You want to begin processing with a certain volume when you are retrieving or extending a multivolume cataloged data set.
The format of the VOLUME parameter for cataloged data sets is:
r----------------------------------------------------------------------,
I VOLUME=([PRIVATE1[,RETAIN] [,sequence) I I , L ____________________________ .___________________________________________ JI Retrievin
The PRIVATE subparameter means that you want the volume(s) on which the cataloged data set resides to be private. The RETAIN subparameter means that the volume will not be demounted at the end of the step. PRIVATE must be coded when you code RETAIN. (RETAIN has the same effect on volume mounting as coding PASS in the DISP parameter.) Private volumes are demounted at the end of the step unless it is an unrenlovable volume, such as a 2301, or unless i t has been designated by your installation to be a permanently resident volume, for example, the system residence volume. It is recommended that you use t.he RETAIN subparameter whenever you want the volume to remain mounted at the end of the step. For example, if you want the volume that contains the JOE. DOE. SMITH data set to be private, code, //OLD DD DSNAME=JOE.DOE.SMITH,DISP=OLD,VOLUME=PRIVATE Using the same example, if you want the volume to remain mounted at the end of the step, code: //OLD DD DSNAME=JOE.OOE.SMITH,DISP;::OLD, VOLUME=(PRIVA1'E,RE'I'AIN) Using the same example, if you want to defer mounting of the volumes, code: //OLD DD DSNAME=JOE.DOE.SMITH,DISP=OLD,VOL'QME=(PRIVATE,RETAIN), // UNIT= (" DEFER) When you are retrieving a multivolume cata.1oged data set, you can begin processing with other than the first volume of the data set by coding the sequence number subparameter. Replace "sequence n with a number from 1 to 255 that indicates the sequence number of the volume you want. For example, if you want the third volume of the cataloged data set, code VOLUME= (,,3) The sequence number is a positional slIDparameter and must follow the PRIVATE and RETAIN subparameters. If you omit the sequence number subparameter and the volume count subparameter follows, you must indicate its absence by a comma.
-The DD Statement
179
Cataloged Data Set
In the following example, you are retrieving a cataloged data set named SYSTEM.TWO. SYSTEM.TWO now resides on four volunles and you want to begin processing with second volume. /IIN DD DSNAME=SYSTEM.TWO,DISP=(OLD,CATLG).VOLUME=(,.2) Using the same example, if you want the volumes to be private, code: 1/ IN DD DSNAME=SYSTEM. TWO, DISP= (OLD, CATLG) , VOLUME= (PRIVATE •.• 2)
LABEL: The LABEL parameter is needed only if the cataloged data set does not have standard labels. You must code the same label type you specified. when you defined the data set. No other subparameters are allowed. The format of the LABEL parameter for cataloged data sets is:
r-----------------------------------------------------------------------,
I ,SUL I I I LABEL= ( ,NL ) I ,NSL I JI IL______________________________________________________________________ ,BLP code, SUL if the data set has standard and user labels. NL if the data set has no labels. NSL if the data set has nonstandard labels. BLP to bypass label processing. In the following example, a cataloged data set named A.B.D is retrieved. A.B.D has nonstandard labels. IIINPUT DD DSNAME=A.B.D,DISP=OLD,LABEL=(,NSL)
Data Attributes The DCB parameter is needed only if the cataloged data set is on magnetic tape and has nonstandard labels or no labels. Follow the instructions given for "Magnetic Tape n in the section "creating a' New Data set .. " If the data set has standard labels, you can specify the subparameters shown in Tables 18, 19, 20, and 21.
180
I
fl,
"
DCB Subporameter
ALGOL
Assembler
COBOL F
COBOLE
ANS COBOL
L=-
FORTRAN E
I
1-3 FORTRAN G & H
p;
PL/I F
b" ..... ro
~
Far D
BFALN=
t
f-Io 00
5, E, or A (QSAM anly)
BFTEK=
~
'='
(J
number af bytes
BUFL=
t:C
~
en ~
number af buffers
BUFNO=
ABE,ACC, or SKP
EROPT=
~
~
number of
buffer~
number of
buffer~
number of
buffers~
1 or
~
1 or 2
number of
tr
buffers~
top;
Ii p;
ABE,ACC, or SKP
ABE/ACC, or SKP
S
ABE,ACC, or SKP I
L2-
I
HIARCHY=
NCP=
OPTCD=
1 This 2
:3
o or
1
Ii
I
1
I
!
I
~
~
number of channe I programs (BSAM only)
[C] ~J
number of channel programs (BSAM only)
~ [BJ
[C]
ro rt ro
[C]
[C]
[C]
[C]
[C] or
I
function can be specified in your program rather than in the DD statement,
[Z]
I
I
H1
o
Ii
!A:j
ro
I
rt Ii f-J.
J
1-1.
I
I
For QSAM, you must specify both BFALN, and BFTEK on the DD statement, or omit both,
Ul
I
ro
cd
b
'.0 p;
t:J
American National Standard COBOL,
I
p;
("t'
p; ---.-~--
---
-
-
!
en
1-3
::r ro
ro
rt
o
t:J
b
~
en
~
rt" ~
I.Q
rt"
~
ro ro
ro
8
rt f-J.
~
(')
rt"
1-3
~
f-Io
"0
ro
00
f-Io
t)tU
~
IlJ
rn Ul~
IlJ
i~ p....
rr
I ~: I
I i ~
~
00
DCbB Su parameter
t-v
ALGOL
Assembler
COBOL E
COBOL F
ANS COBOL
FORTRAN G & H
FORTRAN E
PJ
PL/I F
tr
1--1
ro
BFALN=
F or D
f-\ 1.0
I
.
BFTEK=
I
i
I I i ~
I
i Ii
i I
I I
I I ir
L2::j ~
i
I
I,
I
i
I
II
BUFL=
number of bytes
!
BUFNO=
I I
i
EROPT=
i
HIARCHY=
~
!
Ii
NCP=
I
I I
i l
I
I
!
I
:
i
I
.
I I
I'
!
I
I
I
number of buffers
I
0 or
I
o
: !
I
~ number of buffer~
I :
! .
number of
:
buffe~
I
number of
t::l
~·en
r~-j
bUffers~------
t1
1 or
2.
1 or
~
I number of
!
JABE,Acc,orSKP iABE,ACC,orSKPI
I
buffers~
rtPJ t1
~PJ
() S
!
I
I' l i - - - - - - - - - + - I - - - - - + I - - - - - - t - - - - - - - - f : ! i i
1!
LiJ
:i
pmgmm' (SSAM ooly)
I
I
() ro ro rt Cf) ro
Cf)
f
number of channel!
;
'I
I
Ii
I
s:::
roO"
()~
I
!
~
::s ntJj
l i
1,1 ABE,ACC,orSKP
I
, I
l
1'1
I i
I
tJ
ro
I
11
Ul H1
ro
>-
II
I
u
4: I
u I-
Z
0
U
_ _ _.-'--_ _,....... _ - - '_ _ _ _' -_ _ _ _ _ _ _
184
0
l
0-
--.----I~.-----I
Special Processing options
_ ..
There are two special processing options for cataloged data sets: 1.
You can request channel separation from other data sets in the same job step using either the SEP or the AFF parameter.
2.
You can suppress I/O operations on a sequential data set (magnetic tape or direct access) using the DUMMY parameter.
SEP: When two or more data sets are to be used in a job step, processing time may be shortened by requesting that the system transmit data sets over separate channels. For example, it would be faster to have your input data set and your output data set on separate channels than to have them on the same channel. You can request channel separation for data sets in each job step using the SEP parameter. If possible, the system will honor this request. It may not always be possible to honor the request for separation because given devices may not be available for allocation when the job step is executed or because there may not be enough devices of a given type on different channels for all the data sets that request separation. If channel separation is not requested, the system will assign any available channel that has the device specified with the UNIT parameter. The format of the SEP parameter is:
r-----------------------------------------·-----------------------------, I SEP=(ddname, ••• ) I L _________________________________________ ._____________________________ J
Replace the terms "ddname" with the names of up to eight earlier DD statements in the same job step. This earlier DD statements can define any type of data set: new or existing, on magnetic tape or direct access, temporary or nontemporary, etc.
The DD statement
185
Retrieving Cataloged Data Set
Using the preceding example, if you want to request that the data set defined by the THREE DD statement be on a channel other than the one assigned to the data set defined by the TWO DD statement code:
r---------------------------------------------------------------------"
I //PROGl EXEC PGM=PROCESS I I //ONE DD UNIT=2400,VOLUME=PRIVATE,LABEL=(,NL) I I //TWO DD DSNAME~SYSTEM.USER.ABC,DISP=OLD I DSNAME=HELP,DISP=(,KEEP),UNIT=23l4, I I //THREE DD I // VOLUME=SER=AFL,LABEL=RETPD=3l,SEP=TWO I I //FOUR DD DSNAME=END,DISP=OLD,UNIT=2400-2, I IL ______________________________________________________ // VOLUME=SER=TAPE75,SEP=(ONE,TwO) ._______________ .JI As a result of this example, the data sets defined by ONE and TWO mayor may not be on the same channel. The data sets defined by THREE and FOUR mayor may not be on the same channel, but neither one will be on the same channel as the data set defined by TWO. Also, the data set defined by FOUR will not be on the same channel as the data set defined by ONE. Remember that the request for channel separation made with the SEP parameter is only a suggp.stion to the system for more efficient operation, and not a requirement. If your data set must be on separate channels specify unit addresses with the UNIT parameter. You can obtain a configuration chart with all the unit addresses from your manager or supervisor.
~K~:
The AFF parameter provides a shortcut method of requesting channel separation. When two or more data sets in the same job step have the same channel separation requirements, you can code the SEP parameter for the first data set, and then request the same separation using the AFF parameter in the later data sets. The AFF parameter tells the system that you want the data set defined on this DD statement 1:0 have the same channel separation as the data set defined in the named DD statement. The format of the AFF parameter is:
r--------·--------------------------------------------------------------·1
I
I
AFF=ddname L ________________________________________________________________________ .J
Replace "ddname" with the name of the earlier DD statement that requests the desired channel separation. This data set and the earlier data set mayor may not be on the same channel. In the following example, the data sets defined by DDl and DD2 may o:r may not be on the same channel. The data sets defined by DD3 and DDS mayor may not be on the same channel, but neither one will be on the same channel as the data set defined by DDl and DD2. The data set defined by DD4 will not be on the same channel as the data set defined by DD3, but it may be on the same channel as the data sets defined by DD1, DD2, or DDS.
r-----------------------------------------------------------------------1
I //STEP EXEC PGM=METHOD2 I I //DDl DD I I //DD2 DD I I //DD3 DD SEP=(DD1,DD2),... I I //DD4 DD SEP=DD3,... I I ______________________________________________________________________ //OD5 DD AFF=DD3,... L .1I
186
'I'he requests for channel separation and af:f ini ty are only suggestions to the system. They will be honored if the appropriate devices are available.
DUMMY: The DUMMY parameter allows you to bypass I/O operations and data set disposition. When your processing programs ask to read the dummy data set, the read request is recognized, but no data is transmitted. This facility is particularly useful when you are debugging your program because it saves you processing time. For example, you can suppress the reading of a data set until you are sure your program is going to process it correctly. The DUMMY parameter is a positional parameter. That means that i t must be coded first in the operand field. Forexarnple: / /INDO DUMMY ,DSNAfv.iE:.:ABLE, DISP=dLD, LAB:EL==(,NL), DCB==BLKSIZE=l 00 / /DDT DDDUMl'me- ,", _ _ ............., _........... _ _ _ _ _ _ ,_ _ ,_ _ _ .... _ _ .,, _ _ ...... _ _ _ _ ........._
........................................- - -.........., . . . . - -.......- . - . . - , , - - - - - - - - - - - - - - - - - -
-~-------""------
UNIT: The UNIT parameter should be used only if you need more than one unit for your data set or if you want unit affinity. ReqUesting Units: The system assigns one device to your data set. If you want more devices assigned, code in the unit count subparameter the total number of devices needed. If you need an indefinite number of new volumes code the DEFER subparameter. The format of the UNIT parameter for cataloged data sets is:
r---------------------------·-------------------------------------------,
I
I
UNIT= . ______________ .JI Using the preceding example, if you want to request that the data se·t defined by the THREE DD statement be on a channel other t~han the one assigned to the data set defined by the TWO DD statement code: r-------·--------------------------------------------------------------~1
I IIPROGl EXEC PGM=PROCESS I I IIONE DD UNIT=2400,VOLUME=PRIVATE,LABEL=C,NL)1 I IITWO DD DSNAME=SYSTEM.USER.ABC,DISP=MOD I I IITHREE DD DSNAME=HELP,DISP=C,KEEP),UNIT=2314, I I II VOLUME=SER=AFL,LABEL=RETPD=31,SEP=TWO I I IIFOUR DD DSNAME=END,DISP=OLD,UNIT=2400-2, I IL_______________________________________________________________________ /1 VOLUME=SER=TAPE75,SEP=(ONE,TWO> 1I As a result of this example, the data sets defined by ONE and TWO m
I I I
~---------------------t-------------------------------------------,------~
IDC
I I
I Load modules processed by the level F linkage
I editors can be reprocessed by level E linkage I editors. (Downward compatible.)
I
I I
~-------------------t----------------------------------------,---------~
I.TEST I TESTRAN symbol tables wi thin the input modules I I I are placed in the load module. (Do not specify I I ____________________ I ____________________ RENT or REUS when you specify TEST.) L ._____________________________ JI ~
276
~~
Table 55.
Linkage Editor - DD statements (part 1 of 2)
r--------T------------------T------------------T--------T----------T---------------T------------------, I I I I size I I special I I
I ddname I Data Set ILocation of the I of the I Data I Processing I comments I I Information I Data Set IData Set IAttributes I Options I I ~--------+------------------+------------------+--------+----------+---------------+------------------i SYSLIB Code IUNIT and VOLUME Omit. Omit. Omit. ICall library. DSNAME=dsname and are required if Partitioned data DISP=SHR. Usually library is kept. set. the language library for your compiler, that is SYS1.ALGLIB, SYS1.COBLIB, SYS1.FORTLIB, or SYS1.PL1LIB. Any user library can be defined. Alternatively the user library can be I concatenated. I ~--------+--------.----------+------------------+--------+----------+---------------+------------------i ISYSUT1 I Temporary. You canlDirect access. I Required I Omit. IOmit. IWork data set. I lomit DSNAME and I UNIT is required. I I I I I I IDISP. IYou can omit I I I I I I I I IVOLUME and LABEL. I I I I I ~--------+------------------+------------------+--------+----------+---------------+------------------i ISYSPRINTI ISystem output I IYou can I IListings are pro- I I I device. printer I I specify I I duced on this data I I I I lor intermediate I IBLKSIZE if I Iset. I I I I storage. SYSOUT=A I I you are I I ! lusually specified. I I using I I I ! I I I I I Ilevel F. I I I ~--------+------------------+-----------------+--------+-------·-+---------------+------------------i SYSLMOD The partitioned IDirect access. I Required I ILoad module(s) is data set can be I - 1'f you are cre- I if you I I produced on this temporary or non- I ating the data lare I partitioned data temporary. If you I set, code UNIT. I creating I set. do not include a I You can omit the data NAME control I VOt.UME and set. statement specify I LABEL. DSNAME=dsname(mem-l- If data set is ber) or DSNAME= I cataloged, you &&dsname(member). I can omit UNIT, If you are creat- I VOLUME and ing the data set, I LABEL. code (or omit) NEW,- If data set is in DISP parameter.! kept, code UNIT If the data set I and VOLUME. You exists, code MOD I can omit I.ABEL. , in DISP parameter. , I If 8 g0 " step is inl I the same job, code I _ DISP=(,PASS) or I _. DISP=(MOD,PASS). I If "go" step is I not in the same I I job, keep or cata-I I the data set. I ___________ •. ______ L ________ __________ I _______________ __________________ J! ________ L log __________________
I
~
~
~
~
Part II: JCL for Compilers, Linkage Editors and Loader
277
Table 55.
Linkage Editor - DD statements (Part 2 of 2)
r.-------T------------------T--·---------------T-------T----------T---------------T------------------,
I
I
I ddname I I
I
Data Set Information
I ILocation of the I Data Set
I Size I I I of the I Data I IData Set IAttributes I
Special Processing Options
I I I
I
comments
I I
~--------+-------------------+------------------+--------+----------+---------------+------------------~
SYSLIN
IIf object module IIf object module I Omit. IIf object Omit. IInput to the Iwas created in a Iwas created in a I Imodule is linkage editor previous step of Iprevious step, youl Ion unlab(object module). the same :job, makelcan omit UNIT, I lIed tape, a backward refer- IVOLUME and LABEL. I I specify ence, i.e,., lIE object module I IRECFM, DSNAME=*.stepname.lis kept g code UNIT IBLKSIZE, ddnarne and and VOLUME. You DEN, and DISP=OLD. If can omit LABEL. TRTCH. object module was IE object module created in another is card deck use * job, code DS NAME=dsnarne and DISP=OLD. If object module is a card deck, omit DSNAME and DISP. You can concatenate input data sets as long as they have the same RECFM, BLKSIZE, and TRTCH. L _________ .L DEN, ___________________ .L _________________ .1. ________ .L __________ .L _______________ .L __________________ J
278
Loader loader processes the compiled source program (object module) for execution and passes control to it directly. Loader processing is performed in a load step, which is equivaleni: to the link edit-go steps. The loader can be used for compile-load, and load jobs. 'llhe
Table 56.
Loader - Input Deck
r----------------------------------------------------------------------,I I Loader ~-----------------------------------------------------------------------~
I I I I I
//[name] EXEC PGM=LOADER[uPAill1=c'loaderparm/programparrn'] //SYSLIB DD parameters //SYSLOUT DD parameters //SYSLIN DD * or parameters DD statements and data required for loaded program
Required Optional Optional Required
I I I I I
~----------------------------------------------------------------------~
I Note: The ddnames required by the loader can be changed d1lring I Il ________________________________________________________________________ system generation. JI
Table 57.
Loader - PARM Field of EXEC Statement. (Part 1 of 2)
r-----------T----------------------------------------------------------, PARM= I Meaning I
I
t-----------+----------------------------------------------------------~
I MAP I I I NOMAP
I
I A map of the loaded program is produced on the device I specified by the SYSOUT DD statement. I A map is not produced.
I I I
t-----------t----------------------------------------------------------~
I RES I I NORt,S
I An automatic search of the link pack area is made. I you specify RE:3, CALL is assumed. I The link pack area is not to be searched.
I I I
If
~-----------+----------------------------------------------------------~
I CALI. I I I NOCALL I I
I
I I I I I
An automat.ic search of the data set defined by the SYSLIB DD statement is to be made. The SYSLIB data set is not be searched. NOCALL can also be coded as NCAL. If you code NOCALL or NCAL, NORES is assumed.
I I I I I
~-----------t----------------------------------------------------------~
I LET I I NOLET I
I I I I
The loader tries to execute the loaded program even I though a sever.ity 2 error condition is found. I The loader does not try to E~xecute the loaded program if I a severity 2 error is found.. I
t-----------t----------------------------------------------------------~
ISIZE=size
I
I Specifies the amount of main storage, in bytes, that can I I be used by the loader. I
~-----------+----------------------------------------------------------~
I EP=name I I I
I I I I
Specifies the external name to be assigned as the entry point of the loaded program., For FORTRAN, ALGOL, and PL/I, you must specify MAIN, IHIFSAIN, and IHENTRY, respectively.
I I I I
t-----------t---------------·------------------------------------------~
I PRINT I Diagnostic messages are produced on the device specified I I I by the SYSOUT DD statement. I NOPRINT I __________________________________________________________ Diagnostic messages are not produced. Il ___________ JI ~
--Part II: JCL for Compilers, :Linkage Editors and Loader
279
Table 57.
Loader - PARM Field of EXEC Statement (Part 2 of 2)
r-----------T----------------------------------------------------------,
I PARM.=
I
~eaning
I
~-----------+----------------------------------------------------------i
I program I parm I I I I
I I I I I I
You may code PI1RH subparameters required by your program after any loader subparameters you use. The loaded program subparameters, if any, must be separated from the loader subparanleters by a slash (/). If there are no loader options, the program subparameters IflUSt beqin with a slash.
I I I I I I
~-------.-.---.L--------------------------------------------------------i ~ot~: Underscore the default options selected by your installation
I I Il_.______._.during system generation. I _____________________________________________________________ J
280
Table 58.
Loader - DD statements
r--------T------------------T------------------T--------T"----------T---------------T------------------, I I I I size I I Special I I
I ddname I I I
Data Set Information
I Location of -the I Data Se-t
I of the I Data I IData Set IAttributes I
processing Options
I I
comments
I I
~--------t------------------+------------------+--------+----------+---------------+------------------~
SYSLIB
Code DSNAME=dsnameIUNIT and VOLUME and DISP=SHR or lare required if DISP=OLD. Usually library is kept. the language library for your compiler; that is SYS1.ALGLIB, SYS1.COBLIB, SYS1.FORTLIB, or SYS1.PL1LIB. Any user library can be defined. Alternatively, the user libraries can be concatenated.
I
I Omit. I I
omit.
Omit.
I I
Icall library. Partitioned data set.
I I I I I
I
I I I I
I I
~--------t------------------+------------------+--------+----------+---------------+------------------~
ISYSLOUT I I I I
I I I I I
Isystem output I device, printer lor intermediate I storage. SYSOUT=A I usually specified .•
I I I I I
I I I I I
I I I I I
IListings are pro- I Iduced on this data I Iset. I I I I I
~--------t------------------+------------------+--------+----------+---------------+------------------~
SYSLIN
~II'"
IIf object module IIf object module I Omit. was created in a Iwas created in a I previous step of Iprevious step, you the same job, makelcan omit UNIT, a backward refer- IVOLUME and LABEL. ence, i.e., I If input is kept, DSNAME=*.stepname Icode UNIT and ddname and I VOLUME. You can lomit LABEL. If DISP=OLD. If object module was Iobject module is created in another I card deck, use *. job code DSNAME= I dsname and DISP= I OLD. If object I module is a card I deck, omit DSNAME I and DISP. You can I concatenate input I data sets. I
Omit.
IInput to the Iloader (object Imodules and load modules).
I I I I I I
I
I
I I I I I I I I I I I
~--------~------------------~------------.------~--------~----------~---------------~------------------~
I
any DD statements required to execute your program. lIInclude _________________________________________________________ ._____________________________________________ J
Part II: JCL for c()mpilers, Linkage Editors and Loader
281
Examples Examples are shown in this section for different types of job.
In the following example, a COBOL E source program is compiled. The source program is in the input stream (SYSIN). The object module is placed on a cataloged data set named COMP.COBOL. This data set resides on tape. Debug packets are not used, so the SYSUT4 DO statement is not needed. The user source program library «SYSLIB) is required.
r-----------------------------------------------------------------, JOB 79324,SMITH I
I //EX1 I //COMP
I
I I I I
I I I I
I I
EXEC PGM=IEPCBLOO,PARM=(DECK,MAPS,LIST) //SYSLIB DO DSNAME=SYS1.COBLIB,DISP=SHR //SYSUT1 DD UNIT=2311, SPACE= (TRK, (50,10» //SYSUT2 DD UNIT=2400 //SYSUT3 DO UNIT=2400 //SYSPRINT DD SYSOUT=A //SYSPUNCH DD DSNAME=COMP.COBOL,DISP=(,CATLG) ,UNIT=2400 //SYSIN DD * source statements
I ;\
I I I !i I /* IL _________________________________________________________________ // J
2.
compil..~-link
edit
(AsselllDler_J~:1
In t:he following example a source program is assembled and link edit:ed. The source program is in the input stream (SYSIN). The object module is placed on temporary data set on direct access (SYSGO) and punched (SYSPUNCH). Channel separation is requested for the work data set. Output listings are requested. A cataloged user module library is required for the link edit step. The load module produced by the linkage eiitor is placed on a new part:itioned data set named MODULE. The name of the load module is PROG1.
r------------------------------------------------------------------, //EX2 JOB MSGLEVEL=(1,1) / /ASl-'l EXEC PG~l=IEUASM, PARt1= (OECK,LOAD ,LIST ,Xl,UNIT=2400-2, // DCB=(DEN=2,TRTCH=ET) ,VOLUME= To nullify the DCB parameter, each DCB subparameter must be nullified individually. For example, if a DD statement contains DCB=(RECFM=FBA,BLKSIZE=160,LRECL=80> then DCB= (RECFM=, BLKSIZE=,LRECL=> must be coded on the overriding DD statement in order to nullify the DeB parameter. To nullify a DUMMY parameter, code the DSNAME parameter on the overriding DD statement, but do not use the data set name NULLFILE. (Coding DSNAME=NULLFILE has the same effect as coding the DUMMY parameter. ) CAUTION:: When you are overriding a procedure DD statement that contains the SPACE parameter and the overriding DD statement defines an existinq data set, be sure to nullify the SPACE parameter. When a secondary quantity is coded on the procedure DD statement, the system uses this value to assign additional space to the data set instead of the secondary quantity you may have specified when the data set was created. Also, the RLSE subparameter, when specified on the procedure statement" causes the system to release any of the existing data set's unused space. If you want to nullify, add, or override parameters that appear on different DD statements, the overriding DD statements must be in the same order in the input stream as the corresponding DD statements in the procedure.
304
Example of Overriding, Adding, and Nullifying Parameters on a DD Statement 1.
You want to call the following procedure named SALL:
r----------------------------------------------------------------------,
I //STP1 EXEC PGh=GLF14 I I I //DD11 DD DSNN~E=XTRA.LEVEL,DISP=OLD I I //DD12 DD DSNAME=CONDS,DISP=(,PASS),UNIT=2400 I I //DD13 DD DUMMY,DSNAY1E=LAST,VOLUME=REF=*.DD11,DISP=C,CATLG) I //STP2 EXEC PGM=FAIR I I I //DD21 DD DSNAME=*.STP1.DD12,DISP=(OLD,DELETE) I //DD22 DD DSNM~E=JETZ,DISP=(NEW,KEEP), I I // UNIT=2311,SPACE=CCYL, (3,1),RLSE) I Il ______________________________________________________________________ //DD23 DD SYSOUT=G JI
You want to modify the procedure as follows: • change the data set name on the DD12 statement from CONDS to C8495, and add the VOLUME parameter. • Add the VOLUME parameter to the statement named DL12. • Nullify the DUMMY parameter on the DD13 statement. • Change the disposition on the DD21 statement from DELETE to KEEP. • Define an existing data set on the DD22 statement.
-'"
• Add the parameters UNIT and SPACE on the DD23 statement. The EXEC statement that calls the procedure and the overriding DD statements that follow it would appear as:
r---------------------------·-------------------------------------------,
I //CALL EXEC SALL I I //STP1.DD12 DD DSN~lE=C8495,VOLUME=SER=979354 I I I //STP1.DD13 DD DSNAME=LAST I I //STP2.DD21 DD DISP=(OLD,KEEP) I I //STP2.DD22 DD SPACE=,DSNAME=GR1833,DISP=OLD,LABEL=(,NL), I // VOLUME=SER=577632 I Il ___________________________ //STP2.DD23 DD UNIT=2314,SPACE=(CYL,(150,15» I .____________ . ______________________________ J
The cataloged procedure would appear as shown below while the procedure is being executed. These modifications do not appear on an output listing.
r----------------------------------------------------------------------,
I //STP1 EXEC PGM=GLF14 I I I //DD11 DD DSNAME=XTRA.LEVEL,DISP=OLD I //DD12 DD DSNAME=C8495,DISP=(,PASS),UNI'r=2400,VOLU?I2E=SLR=979354 I I //DD13 DD DSNAME=LAST,VOLUME=REF=*.DD11 DISP=(,CATLG) I I //STP2 EXEC PGM=FAIR I I //DD21 DD DSNAME=*.STP1.DD12,DISP=(OLD,KEEP) I I //DD22 DD DSN~lE=GR1833,DISP=OLD,UNIT=2311,LABEL=(,NL), I I // VOLUME=SER=577632 I //DD23 DD SYSOUT=G,UNIT=2314,SPACE=(CYL,(150,15» lI ______________________________________________________________________ JI f
Using cataloged and In-Stream
Procedures
305
-
2.
You want to call the following in-stream procedure named CARDS:
r------------------------------------------------------------------IN DO DSN=SYS1.ALGLIB,OISP=SHR DO DSN=&GOSET(GO),UNIT=SYSDA,DISP=(MOO,PASS), SPACE=(1024,(50,20,1» DD DSN=&SYSUT1,UNIT=SYSDA,SEP=(SYSLIB,SYSLMOO), SPACE=(1024, (50,20» EXEC PGM=*.LKED.SYSLMOD,COND=«5,LT,ALGOL),(5,LT,LKED» DD SYSOUT=A DD SYSOUT=A DD DSN=&SYSUT1,UNIT=SYSSQ,SPACE=(1024,(20,10»
~----------------------------------------------------------------------~
I Note: You must provide an ALGOL.SYSIN DD statement when you call I IL _________________________________________ the procedure. . ______________________________ JI Figure 13.
ALGOFCLG (Compile-Link Edit-Go)
r-----------------------------------------------------------------------, //ALGOL EXEC PGM=ALGOL REGION=48K u
//SYSPRINT DD SYSOUT=A //SYSPUNCH DD SYSOUT=B //SYSLIN DD DSN=&LOADSET,UNIT=SYSSQ,SEP=SYSPUNCH, // SPACE=(3600,(10,4», // DISP= (MOD wPASS) / /SYSUTl DD DSN=&SYSU~r1, UNIT=SYSSQ, SEP=SYSPRINT, // SPACE=(1024,(50,10» / /SYSU'I'2 DD DSN=&SYSUT2, UNIT=SYSSQ" SEP=SYSUT1, // SPACE=(1024,(50,10» / /SYSUT3 DD DSN=&SYSU'r3, UNIT=SYSDA, SPACE= (1024, (40,10» / /GO EXEC PGM=LOADER, PARM= (MAP, LE'r, PRINT) ,COND= (5 ,LT ,ALGOL) //SYSLIN DD DSN=&LOADSET,DISP=(OLD,DELETE) //SYSLIB DD DSN=SYS1.ALGLIB,DISP=SHR //LOADPRNT DD SYSOUT=A //SYSPRINT DD SYSOUT=A //ALGLDD01 DD SYSOUT=A //SYSUT1 DD DSN=&SYSUT1,UNIT=SYSSQwSPACE=(1024,(20,10» ~--------------------------.--------------------------------------------~ I Note: You must provide an ALGOL.SYSIN DD statement when you call the I IL __________________________ procedure. I ._____________________________________________ J Figure 14.
ALGOFCG (Compile-Load)
Part IV: cataloged Procedures for Compilations, Link Edits, and Executions
317
Assembler E
r--------·---·-----------------------------------------------------------,
I I I I I I I I
//ASM //SYSLIB //SYSUTl //SYSU'I'2 //SYSUT3
//
EXEC DD DD OD DD
//SYSPRINT DD //SYSPUNCH DD
PGM=IETASM DSNAME=SYS1.MACLIB,DISP=OLD UNIT=SYSSQ,SPACE=(400, (400,50» UNIT=SYSSQ,SPACE=(400, (400,50» UNIT=(SYSSQ,SEP=(SYSUT2,SYSUT1,SYSLIB», SPACE=(400,(400,50» SYSOUT=A UNIT=SYSCP
I I I I I I I I
~----------------------------------------------------------------------~
I Note: You must provide an ASM.SYSIN DD statement when you call the I IL______________________________________________________________________ procedure. JI Figure 15.
ASMEC (Compile)
r----------------------------------------------------------------------, //ASM EXEC PGM=IETASM //SYSLIB //SYSUTl //SYSUT2 //SYSUT3 // //SYSPRINT //SYSPUNCH // //LKED //SYSLIN // //SYSLMOD //SYSUTl // //SYSPRINT
DD DD DD DD
DSNAME=SYS1.MACLIB,DISP=OLD UNIT=SYSSQ,SPACE=(400,(400,50» UNIT=SYSSQ,SPACE=(400,(400,50» UNIT=(SYSSQ,SEP=(SYSUT2,SYSUT1,SYSLIB», SPACE=(400,(400,50» DD SYSOUT=A DD DSNAME=&LOADSET,UNIT=SYSSQ,SPACE=(SO,(200,50», DISP= (MOD, PASS) EXEC PGM=IEWL,PARM=(XREF,LIST,NCAL) DD DSNAME=&LOADSET,DISP=(OLD,OELETE) OD DDNAME=SYSIN DO DSNAME=&GOSET(GO>UNIT=SYSDA,SPACE=(1024,(50,20,1» DO UNIT=(SYSDA,SEP=(SYSLIN,SYSLMOD», SPACE=(1024,(50,20» DD SYSOUT=A
~----------------------------------------------------------------------~
I Note: You must provide an ASM.SYSIN DD statement when you call the I I ________._________ procedure. L ._____________________________________________________ JI Figure 16.
318
ASMECL (Compile-Link Edit)
r---------------------------·------------------------------------------, //ASM //SYSLIB //SYSUTl //SYSUT2 //SYSUT3 // //SYSPRINT //SYSPUNCH // //LKED //SYSLIN // //SYSLMOD // //SYSUTl // //SYSPRINT //GO
EXEC DD DD DD DD
PGM=IETASM DSNAME=SYS1.MACLIB,DISP=OLD UNIT=SYSSQ,SPACE=(400, (400,50» UNIT=SYSSQ,SPACE=(400, (llOO,50» UNIT=(SYSSQ,SEP=(SYSUT2,SYSUT1,SYSLIB», SPACE=(400,(400,50» DD SYSOUT=A DD DSNAME=&LOADSET,UNIT=SYSSQ,SPACE=(80,(200,SO», DISP= (MOD, PASS) EXEC PGM=IEWL,PARM=(XREF,LET"LIST,NCAL) DD DSNAME=&LOADSET,DISP=(OLD,DELETE) DD DDNAME=SYSIN DD DSNAME=&GOSET(GO),UNIT=SYSDA,SPACE=(1024,(SO,20,1», DISP= (MOD, PASS) DD UNIT=(SYSDA,SEP=(SYSLIN,SYSLMOD», SPACE=(1024,(50,20» DD SYSOUT=A EXEC PGM=*.LKED.SYSLMOD
I I I I I I I
~----------------------------------------.------------------------------~
I Note: You must provide an ASM.SYSIN DD statement when you call the I procedure. I ___________________________ L ,___________ .______________________________ JI Figure 17.
ASMECLG (Compile-Link Edit-Go)
r----------------------------------------·------------------------------, //ASM EXEC PGM=IETASM,PARM='LOAD' //SYSLIB //SYSUTl //SYSUT2 //SYSUT3 // //SYSPRINT //SYSPUNCH // //GO //SYSLIN //SYSLOUT
DD DD DD DD
DSNAME=SYS1.MACLIB,DISP=OLD UNIT=SYSSQ,SPACE(400,(400,50» UNIT=SYSSQ,SPACE=(400,(400,50» UNIT=(SYSSQ,SEP=(SYSUT2,SYSUT1,SYSLIB», SPACE=(400,(400,50» DD SYSOUT=A DD DSNAME=&LOADSET,UNIT=SYSSQ, SPACE=(80,(200,SO»,DISP=(MOD,PASS) EXEC PGM=LOADER,PARM='MAP,PRINT,NOCALL,LET' DD DSNAME=&LOADSET,DISP=(OLD,DELETE) DD SYSOUT=A
~----------------------------------------------------------------------~
I I
Note:
You must provide an ASM.SYSIN DD statement when you call the I
I
procedure. L ___________________________ .__________________________________________ J Figure 18.
ASMECG (Compile-'Load)
Part IV: Cataloged Procedures for Compilations, Link Edits, and Executions
319
Assembler F
r---------------------------------------------------------------------·1
I //ASM I //SYSLIB
EXEC PGM=IEUASM,REGION=50K DD DSNAME=SYS1.MACLIB,DISP=SHR 1//SYSUTl DD DSNAME=&SYSUT1,UNIT=SYSSQ,SPACE=C1700,C400,50», I // SEP=SYSLIB I //SYSUT2 DD DSNAME=&SYSUT2,UNIT=SYSSQ,SPACE=C1700,C400,50» I //SYSUT3 DD DSNAME=&SYSUT3,UNIT=(SYSSQ,SEP=(SYSUT2,SYSUT1, 1// SYSLIB»,SPACE=C1700,(400,50» I //SYSPRINT DD SYSOUT=A SYSOUT=B I //SYSPUNCH DD
I I I I I I I I I
~----------------------------------------------------------------------1
I Note: You must provide an ASM.SYSIN DD statement when you call the I IL ________________ procedure. .______________________________________________________ .1I Figure 19.
ASMFC (Compile)
r-------·--------------------------------------------------------------'1 //ASM //SYSLIB //SYSU'.r1 //
EXEC PGM=IEUASM,PARM=LOAD,REGION=50K DD DSNAME=SYS1.MACLIB,DISP=SHR DD DSNAME=&SYSUT1, UNIT=SYSSQ,SPACE= (1700, (400,50», SEP=SYSLIB //SYSU~r2 DD DSNAME=&SYSUT2,UNIT=SYSSQ,SPACE=C1700, (400,50» / /SYSu:r3 DD DSNAME=&SYSUT3, UNIT= (SYSSQ, SEP= (SYSUT2, SYSUT1, // SYSLIB»,SPACE=(1700,(400,50» / /SYSPRINT DD SYSOUT=A / /SYSPUNCH DD SYSOUT=B / /SYSGO DD DSNAME=&LOADSET, UNIT=SYSSQ, SPACE= (80, (100,50» , // DISP= (MOD, PASS) //LKED EXEC PGM=IEWL, PARM= CXREF, LlST, NCAL) ,REGION=96K, // COND=C8,LT,ASM) //SYSLIN DD DSNAME=&LOADSET,DISP=COLD,DELETE), // DD DDNAME=SYSIN / /SYSL~10D DD DSNAME=&GOSETCGO> , UNIT=SYSDA,SPACE= C1024, (50,20,1», // DISP=(MOD,PASS> //SYSUT1 DD DSNAME=&SYSUT1,UNIT=(SYSDA,SEP=CSYSLIN,SYSLMOD», I // SPACE=C1024,(50,20» I //SYSPRINT DD SYSOUT=A
,I II ,I
I II II ~
II II II II I:
! 1
I Ii
I I I I
~-----------------------------------------------------------------------~
I I
Note:
You must provide an ASM.SYSIN DD statement when you call the I procedure. I
L _______________________________________________________________________ J
Figure 20.
320
ASMFCL (Compile-Link Edit)
r-----------------------------------------------------------------------, //ASM EXEC PGM=IEUASM,PARM=LOAD,REGION=50K
I I I I I I I I I
//SYSLIB //SYSUT1
DD DD
DSNAME=SYS1.MACLIB,DISP=SHR DSNAME=&SYSUT1,UNIT=SYSSQ,SPACE=(1700, (400,50», // SEP=SYSLIB //SYSUT2 DD DSNAME=&SYSUT2,UNIT=SYSSQ,SPACE=(1700,(400,50» //SYSUT3 DD DSNAME=&SYSUT3,UNIT=(SYSSQ,SEP=(SYSUT2,SYSUT1, // SYSLIB»,SPACE=(1700,(400,50» //SYSPRINT DD SYSOUT=A //SYSPUNCH DD SYSOUT=B //SYSGO DD DSNAME=&LOADSET,UNIT=SYSSQ,SPACE=(80,(100,50», // DISP=(MOD,PASS) //LKED EXEC PGM=IEWL.PARM=(XREF,LET,LIST,NCAL),REGION=96K, // COND=(8,LT,ASM) //SYSLIN DD DSNAME=&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DSNAME=&GOSET(GO),UNIT=SYSDA,SPACE=(1024,(50,20,1», // DISP= (MOD, PASS) //SYSUT1 DD DSNAME=&SYSUT1,UNIT=(SYSDA,SEP=(SYSLIN,SYSLMOD», // SPACE=(1024, (50,20» //SYSPRINT DD SYSOUT=A /IGO EXEC PGM=*.LKED.SYSLMOD,COND=«8,LT,ASM),(4,LT,LKED»
~---------------------------.-------------------------------------------~
I Note:
You must provide an ASM.SYSIN DD statement when you call.
I
L ___________________________ .___________________________________________ J
Figure 21.
ASMFCLG (Compile-Link Edit-Go)
r----------------------------------------------------------------------, //ASM EXEC PGM=IEUASM,PARM='LOAD',REGION=50K /ISYSLIB //SYSUT1 // /ISYSUT2 //SYSUT3
DD DD
DSNAME=SYS1.MACLIB,DISP=SHR DSNAME=&SYSUT1,UNIT=SYSSQ,SPACE=(1700,(400,50», SEP=(SYSLIB) DD DSNAME=&SYSUT2,UNIT=SYSSQ,SPACE=(1700,(400,50» DD DSNAME=&SYSUT3,SPACE=(1700,(400,50», /1 UNIT=(SYSSQ,SEP=(SYSUT2,SYSUT1,SYSLIB» //SYSPRINT DD SYSOUT=A /ISYSPUNCH DD SYSOUT=B //SYSGO DD DSNAME=&LOADSET,UNIT=SYSSQ,SPACE=(80,(200,50», DISP= (MOD, PASS) //GO EXEC PGM=LOADER,PARM= 'MAP, PRINT,NOCALL,LET' //SYSLIN DD DSNAME=&LOADSET,DISP=(OLD,DELETE) //SYSLOUT DD SYSOUT=A ~----------------------------------------------------------------------~
I Note: You must provide an ASM.SYSIN OD statement when you call the I I ______________________________________________________________________ procedure. L JI Figure 22.
ASMFCG (Compile-Load)
Part IV: cataloged Procedures for Compilations, Link Edits, and Executions
321
COBOL E
r----------------------------------------------------------------------,
I I I I I I I
//COB //SYSPRINT //SYSPUNCH //SYSUTl //SYSUT2 //SYSUT3 //SYSIN
EXEC DD DD DD DD DD DD
PGM=IEPCBLOO,REGION=24K SYSOUT=A UNIT=SYSCP UNIT=SYSDA,SPLIT=(2,CYL,(40,10}) UNIT=SYSDA,SPLIT=4 UNIT=SYSDA,SPLIT=4 DDNAME=SYSIN,DCB=BLKSIZE=80
I I I I I ! I
~-----------------------------------------------------------------------~
I Note: You must provide a COB.SYSIN DD statement when you call the I I ______________________________________________________________________ procedure. L JI Figure 23.
COBEC CCompile}
r----------------------------------------------------------------------"
I I I I I I I I I I I
//LKED //SYSI.IB //SYSI.MOD
EXEC PGM=IEWL,REGION=96K,PARM=(XREF,LIST,LET} DD DSNAME=SYS1.COBLIB,DISP=(SHR,KEEP) DD DSNAME=&GODATACRUN),DISP=CNEW,PASS}, // UNIT=SYSDA,SPACE=(1024,(SO,20,1» //SYSUTl DD UNIT=(SYSDA,SEP=(SYSLIN,SYSLMOD)}, // SPACE=(1024,(SO,20}) //SYSPRINT DD SYSOUT=A //SYSLIN DD DDNAME=SYSIN //GO EXEC PGM=*.LKED.SYSLMOD,COND=CS,LT,LKED} //SYSABEND DD SYSOUT=A // DD SYSOUT=A,DCB=(BLKSIZE=120,LRECL=120}
I I I I I I I I I I I
~-,---------------------------------------------------------------------~
I I
Note:
You must provide a LKED.SYSIN DD statement when you call the I
I
procedure. L ______________________________________________________________________ J Figure 24.
COBELG (Link Edit-Go)
r----------------------------------------------------------------------, //COB EXEC PGM=IEPCBLOO,REGION=24K //SYSPRINT //SYSUTl //SYSUT2 //SYSUT3 //SYSPUNCH // //SYSIN //LKED // //SYSLIN // //SYSLMOD // //SYSLIB //SYSUTl // //SYSPRINT //GO //SYSABEND //SYSOUT
SS DD DD DD DD
SYSOUT=A UNIT=SYSDA,SPLIT=C2,CYL,C40,10» UNIT=SYSDA,SPLIT=4 UNIT=SYSDA,SPLIT=4 DSNAME=&LOADSET,DISP=UI]OD,PASS), UNIT=SYSDA, SPACE= (TRK, (SO, 10}) DD DDNAME=SYSIN,DCB=BLKSIZE=80 EXEC PGM=IEWL,PARM=(XREF,LIST,LET},COND=C9,LT,COB}, REGION=96K DD DSNAME=&LOADSET,DISP=COLD,DELETE) DD DDNAME=SYSIN DD DSNAME=&GODATACRUN),DISP=(NEW,PASS), UNIT=SYSDA,SPACE=Cl024, (SO,20,1)} DD DSNAME=SYS1.COBLIB,DISP=(SHR,KEEP) DD UNIT=(SYSDA,SEP=(SYSLIN,SYSLMOD», SPACE=(1024, CSO,20}) DD SYSOUT=A EXEC PGM=*.LKED.SYSLMOD,COND=«9,LT,COB),(S,LT,LKED» DD SYSOUT=A DD SYSOUT=A,DCB=(,BLKSIZE=120,LRECL=120)
~----------------------------------------------------------------------~
I Note: You must provide a COB.SYSIN DD statement when you call the I I ______________________________________________________________________ procedure. L JI Figure 25.
322
COBCLG (Compile-Link Edit-Go)
COBOL F
r-----------------------------------------·-----------------------------, //COB EXEC PGM=IEQCBLOO,PARM='DECK,NOLOAO',REGION=86K I
I I I I I I I
//SYSPRINT //SYSPUNCH //SYSUT1 //SYSUT2 //SYSUT3 //SYSUT4
DD DD DD DD DO DD
I I I I I I
SYSOUT=A SYSOUT=B UNIT=SYSDA,SPACE=(460,(700,100» UNIT=SYSDA,SPACE=(460,(700,100» UNIT=SYSDA,SPACE=(460, (700,100» UNIT=SYSDA,SPACE=(460,(700,100»
~-----------------------------------------.-----------------------------~
I Note: You must provide a COB.SYSIN DD statement when you call the I IL_________________________________________ procedure. ._____________________________ JI Figure 26.
COBFC (Compile)
r----------------------------------------------------------------------, //LKED EXEC PGM=IEWL,PARM='LIST,XREF,LET',REGION=96K I
I I I I I I I I I I
//SYSLIN //SYSLMOD
OD OD
DDNAME=SYSIN DSNAME=&GODATA(RUN),OISP=(NEW,PASS),UNIT=SYSDA, // SP ACE= ( 10 2~·, (50, 20 , 1) ) //SYSLIB DD DSNAME=SYSl..COBLIB,DISP=SHR //SYSUT1 DD UNIT=(SYSDA,SEP=(SYSLIN,SYSLMOD), // SPACE=(1024,(50,20» //SYSPRINT DD SYSOUT=A /IGO EXEC PGM=*.LKED.SYSLMOO,COND=(5,LT,LKED) //SYSABENO DO SYSOUT=A
I I I I I I I I I
~----------------------------------------------------------------------~
I Note: You must provide a LKED.SYSIN DD statement when you call the I I ______________________________________________________________________ procedure. L JI Figure 27.
COBFLG (Link Edit-Go)
r----------------------------------------------------------------------, //COB EXEC PGM=IEQCBLOO,REGION=86K
I I I I I I I I I I I I I I I I I I I I
//SYSPRINT //SYSUT1 //SYSUT2 //SYSUT3 //SYSUT4 //SYSLIN
DO DO DO OD
SYSOUT=A UNIT=SYSDA,SPACE=(460,(700,100» UNIT=SUSDA,SPACE=(460,(700,100» UNIT=SYSDA,SPACE=(460, (700,100» 00 UNIT=SYSOA,SPACE=(460,(700,100» DO OSNAME=&LOADSET,OISP=(MOD,PASS),UNIT=SYSDA, // SPACE=(SO, (500,100» I/LKED EXEC PGM=IEWL,PARM='LIST,XREF',LET',COND=(5,LT,COB), // REGION=96K /ISYSLIN DD DSNAME=&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DSNAME=&GODATA(RUN),DISP=(NEW,PASS),UNIT=SYSDA, II SPACE=(1024,(50,20,1» / /SYSLIB DD DSNAME=SYS1. COBLIB, OISP=:SHR /ISYSUT1 DD UNIT=(SYSDA,SEP=(SYSLIN,SYSLMOD», // SPACE=(1021~, (50,20» //SYSPRINT DD SYSOUT=A /IGO EXEC PGM=*.LKEDnSYSLMOD,COND=«S,LT,COB) , (5,LT,LKED» //SYSABEND DO SYSOUT=A
~------------------------------------------------------------------------~
I Note: You must provide a COB.SYSIN DD statement when you call the I I _______________________________________________________________________ procedure. L JI Figure 28.
COBFCLG (compile--Link Edit-Go)
COBOL F
323
American National Standard COBOL
r-'------·-'-------------------------------------------------------------,
I I I I I I I
//COB //SYSPRINT //SYSPUNCH //SYSUTl //SYSUT2 //SYSUT3 //SYSUT4
EXEC DD DD DO DD DO DO
PGM=IKFCBLOO,PARM='DECK,NOLOAD,SUPl~P'REGION=S6K
SYSOUT=A SYSOUT=B DSNAME=&&SYSUT1,UNIT=SYSDA,SPACE=(460,(700,100» DSNAME=&&SYSUT2,UNIT=SYSDA,SPACE=(460,(700,100» DSNAME=&&SYSUT3,UNIT=SYSDA,SPACE=(460,(700,100» DSNAME=&&SYSUT4, UNIT=SYSDA,SPACE= (460, (700,100»
I I I I I I I
~-------,---------------------------------------------------------------~
I I
Note:
You must provide a COB.SYSIN DD statement when you call the
I I
procedure. L _______,________________________________________________________________ J Figure 29.
COBUC (Compile)
r----------------------------------------------------------------------, //LKED EXEC PGM=IEWL,PARM='LIST,XREF,LET',REGION=96K I
I I I I I I I I I
//SYSLIN //SYSLMOD
DO DO
DSNAME=&&LOADSET DSNAME=&&GOSET(RUN),DISP=(NEW,PASS),UNIT=SYSDA, // SPACE=(1024,(SO,20,1» //SYSLIB DD DSNAME=SYS1.COBLIB,DISP=SHR //SYSUTl DD DSNAME=&&SYSUT1,UNIT=(SYSOA,SEP=(SYSLIN,SYSLMOD», // SPACE=(1024,(SO,20}} //SYSPRINT DO SYSOUT=A //GO EXEC PGM=*.LKED.SYSLMOD,COND=(S,LT,LKEO}
I I I I I I I I
~----------------------------------------------------------------------,~
I Note: You must provide a LKED.SYSIN DD statement when you call the I I _______________________________________________________________________ procedure. L JI Figure
30~
COBULG (Link Edit-Go)
r---------------------------------------------------------------------//COB EXEC PGM=IKFCBLOO,PARM=SUPMAP,REGION=S6K //SYSPRINT //SYSU'rl //SYSU'r2 //SYSUT3 / /SYSU'r4 //SYSLIN // //LKED // //SYSLIN // //SYSLMOD // //SYSLIB //SYSPRINT //GO
DD DO
SYSOUT=A DSNAME=&&SYSUT1, UNIT=SYSDA,SPACE= (460, (700,100» 00 DSNAME=&&SYSUT2,UNIT=SYSDA,SPACE=(460,(700,100» DO DSNAME=&&SYSUT3,UNIT=SYSDA,SPACE=(460,(700,100» DO DSNAME=& &SYSUT4, UNIT=SYSDA, SPACE= (460, (700,100» DO DSNAME=&&LOADSET,DISP=(MOO,PASS},UNIT=SYSOA, SPACE=(SO,(SOO,100}) EXEC PGM=IEWL,PARM='LIST,XREF,LET',COND=(S,LT,COB), REGION=96K DO DSNAME=&&LOADSET,DISP~(OLD,DELETE} DO DSNAME=SYSIN DO DSNAME=&&GOSET(RUN},OISP=(NEW,PASS},UNIT=SYSOA, SPACE=(1024, (SO,20,1)} DO DSNAME=SYS1.COBLIB,DISP=SHR DO SYSOUT=A EXEC PGM=*.LKED.SYSLMOD,COND=«S,LT,COB),(S,LT,LKED»
__ ----------------__ --------------------------_________________ JI I Note: You must provide a COB. SYSIN DO statement when you call the I IL_______________________________________________________________________ procedure. .JII ~-------.
Figure 31.
324
COBUCLG (Compile-Link Edit-Go)
r----·--------------------·----·------------------------------------------,
//COB EXEC PGM=IKFCBLOO,PARM='LOAD',REGION=86K //SYSPRINT DD SYSOUT=A //SYSUTl DD DSNAME=&&SYSUT1,UNIT=SYSDA,SPACE=(460, (700,100» //SYSUT2 DD DSNAME=&&SYSUT2,UNIT=SYSDA,SPACE=(460,(700,100» //SYSUT3 DD DSNAME=&&SYSUT3,UNIT=SYSDA,SPACE=(460,(700,100» //SYSUT4 DD DSNAME=&&SYSUT4,UNIT=SYSDA,SPACE=(460,(700,100» //SYSLIN DD DSNAME=&&LOADSET,DISP=(MOD,PASS), // UNIT=SYSDA,SPACE=(80,(500,100» //GO EXEC PGM=LOADER,PARM='MAP,LET',COND=(5,LT,COB),REGION=106K //SYSLIN DD DSNAME=*.COB.SYSLIN,DISP=(OLD,DELETE) //SYSLOUT DD SYSOUT=A //SYSLIB DD DSNAME=SYS1.COBLIB,DISP=SHR ~----------------------------------------------------------------------~ I Note: You must provide a COB.SYSIN DD statement when you call the I procedure. I _________________________________________ L ._____________________________ JI Figure 32.
COBUCG (compile-Load)
-COBOL F
325
FORTRAN E
r----------------------------------------------------- -------------------,
I I I I I I I I I
//FORT //SYSPRINT //SYSPUNCH //SYSUTl
EXEC DD DD DD
//SYSUT2
DD
//
// / /SYSI.IN //
DD
PGM=IEJFAAAO,REGION=42K SYSOUT=A,DCB=BLKSIZE=121 SYSOUT=B,DCB=BLKSIZE=SO DSN=&SYSUT1,UNIT=SYSSQ,SEP=SYSPUNCH, SPACE=(904,(30,20» DSN=&SYSUT2,UNIT=SYSSQ,SEP=SYSUT1, SPACE=(904,(30,20» UN IT=SYSSQ, SEP=SYSPUNCH, DSNAME=&LOADSET , DISP=(MOD,PASS),SPACE=(SO,(200,200»
I I I I I I I I I
~----------------.------------------------------------------------------.~
I Note: You must provide a FORT.SYSIN DD statement when you call the I IL ______________________________________________________________________ procedure. .JI Figure 33.
FORTEC (Compile)
r--------·--------------------------------------------------------------, //FORT EXEC PGM=IEJFAAAO,REGION=42K //SYSPRINT //SYSPUNCH //SYSUTl //SYSUT2 //SYSLIN // //LKED // //SYSPRINT //SYSLIN // //SYSLMOD //SYSUTl //
DD DD DD DD DD
SYSOUT=A,DCB=BLKSIZE=121 SYSOUT=B,DCB=BLKSIZE=SO UNIT=SYSSQ,SEP=SYSPUNCH,SPACE=(904,(30,20» UNIT=SYSSQ,SEP=SYSUT1,SPACE=(904,(30,20» UNIT=SYSSQ,SEP=SYSPUNCH,DSNAME=&LOADSET, DISP=(MOD,PASS),SPACE=(SO,(200,200),RLSE) EXEC PGM=IEWL,PARM=(XREF,LET,LIST,NCAL),COND=(4,LT,FORT), REGION=96K DD SYSOUT=A,DCB=BLKSIZE=121 DD DSNAME=&LOADSET,DISP=(OLD,DELETE),DCB=BLKSIZE=80 DD DDNAME=SYSIN DD DSNAME=SYS1.FORTLIB,DISP=OLD DD DSN=&SYSUT1,UNIT=SYSDA,SEP=SYSLMOD, SPACE=(1024, (30,20»
~----------------------------------------------------------------------~
I Note: You must provide a FORT.SYSIN DD statement when you call the I IL ______________________________________________________________________ procedure. JI Figure 34.
FORTECL (Compile-Link Edit)
r-------·------------------------------·---------------------------------,
I I I I I I I I I I I I
//LKED //SYSPRINT //SYSLIB //SYSLIN //SYSLMOD
EXEC DD DD DD DD
PGM=IEWL,PARM=(XREF,LET,LIST),REGION=96K SYSOUT=A,DCB=BLKSIZE=121 DSNAME=SYS1.FORTLIB,DISP=SHR DDNAME=SYSIN DSNAME=&GOSET(MAIN),DISP=(NEW,PASS),UNIT=SYSDA, // SPACE=(1024,(SO,20,1),RLSE) //SYSUTl DD DSN=&SYSUT1,UNIT=SYSDA,SEP=(SYSLMOD,SYSLIB), // SPACE=(1024, (30,20) //GO EXEC PGM=*.LKED.SYSLMOD,COND=(4,LT,LKED) //FTOIFOOl DD DDNAME=SYSIN //FT02FOOl DD SYSOUT=B //FT03FOOl DD SYSOUT=A
~----------------------------------------------------------------------~
I Note: You must provide a LKED.SYSLIN DD statement when you call the I I _______________________________________________________________ procedure. L ._______ JI Figure 35..
326
FORTELG (Link Edit-Go)
r-----------------------------·------------·---------------------------,
//FORT DD PGM=IEJFAAAO,REGION=42K //SYSPRINT DD SYSOUT=A,DCB=BLKSIZE=121 //SYSPUNCH DD SYSOUT=B,DCB=BLKSIZE=80 //SYSUTl DD DSN=&SYSUT1,UNIT=SYSSQ,SEP=SYSPUNCH, // SPACE=(904,(30,20» //SYSUT2 DD DSN=&SYSUT2,UNIT=SYSSQ,SEP=SYSUT1,SPACE=(904,(30,20» //SYSLIN DD UNIT=SYSSQ,SEP=SYSPUNCH,DSNAME=&LOADSET, // DISP=(MOD,PASS),SPACE=(80, (200,200) ,RLSE) //LKED EXEC PGM=IEWL,PARM=(XREF,LET,I.IST),COND=(4,LT,FORT), // REGION=96K //SYSPRINT DD SYSOUT=A,DCB=BLKSIZE=121 //SYSLIB DD DSNAME=SYS1 .. FORTLIB,DISP==SHR //SYSLIN DD DSNAME=tLOADSET,DISP=(OLD,DELETE),DCB=BLKSIZE=80 // DD DDNAME=SYSIN //SYSLMOD DD DSNAME=&GOSET(MAIN),DISP==(NEW,PASS),UNIT=SYSDA, // SPACE=(1024,(50,20,1),RLSE) //SYSUTl DD DSN=tSYSUT1,UNIT=SYSDA,SEP=(SYSLMOD,SYSLIB), // SPACE=(1024,(30,20» //GO EXEC PGM=*.LKED.SYSLMOD,COND=«4,LT,FORT),(4,LT,LKED» //FT01FOOl DD DDNAME=SYSIN //FT02FOOl DD SYSOUT=B //FT03FOOl DD SYSOUT=A ~----------------------------.------------------------------------------~ I Note: You must provide a FORT~SYSIN DD statement when you call the I IL ____________________________ procedure. .__________________________________________ JI Figure 36.
FORTECLG (Compile'-Link Edit-Go)
_II"
.. Part IV
,-FORTRAN E
327
FORTRAN G
r-·---------------------------------------------------------------------,
I I I I I
//FORT //SYSPRINT //SYSPUNCH //SYSLIN
//
EXEC DD DD DD
PGM=IEYFORT,REGION=100K SYSOUT=A SYSOUT=B DSNAME=&LOADSET,DISP=(MOD,PASS),UNIT=SYSSQ, SPACE=(80, (200,100),RLSE),DCB=BLKSIZE=80
I I I I I
~--------.--------------------------------------------------------------~
I
Note:
You must provide a FORT.SYSIN DD statement when you call the I
I ________ .______________________________________________________________ proced ure • L JI Figure 37.
FORTGC (Compile)
r----------------------------------------------------------------------, .I/FORT EXEC PGM=IEYFORT,REGION=100K .I/SYSPRINT DD //SYSPUNCH DD .I/S~SLIN DD // .I/LKED EXEC // //SYSLIB DD //SYSLMOD DD // //SYSPRINT DD //SYSUT1 DD // //SYSLIN DD // DD
SYSOUT=A SYSOUT=B DSNAME=&LOADSET,DI3P=(MOD,PASS),UNIT=SYSSQ, SPACE=(80,(200,100),RLSE),DCB=BLKSIZE=80 PGM=IEWL,REGION=96K,PARM=(XREF,LET,LIST), COND=(4,LT,FORT} DSNAME=SYS1.FORTLIB,DISP=SHR DSNAME=&GOSET(MAIN),DISP=(NEW,PASS},UNIT=SYSDA, SPACE=(1024,(20,10,1},RLSE),DCB=BLKSIZE=1024 SYSOUT=A DSNAME=&SYSU'l'l, UNIT=SYSDA,SPACE=(1024, (20,10) ,RLSE), DCB=BLKSIZE=1024 DSNAME=&LOADSET,DISP=(OLD,DELETE} DDNAME=SYSIN
~----------------------------------------------------------------------~
I Note: You must provide a FORT.SYSIN DD statement when you call the I IL______________________________________________________________________ procedure. JI Figure 38.
FORTGCL (Compile-Link Edit)
r----------------------------------------------------------------------, //LKED EXEC PGM=IEWL,REGION=96K,PARM=(XREF,LET,LIST) //SYSLIB //SYSLMOD // //SYSPRINT //SYSUT1 // //SYSLIN //GO //FT05F001 //FT06F001 //FT07F001
DD DD
DSNAME=SYS1.FORTLIB,DISP=SHR DSNAME=&GOSET(MAIN),DISP=(NEW,PASS},UNIT=SYSDA, SPACE=(1024,(20,10,1},RLSE),DCB=BLKSIZE=1024 DD SYSOUT=A DD DSNAME=&SYSUT1,UNIT=SYSDA,SPACE=(1024,(20,10),RLSE), DCB=BLKSIZE=1024 DD DDNAME=SYSIN EXEC PGM=*.LKED.SYSLMOD,COND=(4,LT,LKED} DD DDNAME=SYSIN DD SYSOUT=A DD SYSOUT=B
~----------------------------------------------------------------------~
I
Note:
You must provide a LKED.SYSIN DD statement when you call the I
I ______________________________________________________________________ procedure. L JI Figure 39.,
328
FORTGLG (Link Edit-Go)
r------------------------------------------------------------------------, //FORT //SYSPRINT //SYSPUNCH //SYSLIN // //LKED // //SYSLIB //SYSLMOD // //SYSPRINT //SYSUTl // //SYSLIN // //GO //FT05FOOl //FT06FOOl //FT07FOOl
EXEC PGM=IEYFOR~r,REGION=lOOK DD SYSOUT=A DD SYSOUT=B DD DSNAME=&LOADSET,DISP=Cl"JOD,PASS),UNIT=SYSSQ, SPACE=CSO,C200,100),RLSE),DCB=BLKSIZE=SO EXEC PGM=IEWL,REGION=96K,PARM=CXREF,LET,LIST), COND=C4,LT,FORT) DD DSNAME=SYS1.FORTLIB,DISP=SHR DD DSNAME=&GOSETCMAIN),DIS1?=CNEW,PASS),UNIT=SYSDA, SPACE=C1024,C20,lO,1),RLSE),DCB=BLKSIZE=1024 DD SYSOUT=A DD DSNAME=&SYSUT1,UNIT=SYSDA,SPACE=C1024,C20,10),RLSE), DCB=BLKSIZE=1024 DD DSNAME=&LOADSET,DISP=COJ~,DELETE) DD DDNAME=SYSIN EXEC PGM=*.LKED.SYSLMOD,COND==(C4,LT,FORT) C4,LT,LKED» DD DDNAME=SYSIN DD SYSOUT=A DD SYSOUT=B
~----------------------------------------------------------------------i
I I
Note:
You must provide a FORT.SYSIN DD statement when you call the I
I
procedure. L ______________________________________________________________________ J Figure 40.
FORTGCLG CCompile-Link Edit-Go)
FORTRAN G
329
FORTRAN H
r----------------------------------------------------------------------,
I I I I I
//FORT //SYSPRINT //SYSPUNCH //SYSLIN
//
EXEC DD DD DD
PGM=IEKAAOO,REGION=228K SYSOUT=A SYSOUT=B DSNAME=&LOADSET,UNIT=SYSSQ,DISP=(MOD,PASS), SPACE=(400,(200,50),RLSE)
I I I I I
~-----------------------------------------------------------------------1
I Note: You must provide a FORT.SYSIN DD statement when you call the I IL ______________________________________________________________________ procedure. -'I Figure 41.
FORTHC (Compile)
r-------·--------------------------------------------------------------11 //FORT / / SYSPRINT / /SYSPUNCH //SYSLIN // //LKED // //SYSLIB //SYSPRINT //SYSLMOD // //SYSLIN // //SYSUTl //
EXEC DD DD OD
PGM=IEKAAOO,REGION=228K SYSOUT=A SYSOUT=B DSNAME=&LOADSET, UNIT=SYSSQ,DISP= (MOD,PASS) , SPACE=(400,(200,50),RLSE) EXEC PGM=IEWL,REGION=54K,PARM=(MAP,LET,LIST), COND=(4,LT,FORT) DO DSNAME=SYS1. FORrrLIB,OISP=SHR DD SYSOUT=A DO DSNAME=&GOSET(MAIN),UNIT=SYSOA,DISP=(,PASS), SPACE=(3072) (30,10,1),RLSE) OD DSNAME=&LOADSET,DISP=(OLD,OELETE) DO DDNAME=SYSIN DO DSNAME=&SYSUT1,UNIT=SYSOA,SPACE=(1024, (200,20», SEP=SYSLMOO
II !I !I II
~
I I
~--.--------------------------------------------------------------------~
I Note: You must provide a FORT.SYSIN 00 statement when you call the I I ______________________________________________________________________ procedure. L JI Figure 42.
FORTHCL (Compile-Link Edit)
r----------------------------------------------------------------------1 //LKED EXEC PGM=IEWL,REGION=54K,PARM=(MAP,LET,LIST) I //SYSLIB //SYSPRINT //SYSLIN //SYSLMOD // //SYSUTl // //GO //FT05FOOl //FT06FOOl //FT07FOOl
OD DD DD DO
DSNAME=SYS1.FORTLIB,DISP=SHR SYSOUT=A DDNAME=SYSIN DSNAME=&GOSET(MAIN),UNIT=STSOA,DISP=(,PASS), SPACE=(3072,(30,10,1),RLSE) DD DSNAME=&SYSUT1,UNIT=SYSDA,SPACE=(1024,(200,20», SEP=SYSLMOD EXEC PGM=*.LKEO.SYSLMOD,COND=(4,LT,LKED) DD DDNAME=SYSIN OD SYSOUT=A DO SYSOUT=B
! I I I I I I I I I
!
t-----------------------------------------------------------------------~
I I
Note:
You must provide a LKEO.SYSIN DD statement when you call the I
I
procedure. L ______________________________________________________________________ J Figure 43.
330
FORTHLG (Link Edit-Go)
r----------------------------------------------------------------------, //FORT EXEC PGM=IEKAAOO,REGION=228K //SYSPRINT DD SYSOUT=A //SYSPUNCH DD SYSOUT=B //SYSLIN DD DSNAME=&LOADSET,UNIT=SYSSQ,DISP=(MOD,PASS), // SPACE=(400,(200,SO),RLSE) //LKED EXEC PGM=IEWL,REGION=S4K,PARM=(MAP,LET,LIST), // COND=(4,LT,FORT) //SYSLIB DD DSNAME=SYS1.FORTLIB,DISP=SHR //SYSPRINT DD SYSOUT=A //SYSLMOD DD DSNAME=&GOSET(MAIN),UNIT=SYSDA,DISP=(,PASS), // SPACE=(3072,(30,10,1),RLSE) //SYSUT1 DD DSNAME=&SYSUT1,UNIT=SYSDA,SPACE=(1024,(200,20», // SEP=SYSLMOD //SYSLIN DD DSNAME=&LOADSET(MAIN),DISP=(OLD,DELETE) // DD DDNAME=SYSIN //GO EXEC PGM=*.LKED.SYSLMOD,COND=«4,LT,FORT),(4,LT,LKED» //FT05F001 DD DDNAME=SYSIN //FT06F001 DD SYSOUT=A //FT07F001 DD SYSOUT=B ~---------------------------.-------------------------------------------~ I Note: You must provide a FORT.SYSIN DD statement when you call the I IL ___________________________ procedure. . _____________.______________________________ JI Figure 44.
-
FORTHCLG (Compile-Link Edit-Go)
-
.....
FORTRAN H
331
PL/I F
r-----------------------------------------------------------------------,
I I I I I I I
//PL1D EXEC PGM=IEMAA,PARM='DECK,NOLOAO',REGION=52K //SYSPRINT OD SYSOUT=A //SYSPUNCH OD SYSOUT=B //SYSUT3 00 DSNAME=&&SYSUT3,UNIT=SYSSQ,SPACE=(SO, (250,250», // SEP=SYSPRINT //SYSUT1 DO OSNAME=&&SYSUT1,UNIT=SYSOA,SPACE=(1024, (60,60), // CONTIG),SEP=(SYSUT3,SYSPRINT,SYSPUNCH)
I:
I I I
I I.
I
~-----------------------------------------------------------------------~
I I
Note:
You must provide a PL1D.SYSIN OD statement when you call the I
I
procedure. L _____________________________________ ._________________________________ J Figure 45.
PL1DFC (Compile with Deck Output)
r-----------------------------------------------------------------------, //PL1L EXEC PGM=IEMAA,PARM='LOAD,NOOECK',REGION=52K I
I I I I I I I I
//SYSPRINT DO //SYSLIN DO
//
DD
//SYSU']~3
// //SysU'r1
DD
//
SYSOUT=A OSNAME=ttLOADSET,DI~3P=(MOD,PASS)
,UNIT=SYSSQ,
SPACE=(SO, (250,100» OSNAME=&&SYSUT3,UNIT=SYSSQ,SPACE=(80, (250,250», SEP=SYSPRINT DSNAME=t&SYSUT1,UNIT=SYSDA,SPACE=f1024, (60,60), CONTIG),SEP=(SYSUT3,SYSPRINT,SYSLIN)
I I I I I I I
~----------------------------------------------------------------------~
I Note: You must provide a PL1L.SYSIN 00 statement when you call the I I ______________________________________________________________________ procedure. L JI
Figure 46.
FL1LFC (Compile with Object
Module Output
r-----------------------------------------------------------------------, //PL1L EXEC PGM=IEMAA,PARM='LOAD,NOOECK',REGION=52K //SYSPRINT //SYSLIN // //SYSUT3 // //SYSUT1 // //LKEO // //SYSLIB //SYSLMOO // //SYSUT1 // //SYSPRINT //SYSLIN //
OD DD
SYSOUT=A DSNAME,&&LOAOSET,OISP=(MOD,PASS),UNIT=SYSSQ, SPACE=(80, (250,100» OD OSNAME=&&SYSUT3,UNIT=SYSSQ,SPACE=(80,(250,250», SEP=SYSPRINT DO DSNAME=&&SYSUT1, UNIT=SYSOA,SPACE= (1024, (60,60)" CONTIG),SEP=(SYSUT3,SYSPRINT,SYSLIN) EXEC PGM=IEWL,PARM='XREF,LIST',COND=(9,LT,PL1L), REGION=96K DD DSNAME=SYS1.PL1LIB,DISP=SHR OD OSNAME=&&GOSET(GO),DISP=(MOD,PASS),UNIT=SYSDA, SPACE=(1024,(50,20,1),RLSE) 00 DSNAME=&&SYSUT1,UNIT=SYSOA,SEP=(SYSLMOD,SYSLIB), SPACE=(1024,(200,20» DD SYSOUT=A OD DSNAME=t&LOADSET,DISP=(OLD,DELETE) DD DDNAME=SYSIN
~----------------------------------------------------------------------~
I
Note:
You must provide a PL1L.SYSIN DD statement when you call the I
procedure. I ______________________________________________________________________ L JI Figure 47.
332
PL1LFCL (Compile-Link Edit)
r-----------------------------------------------------------------------, //LKED EXEC PGM=IEWL,PARM='XREF,LIST',REGION=96K I
I I I I I I I I I I
//SYSLIB //SYSLMOD
DD DD
//SYSUTl
DD
//SYSPRINT //SYSLIN //GO //SYSPRINT
DD DD EXEC PGM=*.LKED~SYSLMOD,COND=(9,LT,LKED) DD SYSOUT=A
// //
DSNAME=SYS1.PLILIB,DISP=SHR DSNAME=&&GOSET(GO),DISP=(MOD,PASS), UNIT=SYSDA,SPACE=(1024,(SO,20,1),RLSE) DSNAME=&&SYSUT1,UNIT=SYSDA,SEP=(SYSLMOD,SYSLIB), SPACE=(1024,(200,20» SYSOUT=A DDNAME=SYSIN
I I I I I I I I I
~------------------------------------------------------------------------~
I Note: You must provide a LKED.SYSIN DD statement when you call the I IL______________________________________________________________________ procedure. JI
Figure 48.
PLILFLG (Link Edit-Go)
r-----------------------------------------------------------------------, //PLIL EXEC PGM=IEMAA,PARM='LOAD,NODECK'REGION=S2K //SYSPRINT DD SYSOUT=A //SYSLIN DD DSNAME=&&LOADSET,DISP=(MOD,PASS), // UNIT=SYSSQ,SPACE=(SO,(250,100» //SYSUT3 DD DSNAME=&&SYSUT3,UNIT=SYSSQ,SPACE=(80,(2S0,2S0», // SEP=SYSPRINT //SYSUTl DD DSNAME=&&SYSUT1,UNIT=SYSDA,SPACE=(1024,(60,60)" // CONTIG),SEP=(SYSUT3,SYSPRINT,SYSLIN) //LKED EXEC PGM=IEWL,PARM='XREF,LIST', // COND=(9,LT,PLIL),REGION=96K //SYSLIB DD DSNAME=SYSU.PLILIB,DISP=SHR //SYSLMOD DD DSNAME=&&GOSET(GO),DI // SP=(MOD,PASS),UNIT=SYSDA,SPACE=(1024,(SO,20,1),RLSE) //SYSUTl DD DSNAME=&&SYSUT1,UNIT=SYSDA,SEP=(SYSLMOD,SYSLIB), // SPACE=(1024,(200,20» //SYSPRINT DD SYSOUT=A //SYSLIN DD DSNAME=&&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //GO EXEC PGM=*.LKEDoSYSLMOD,COND=«9,LT,LKED),(9,LT,PLlL» //SYSPRINT DD SYSOUT=A ~-----------------------------------------.-----------------------------~ I Note: You must provide a PLIL.SYSIN DD statement when you call the I I _______________________________________________________________________ procedure. L JI Figure 49.
PLILFCLG (Compile-Link Edit-Go)
r-----------------------------------------------------------------------, //PLIL EXEC PGM=IEMAA,PARM='LOAD,NODECK',REGION=S2K //SYSPRINT DD SYSOUT=A //SYSLIN DD DSNAME=&&LOADSET,DISP=(MOD,PASS),UNIT=SYSSQ, // SPACE=(SO,(2S0,lOO» //SYSUT3 DD DSNAME=&&SYSUT3,UNIT=SYSSQ,SPACE=(SO,(250,250», // SEP=SySPRINT //SYSUTl DD DSNAME=&&SYSUT1,UNIT=SYSDA,SPACE=(1024,(60,60»" // CONTIG),SEP=(SYSUT3,SYSPRINT,SYSLIN) //GO EXEC PGM=LOADER u PARM='MAP,PRINT',REGION=96K, // COND=(9,LT u PLIL) / /SYSLIB DD DSNAME=SYS1. PLILIB, DISP==SHR //SYSLIN DD DSNAME=&&LOADSET,DISP=(OLD,DELETE) //SYSLOUT DD SYSOUT=A //SYSPRINT DD SYSOUT=A ~------------------------------------------.-----------------------------~ I Note: You must provide a PL1.SYSIN DD statement when you call the I L procedure. JI I ______________________________________________________________________ Figure SO.
PLILFCG (Compile--Load) FORTRAN H
333
r----------------------------------------------------------------------, //GO EXEC PGM=LOADER,PARM='MAP,PRINT',REGION=96K I
I I I I
//SYSLIB DD //SYSOUT DD //SYSPRINT DD
DSNAME=SYS1.PL1LIB,DISP=SHR SYSOUT=A SYSOUT=A
I I I
~----------------------------------------------------------------------~
I
Note:
You must provide a GO.SYSIN DD statement when you call the
I
I
I
procedure. L _______________________________________________________________________ J Figure 51.
PL1LFG (Load)
Examples 1.
The following example shows how to call the ALGOFCLG cataloged procedure. The source program is in the input stream. No changes are made to the procedure.
r------------------------------------------------------------------, JOB I
I //EX1 I //STEP
EXEC ALGOFCLG I //ALGOL. SYSIN DD * I source program
I Ii II
IL _________________________________________________________________ /* JI 2.
The following example shows how to call the ASMEC cataloged procedure. You want to change the SYSPUNCH DD statement to define a kept data set on tape named OBJMOD. The source program is in the input stream ..
r-----------------------------------------------------------------,
I //EX2 JOB I // EXEC PROC=ASI"lEC I //ASM. SYSPUNCH DD UNIT=2400,DSNAME=OBJMOD,DISP= (,KEEP)
II
I / / ASM. SYSIN
il
I
DD * source program
~
il I
Il _________________________________________________________________ /* JI 3.
The following example shows how to call the ASMFCL cataloged procedure. You want to change the SYSLMOD DD statement to define member #3 of a cataloged data set named SYST.LIB. The source program is in the input stream.
r--·--·-------------------------------------------------------------1 I //EX3 JOB I I // EXEC ASMFCL I I //ASM.SYSIN DD * I source program I I I /* I DD DSNAME=SYST.LIB(#3),DISP=(,CATLG) IL __//LKED.SYSLMOD •__. ____________________________________________________________ -1I
334
4.
The following example shows how to call the COBELG cataloged procedure. You want to change the REGION parameter of the LKED EXEC statement to REGION=120K, and to change the PARM parameter to show MAP rather than XREF. You also want to add a TIME=5 parameter to the GO EXEC statement. The object program is on a 2501 card reader. You are adding two DD statements to the GO step. r ---------------------~.-------------------------------------------,
I //EX4 JOB I EXEC COBELG,REGION. LKED=120K,PARM.LKED= (MAP, I I //CALL LIST,LET),TIME.GO=5 I I // UNIT=2501 I I //LKED.SYSIN DD DD UNIT=2314,SPACE=(CYL,(20,5» I I //GO.UTIL I //GO.INPUT DD * I I input data I IL__________________________________________________________________ /* JI
5.
The following example shows two steps of a job. The first step calls the FORTGCL cataloged procedure. A value of OBJ'ECT is assigned &LOADSET symbolic parameter and the DISP parameter is changed to DISP=(OLD,KEEP) in the SYSLIN DD statement of the LKED step. The second step of the job executes the program produced by the linkage editor in the data set defined by the SYSLMOD DD statement. Note: IBM-supplied cataloged procedures do not use symbolic parameters. However, in this case, you can take advantage of the fact that &LOADSET is in symbolic parameter form to assign it a different value with the EXEC statement.
r-------------------------------·-----------------------------------,
I //EX5 JOB I EXEC FORTGCL,LOADSE']~=OBJECT I I //STEP1 I //FORT.SYSIN DD * I I source program I I /* I DISP=(OLD,KEEP) I I //LKED.SYSLIN DD I //STEP2 EXEC PGM=*.STEP1.LKE:D.SYSLMOD I I I I I IL _________________________________________________________________ JI
6.
The following example shows how to call the PL1LFCLG cataloged procedure. You want the object module to be on a 2400 unit. Therefore you must change the UNIT parameter of the SYSLIN DD statement and nullify the SPACE parameter. You also want to nullify the COND parame1:.er of the GO step.
r-----------------------------------------------------------------,
I //EX6 JOB I I // EXEC PROC=PL1LFCLG,PARM.GO= I I //PL1L.SYSLIN DD UNIT=2400,SPACE= t I //PL1L.SYSIN DD * I source program I IL ____________________________________ /* I ._____________________________ J
FORTRAN H
335
Part IV
7.
The following example shows how to call the COBUCG cataloged procedure. The source program is in the input stream. You are adding two DD statements to the GO step that are required by your loaded program for execution.
r------------------------------------------------------------------, JOB I
I //EX7
I // I //COB.SYSIN
I I
EXEC DD
COBUCG
*
source program /*
I //GO.DATA
DD
DSNAME=RECORDS,DISP=OLD
I I
I I I
IL __________________________________________________________________ / /GO. OUTPUT DD SYSOUT=F JII
336
Appendix A:
Indexed Sequential Data Sets
Indexed sequential (ISAM) data sets are created, retrieved, and overwritten using special subsets of DD statement parameters and subparameters. Each data set can occupy up to three different areas of space: 1.
Prime area -- This area contains data and related track indexes. It exists for all indexed sequential data sets.
2.
Overflow area This area contains overflow from the prime area when new data is added. It is optional.
3.
Index area -- This area contains master and cylinder indexes associated with the data set. It exists for any indexed sequential data set that has a prime area occupying more than one cylinder. Indexed sequential data. sets must reside on direct access volumes.
The data set can reside on more than one volume and the device types of the volumes may in some cases differ.
Creating an Indexed Sequential Data Set One to three DD statements can be used to define a new indexed sequential data set. There are four types of indexed sequential data sets: • Separate index, prime and overflow areas -- The DD statements that define each area must be coded in the following order: 1. 2• 3.
Index area Pr ime area Overflow area
• Separate index and prime areas -- No overflow area. The DD statements that define each area must be coded in the following order: 1. 2.
Index area Prime area
• Separate prime and overflow areas -- The index area is part of the prime area. The DD statements that define each area must be coded in the following order: 1. 2.
Prime area Overflow area
• Prime Area Only -- The index area is part of the prime area. the DD statement that defines the prime area must be coded.
Only
When more than one DD statement is used to define the data set, assign a ddname only to the first DD statement; the name field of the other statements must be bla~In other words, concatenate the DD statements. Table 59 shows the parameters required to define each area. The parameters for the three areas are discussed together in the following paragraphs. For further information on the parameters refer to nDirect Access Devices n in the section "Creating a New Data Set.n Appendix A:
Indexed Sequential Data Sets
337
Table 59.
Parameters for creating an Indexed Sequential Data Set (Part 1 of 2)
r--------T-------------------------T----------T-------------------------,
I Area
I
Parameter type
I Parameter I
comments
I
~--------+-------------------------+---------+-------------------------~
Index
IData set information
I DSNAME
I I I I
I
I
I
I Required.
You must I code I DSNAME=dsname(INDEX) or I DSNAME=&dsname (INDEX)
I ! I I
~---------+-------------------------~
I DISP
~
I I
I
I
I Required. You must I code the same value as I in the DD statement for I the prime area.
I I I
I
~-------------------------+---------+-------------------------i ~Location
of the data set I UNIT
I
I Required unless you
I request (with the I VOLUME parameter) the I same volume used for an I earlier data set. Only lone unit can be I requested.
I
I I
I
I
I I I
I I I
I
~---------+-------------------------i
I VOLUME I
I Required if you want a I specific volume.
I I
~---------+-------------------------i
I
I LABEL
I Optional.
I
iSize of the Data Set
I SPACE
I Required.
I
t-------------------------+---------+-------------------------i ~-------------------------+---------+-------------------------i
(Data Attributes
I DCB
I Required.
I
~-------------------------+---------+-------------------------i
lSpecial Processing Option I SEP I Either parameter can be I i ~---------i used. I I
I
AFF
I
I
~--------+-------------------------+---------+-------------------------i
Prime
!,Data Set information fi
I
I DSNAME I I I I I
I Required. You must I code: DSNA~ili=dsname(PRIME), I I DSNAME=&dsname(PRIME) I DSNAME=dsname, or I DSNAME=&dsname
I I I I I
I
~---------+-------------------------i
I DISP
I Required.
I
~-------------------------+---------+-------------------------i
ILocation of the data set I UNIT
I I I I
I I I I I
Required unless you request (with the VOLUME parameter) the same volume used for an earlier data set.
I I I I I
~---------+-------------------------i
I VOLUME I
I Required if you want a I specific volume or I multiple volumes.
I I I
~---------+-------------------------i
I LABEL
I Optional.
I
L _________ i _________________________ i _________ i _______ __________________ J ~
338
Table 59.
Parameters for creating an Indexed sequential Data set (Part 2 of 2)
r----'----T--------------------------T--------T-------------------------, IArea
I
Parameter type
I Parameter I
Comments
,
~--------+--------------------------+----.----+-------------------------~
Prime (Cont.)
ISize of the data set I
I
I I I I
I SPACE
I I
I I I
1
I Required.
If you do not I I include a DD statement I I for the index area you I I can either specify an I I "index quantity" or let I I the system assign the I I index area. I
~-------------------------+----.----+------------------------+
lData Attributes
I DCB
I Required.
I
~-------------------------+-----.----+-------------------------+
ISpecial Processing Option I SEP I Either parameter can be I I ~---------~ used. I I I I I AFF ~--------+--------------------------+---------+-------------------------i
OverflowlData set Information I I I
I DSNAME I I I
I Required.
You must I code DSNAME=dsname I (OVFLOW) or I DSNAME=&dsname(OVFLOW).
I
I
I I
~-----.----+------------------------~
I
I I I I
I DISP I
I I
I Required. You must I code the same value as
I I
I in the DD statement for I I the prime area. I
~--------------------------+---------+-------~----------------~
ILocation of the data set I UNIT I I I I I I I I
I I
I Required unless you I request (with the
I
I I VOLUME parameter) the I I same volume used for an I I earlier data set. I
~----.----+------------------------~
I VOLUME I
I
I Required if you want a I specific volume.
I I
~---------+-------------------------~
I
I
I LABEL
I Optional.
I
~-------------------------+-----.----+------------------------~
ISize of the data set
I SPACE
I Required.
I
~-------------------------+--------+--------~-----------------~ I Data Attributes I DCB I Required. I ~--------------------------+----.----+-------------------------~
ISpecial Processing Option I SEP
I
I Either parameter can be I
~------ . . . --~ used. I AFF ________ iI __________________________ iI _________ iI ________ _________________ JI
Appendix A:
Indexed sequential Data Sets
339
Data Set Information The DSNAM.E and DISP parameters are required on any DD statement used to define an indexed sequential data set.
The DSNAME parameter is required on the DD statement that defines each of the areas. The general format is:
r---------·-------------------------------------------------------------,
I DSNAME={dsname(area)} I &dsname(area) IL ______________________________________________________________________ JI Replace the term "dsname" with the fully qualified. unqualified. or temporary name of the data set. Whichever name you use. you must use the same name of the DD statement for each area. The term "area" indicates which area you are defining as decribed below. Index area:
The format of the DSNAME parameter for the index area is:
DSNAME={dsname(INDEX) } &dsname(INDEX) For example, DSNAME=SET.TWO(INDEX) DSNAME=AREA(INDEX) DSNAME=&TEMP(INDEX) Prime
are~:
The format of the DSNAME parameter for the prime area is:
DSNAME:={dsname (PRIME) } &dsname(PRIME) For example. DSNAME:=SET. TWO (PRIME) DS NAME= AREA (PRIME) DSNAME=&TEMP(PRIME) If you are using only on~ DD statement to define the data set. you may omit the term (PRIME). For example: DSNAME=SET.TWO DSNAME:=AREA DSNAME:= &TEMP Qverflow area: area is:
The format of the DSNAME parameter for the overflow
DSNAME=={dsname (OVFLOW) } . &dsname (OVFLOW) For example. DSNAME=SET. TWO (OVFLOW) DSNAME==AREA (OVFLOW) DSNAME=&TEMP(OVFLOW)
340
Location of the Data Set
The format of the DISP parameter is:
r-----------------------------------------·------------------------------,
I DISP= (NEW [. DELETE] ) I ,KEEP IL ______________________________________________________________________ JI You may omit the DISP parameter if you are creating and deleting the data set in the same job step. Index area: area.
You must specify the same value you specify for prime
Prime area: If you have separate DD stat~ements for an index or overflow area, or both, you can only specify DISP= ( , KEEP) If you are defining the data set with only one DD statement area you can specify DISP= ( , CATLG) or DISP= ( , PASS) If the data set was defined on more than one DD statement and the volumes on which the data SE~t resides corresponds to the same device type, you can use the IEHPROGM utility program to catalog the data set. Refer to nThe IEHPROGM program" in the publication IBM System/360 ·Operating System~ utilities for details. Overflow area: prime area.
You must specify the same value you specify for the
LOCATION OF THE DATA SET The location of each area of the data set is given by the UNIT and VOLUME parameter. The LABEI~ parameter is optional.
UNIT Parameter The UNIT parameter indicates which kind of direct access device you want. The format of the UNIT parameter i.s:
r-----------------------------------------·------------------------------,
I {Unit addreSS} I I I UNIT=( device type [,unitcount]) groupname,P I _______________________________________________________________________ L JI The first positional paramet:er identifies the direct access device you want to use for the area. unit address is the actual machine address of the device. UNIT=190
For example
device type is the type of device. You can specify a 2301, 2302, 2303, 2311, 2314, 2321. For example, UNIT=2311 Appendix A:
Indexed sequential Data Sets
341
groupname is the name of a collection of devices. For example, UNIT=DISK The second positional parameter can be used only for the prime area when more than one volume are requested in the VOLUME parameter. You can eithE~r request a number of devices or parallel mounting. Index ar~~: You can request only one device. It does not have to be the same kind of device as the one used for the prime area. For example, the index area could be on a 2301 and the prime area on a 2314. Prime area: If there are separate DD statements defining the prime and index areas, you must request the same number of direct access devices for the prime area as there are volumes specified in the VOLUME parameter. Overflow area: You can request only one device. It does not have to be the same kind of device as the one used for the prime area. For example, the prime area could be on a 2314 and the overflow on a 2311.
VOLUME - - - -Parameter -The VOLUME parameter for each of the areas is used in the same manner as for other data sets on direct access devices. The format of the VOLUME parameter is:
r-----------------------------------------------------------------------,
I VOLUME= ([PRIVATE1 [,RETAIN] [" VOLCOUNT~rSER=(Serial, ••• >] > I I _______________________________________________________________________ "J~EF=reference L JI The volcount parameter and mUltiple serial numbers can only be used for the prime area. Index arE~~: You can make a specific or nonspecific request for any public or private volume. You can request only one volume. It can be one of the volumes used for the prime area, or the volume used for the overflow area. Prime arE~a: You can request mUltiple volumes even though a secondary quantity is not allowed in the SPACE parameter for an indexed sequential data set. The first, or only, volume you request cannot be the system residence volume. (The system residence volume is the volume that contains the IPL program.) You can only request one volume if the prime and index areas are defined in the same DD statement. You define the index area in the same DD statement by specifying an nindex quantity" in the SPACE parameter of the DD statement that defines the prime area and by omitting the DD statement for the index area. Overflow area: You can make a specific or nonspecific request for any public or private volume. You can request only one volume. It can be one of the volumes used for the prime area, or the volume used for the index area. Note: If you request nonspecific volumes and use more than one DD statement to define the data set, you will not be able to retrieve the data set in another ~te~ the same job. (See the description of the VOLUME parameter in nRetrieving or Extending an Indexed Sequential Data Set .. n)
342
LABEL Paramet.er The LABEL parameter need only be coded to specify password protection (PASSWORD) or a retention period (EXPDT or RETPD). You must specify the same parameter for each area defined •
........ Size of the Data Set
You must use the SPACE parameter to indicate the size of each area of the data set. The SPACE parameter lets you request space for your data set in one of two ways: 1.
You can request a number of cylinders and let the system assign them specific tracks, or
2.
You can request specific tracks.
If more than one DD statement is used to define the data set, all must request space using the same technique.
SPACE
~drameter-The
system Assigns Tracks
The format of the SPACE parameter is:
r-------------------------·---------------------------------------------, I I IL ________________________________________________________________________ SPACE=(CYL,(primary quantity["index]>]"CONTIG]) JI The space must be requested in units of cylinders. Replace "primary quantity" with the number of cylinders you want. The nindex" can only be specified for the prime area as described below. You may request contiguous space wi·th the CONTIG parameter. Index area: If you code CONTIG for the index area, you must also code it for the other areas. Pr irne art~a: If you code CONTIG for the prime area, you must also code it for the other areas. If you request more than one volume with the VOLUME parameter, each volume is assigned the number of cylinders requested in the primary quantity. (A secondary quantity is not allowed for indexed sequential data sets.) If you do not define an index area with a separate DD statement, you can choose to have an index area embedded in the prime area or placed at the end of the prime area. • Embedded in the prime a:['ea -- You must specify the number of cylinders required for -the index area. with the "index" subparameter. For example, if you want a primary allocation of 10 cylinders and an index area of two cylinders code SPACE=(CYL,(10,,2». If you use an index quantity the prime area must reside on only on~ volume. • End of the Prime Area -.- You must increase the primary quantity by the number of cylinders required for the index area. For example, if you want a primary allocation of five cylinders and an index area of one cylinder, code SPACE==(CYL,6) Appendix A:
Indexed sequential Data Sets
343
-
Overflow area: If you code CONTIG for the overflow area, you must also code-It--for the other areas.
The format of the SPACE parameter is:
r----------------------------------------------------------------------,
I I Il ______________________________________________________________________ SPACE=:(ABSTR, (primary quantity,address,index » JI The number of tracks you request must be equal to one or more whole cylinders. The address of the beginning track must correspond with the first~ track of a cylinder (other than the first cylinder on the volume). The "index" can only be specified for the prime area as specified below. Prime Area: If you request more than one volume with the VOLUME parameter, space is allocated for the prime area beginning at the specified address and continuing through the volume and onto the next volume until the request is satisfied. This can only be done if the volume table of contents (VTOC) of the second and all succeeding volumes is contained within the first cylinder of each volume. If you do not define an index area with a separate DD statement, you can choose to have an index area embedded in the prime area or placed at the end of the prime area. •
!':mbedded_i~t.h.~_2..!:i_.!!l~_~!:~~
•
~nd of---.!:~_-i~~..!:~~
-- You must specify the number of tracks required for the index area with the nindex n subparameter. The number of tracks must be equal to one or more cylinders. If you use an index quantity, the prime area must reside on only one volume • -- You must increase the primary quantity by the number of tracks required for the index area. The total numb€!r must be equal to one or more cylinders.
Data Attrihutes The DCB parameter must be coded on every DD statement that defines an indexed sequential data set. You must code DSORG=IS or DSORG=ISU. Other DCB subparameters can be coded as required by the language you are using. Indexed sequential data sets can only be used with the assembler, COBOL and PL/l. Table 60 shows the DCB subparameters used for each language. Underscored items are those default values selected if you omit the sUbparameter. Default values are not shown where the attribute can be specified either in your program or in the DD statement. If values for a given parameter are not shown, it is either specified in your source program or given a fixed value by the compiler. A glossary of DCB subparameter is given in Appendix B. Code only those parameters that apply to your compiler as shown in Table 60. When more than one DD statement is used to define the data set, code all the DCB subparameters on the first DD statement. Code DCB=*.ddname on the remaininq statement or statements; ddname is the name given to the first DD statement. (You can repeat the complete DCB parameter in each of the remaining DD statements, but the backward reference saves you time and eliminates the possibility of error.)
344
Table 60.
DCB Subparameters for Creating an Indexed Sequential Data Set
DCB Subparameter
Assembler
PL/I F
For D
BFALN=
~~~--- f--~~-~~--~----~
number of bytes
number of bytes
BLKSIZE"
E
B:F~O~----------~-~um~b~e-r-o-f-·--b-u~ff~e~rs-~~~l-f--n-u-mber of buffers~ number of b~ --
----~~----
number of tracks
-- I__--~~-----~~-~-~
DSORG=
-~I--~~-~- -L~
number of bytes number of
buffers~
number of bytes number of
-buf~eJC
~t-----~------1f-----~~-l+-----------+--- ---~------
-
number of tracks
CYLOFL= ~----
l!_
ANS COBOL
COBOL F
COBOL E
IS
IS
IS or ISU
number of tracks
----------t-----------+----------- -----
number of tracks 1__-------- - - - - - -
IS
IS
-------t-----~---~----+--~--~ .-~~j__---~--
HIARCHY= 1-- --
001'
1
--~-----------------I__-----~~~~~
KEYLEN=
number of bytes
number of bytes
~----~---------\---~-------~-~
LREC L= -------
number of bytes
----~-~I--------
NTM=
-----~-------~
-- ----------- j-
---------------E
number of bytes t----~--
-
number of tracks
------
number of tracks
number of tracks
number of tracks --
~f-----~~----~-r----~-
OPTCD=
[WJ [M] [Y] [IJ [L] [R]
[W] [M]
I-----~-~~~-t___-~--~--~
RECFM= f----~~--~~-~~-~
RKP=
1 This
2
[yJ[J] [L][R]
[WJ [M] [Y ] [IJ[L] [R] [W] [MJ [Y] [IJ [L] -----l-~~~~r~
V[B] or F [B]
V[B] or F[B]
----~-----~--~
byte number
byte number
function can be specified in your program rather than in the DD statement.
American National Standard COBOL.
Appendix A:
Indexed Sequential Data Sets
345
Retrieving or Extending an Indexed Sequential Data Set A maximum of three DD statements are needed to retrieve or extend an indexed sequential (ISAM) data set. The DD statements are coded in the following order: 14 24 3.
First DD statement - defines the indexed area Second DD statement - defines the prime area Third DD statement - defines the overflow area
Only the second DD statement is required. The first DD statement is not needed if either the index area resides on a volume of the same ty[)e as the prime area or if the index area is part of the prime area. The third DD statement is not needed if either the overflow area resides on a volume of the-same type as the prime area or if there is no overflow area. When t.he first or third DD statements, or both, are not needed the definition of the index or overflow areas are included in the DD statement for the prime area. Table 61 shows the parameters required for each DD statement. The parameters for all three DD statements are discribed together in the following paragraphs.
Table 61.
Parameters for Retrieving or Extending an Indexed Sequential Data Set (Part 1 of 2)
r-----------------T--------------T---------T----------------------------1 I Area IParameter Type! Parameter I Comments I ~-----------------.+--------------+---------+----------------------------1
J:ndex (used only I Data Set if index area I Information not on same I device type as I prime area) I
I I (First DD statement)
I DSNAME I I
I Required. You
must code I the same value as in I second DD statement.
I I I
~---------+---------------------------·I
I DISP
I I
I Required. You must code I the same value as in I second DD statement.
I I I
~--------------+--------+---------------------------.JI
I Location of I UNIT I Required. I ! the data set ~---------+---------------------------~ ! I VOLUME I Required. I
~--------------+---------+---------------------------~
I Data I Attributes
! ! I I DCB I Required·1
~-----------------+--------------+--------+_----------
Pr ime and Overflow; or Index, Prime, and Overflow; or Indexed and Prime (required)
! Data Set I Information
I I I I
I
DSNAME
_________________ JI
! Required.
:1
~----------+---------------------------11 I DISP I Required. Specifies ~
I I I
I whether you are I retrieving the data set. I
I I II
~--------------+---------+---------------------·-----1i
(Second. DD statement)
I Location of I UNIT I Required. Unless it is ~ I the data set I I a passed data set with Ii I I I all three area on one I I I I va 1 ume • I ~---------+---------------------------~ I I I VOLUME I Same requirement as UNIT. I I I I If used, code volumes in I I I I order they were defined. I ~--------------+---------+---------------------------~
_________________
346
I Data I I I Attributes I _________ DCB I ___________________________ Required. I ______________ JI
~
~
~
Table 61.
Parameters for Retrieving or Extending an Indexed Sequential Data Set (Part 2 of 2)
r-----------------T--------------T---------T---------------------------, Area IParameter Type I Parameter I Comments I
I
~-----------------+--------------+---------+---------------------------~
Overflow (used I Data Set only if overflow I Information area not on same I device type as I prime area) I
I I
(Third DD statement)
I
I DSNAME I
I I
I Required. You must code I the same value as in I second DD statement I
I
I I I
~---------+---------------------------~
I DISP I I
I Required. You must code I the same value as in the I second DD statement
I I
I
~--------------+---------+---------------------------~
I Location of I UNIT I Required. I I the data set ~---------+---------------------------~ I I VOLUME I Required. I ~--------------+---------+---------------------------~
I Data I DCB I Required. I I _________________ I ______________ Attributes I _________ I __________________________ JI L ~
~
~
Data Set Information The DSNAME and DISP parameters are required. DSN~lE
Parameter
The format of the DSNAME parameter is:
r---------------------------'-------------------------------------------, dsname I
I I
DSNAME= &dsname I I *.stepname.ddname I * • stepname • procs t.epname. ddname LI ___________________________ ,___________________________________________ JI
Identify the data set by its name, but do not include the term INDEX, PRIME or OVFLOW. If the dat.a set was passed from a previous step, you can identify it by a backward reference as long as it was dh only one DD statement. First DD statement: You must code the DSNAME parameter exactly as you code it in the second DD statement. You must not code the term INDEX. second DD statement: Third DD Statement:
You must not code the term
PRI~ili
or OVFLOW.
You must not code the term OVFLOW.
DISP Parameter The format of the DISP parameter is:
r---------{~~;-}-[~~~~~---l-----·-------------------------------------------1
I DISP=( OLD ,DELETE ) I I MOD ,KEEP I I ,CATLG I IL ___________________________ , UNCATLG .___________________________________________ JI
Appendix A:
Indexed sequential Data Sets
347
You must code either SHR. OLD or MOD. SHR specifies that you are retrieving the data set and that it can be shared with other jobs. OLD specifies that you are retrieving the data set. MOD specifies that you are extending the data set~ You can, optionally, assign a disposition as the second subparameter. The same restrictions for PASS and CATLG apply as when you created the data set. First DO statement: You mus·t code the DISP parameter exactly as you code it in the second 00 statement. This first DO statement is used when the index area resides on a different device type from the prime area. Third 00 Statemen~: You must code the DISP parameter exactly as you coded it in the second DD statement. This third DO statement is used when the overflow area resides on a volume of a different device type from the prime area.
Location of the Data Set You must use the UNIT and VOLUME parameter. unless the data set was passed and had all three areas on the same volume, or unless the data set was cataloged. UNIT Parameter The format of the UNIT parameter is: r-------·--------------------------------------------------------------~I
I {"Unit addreSS} I I UNIT=( device type [,unit count]> I I _______ ._______________________________________________________________ groupname ,P L .1I The first positional parameter identifies the direct access device you want to use for the data set. The second positional parameter cannot be used in the first DD statement. E'irst DD ~t data set and overlay it with a new ISAM data set. The new data set will keep the name (dsname> of the overwritten data set. In order to overwrite an ISAM data set, you must know the DD statement, or statements that were used to create it. You indicate that you overwriting the data set by making some changes to the original parameters, and recording the remaining parameters without change.
Data Set Information The DSNAME and DISP parameters are required. DSNAME Parameter The DSNAME parameters must be coded just as you coded them in the original DD statements. DISP Parameter The format of t.he DISP parameter is:
r---------------------------------------·-------------------------------,
I DISP= (OLD [,KEEP ]> I L,DELETE IL_______________________________________ ._______________________________ JI
Indexed area: area.
You must specify the same value you specify for the prime
Prime area: If there was only one original DD statement that specified a cataloged data set, you can specify DISP=(OLD,UNCATLG) or DISP=(OLD,PASS) If you do not wish to uncatalog or pass the data set or if there were more than one original DD statements specify the DISP parameter as shown in the format above. Overflow Area: prime area.
You must specify the same value you specify for the
Location of the Data Set The UN I'!' and VOLUME parameter are required unless the original data set was cataloged. UNIT Parameter The UNIT parameters must be coded just as you coded them in the original DD statements. Appendix A:
Indexed Sequential Data Sets
351
-
VOLUME Parameter If you made a specific volume request when you created the data set, the VOLUME parameters must be coded just as you coded them in the original DD statements. If you requested nonspecific volumes when you created the data set, you must find out the serial numbers and specify them using VOLUME=SER=(serial, ••• ). If the data set was cataloged you can use VOLUME=REF=dsname. If the data set was defined with only one DD statement in a previous step of the same job, you can make a backward reference using VOLUME=REF. LABEL Parameter The LABEl. parameter is not needed. Any password protection or retention period specified for the original data set will apply to the ~ew data set.
Size of the Data Set
The space allocation specified for the original data set is retained for the new data set. If the SPACE parameter is coded, it is ignored.
Data Attributes
The DCB parameter must be coded on every DD statement. subparameters are required:
Two
DSORG=IS or DSORG=ISU and MACRF=PM or MACRF=PL All other subparameters you specified for the original data set will be carried over for the new data set and you do not have to recode them. However, if you want to change the values of one or more of those subparameters, you can code the new ;3ubparameter in the DCB parameter. (You can change all the subparameters shown in Table 60 except BUFNO.) When more than one DD statement is used to define the data set, code all the DeB subparameters on the first DD statement. Code DCB=*.ddname on the remaining statement or statements; ddname is the name given to the first DD statemnt.
352
Examples 1.
The following example shows a job with two steps. In the first step you create an indexed sequential data set with three separate areas. All areas reside on the same volume. In the second step you retrieve and delete the data set. Note that you cannot make a backward reference with the DSN~ili parameter because the data set was defined with more than one DD statement.
r----------------------·-------------------------------------------, IISM'lP1 JOB IIONE IllS II II II II II II
EXEC PGM=A DSNAIv'lE=~;TOlV.1 (INDEX) , DISP= (, KEEP) , UNIT=2311, DD VOLUME=(PRIVATE,SER=ABCD),SPACE=(CYL,2), DCB=(DSORG=IS,RECFM=F} DSNAJ.V1E~=&TOM (PRIME) , DISP= (, KEEP) , UNIT=2311, DD VOLUME=(PRIVATE,SER=ABCD),SPACE=(CYL,20),DCB=*.IS DSNAME=t~TOM(OVFLOW) ,DISP= (,KEEP) , UNIT=2311, DD VOLUMB=(PRIVATE,SER=ABCD),SPACE=(CYL,5),DCB=*.IS
IITWO EXEC PGM=B IIIN DD DSNAl\1E=t~TOM,DISP=(OLD,DELETE) ,DCB=DSORG=IS, II UNIT=2311,VOLUME=SER=ABCD L ___________________________________ ._____________________________ _
2.
The following example shows how to create an indexed sequential data set with three separate areas. Each area is on separate volumes. The prime area uses two volumes. Note that you must request the same number of devices as there are volumes for the prime area to use the index area is defined by a separate DD statement. The data set is kept.
r-----------------------------------------------------------------,
I IIDATA DD DSNAME=JANE(INDEX),DISP=(,KEEP),UNIT=2314, I I II VOLUME=SER==AB0001, SPACE=: (CYL, 5) , DCB=DSORG=ISU I I II DD DSNAME=JANE(PRIME),DISP=(,KEEP),UNIT=(2413,2), I I II VOLUME=SER==(AB0002,AB0003) ,SPACE=(CYL,50), I I II DCB=DSORG=ISU I DD DSNAME=JANE(OVFLOW),DISP=(,KEEP),UNIT=2314, I I II IL _________________________________________________________________ I I VOLUME=SER==AB0004, SPACE=: (CYL, 10) ,DCB=DSORG=ISU JI
The following DD statement is used to retrieve the data set. Note that the volumes are requested in the same order they were specified. Also, the same number of units as there are volumes are requested through parallel mounting. DSORG=IS must be coded when retrieving the data set. (ISU can only be coded when creating the data set.)
r-----------------------------------------------------------------,
I IIDD4 DD DSNAME=JANE,DISP=OLD,UNIT=(2314,P} I II VOLUME=SER=(AB0001,AB0002,AB0003,AB0004),DCB=DSORG=IS JI IL __________________________________________________________________
Appendix A:
Indexed Sequential Data Sets
353
The following DD statements must be coded to overwrite the data set. Note that the DISP and DCB parameters were changed and that the SPACE parameter was omitted. The data set is kept.
r-----------------------------------------------------------------,
I I I I I
//NEWDS DD DSNAME=JAN£(INDEX),DISP=OLD,UNIT=2314, I // VOLUME=C')ER=AB0001, DCB= (DSORG=-ISU, MACkF=Pt-'l) I // DD DSNAME=JANE(PRIME) r DISP=OLD,UNIT=(2314,2), I // VOLUME=!:3ER=(AB0002,AB0003) ,DCB=*.NEWDS I // DD DSNAME=~JANE{OVFLOW) ,DISP=OLD, UNIT=2314, I Il _____________________________________________________________________ // VOLUlvlE==SER=AB0004,DCB=*.NEWDS I .J
3.
In the following example, an indexed sequential data set without an overflow area is defined. 'I'he volumes for the index and prime areas use different types of devices. Nonspecific requests for private volumes are madew requests two volumes.
The prime area
r-----------------------------------------------------------------,
I //DSETl DD DSNAME=RAY(INDEX) ,LISP=(,KEEP),UNIT=2301, I I // VOLUME=PRIVATE,3PACE=(CYL,2), I I // DCB=(DSORG=IS,OPTCD=M,NTM=50) I I // DD DSNAME=RAY(PRIME),DISP=(,KEEP),UNIT=(2311,2), I I // VOLUME=(PRIVATE",2),SPACE=(CYL,15), I IL _________________________________________________________________ // DCB=*.DSETI JI Two DD statements must be used to retrieve the data set because the index and prime areas use different types of device. Assume that the system assigned volwne Rf'S100 to the index area and RFS10l and HFS102 to the prime area.
r-----------------------------------------------------------------,
I //INPUT DD DSNAME=RAY,DISP=OLD,UNIT=2301, I I // VOLUME= (PRIVATE, SER=RFS100) ,DCB=DS01] I I INotes:
I
,
Choose one for "code": AN, HN, PCAN, PCEiN, PN, QNC, QN, RN, TN, SN, XN, or YN.
i
I I I I
t----------t----------------------'--------------------,------,---------,----.,.~
'DUMMY I [DUMMY] I I I I ~ I INot~: positional parameter I IL _____________ .1. ______ .____ .L ______________________ ·__________________________,_________ ,_____,.J
II
I
372
~
Table 64.
Creating a Data Set on a System Output Device
r-------------T----------T--------------------------------------------------------------, I Parameter IParameter I Format I
I
Type
I
I
I
~-------------+----------+----------.----------------.------------------------------------~
I Location of I the Data set I I
ISYSOUT I I I
IFor systems with PCP: I SYSOUT=classname I IFor systems with MFT or MVT:
I I
I I
I
I
I
I SYSOUT=(classname [,program] [,form numbers]) I ,
I
INote:
I I I
I
I
.
"Classname" is a letter (A-Z> or a number (0-9)
I
I
I
I I
I I
I
I
~----------+-----------------------.---------------------------------------~
I I UNIT Isee Table 66. I ~-------------+----------+--.------------------------------------------------------------~ ISize of the I SPACE ISee Table 66. I I Data Set I I I ~-------------+----------+--------------------------------------------------------------~ I Data IDCB ISee Tables 7 and 8 for PCP, and Table 12 for MFT or MVT. I I I I I Attributes ~-------------+----------+--------------------------------------------------------------~ I special IOUTLIM IOUTLIM=number I I I I I Processing I Option I INote: For systems with MFT or MVT that have the System I Facilities option. IL _____________ I __________ IManagement ______________________________________________________________ JI ~
~
Appendix D:
Summary of the DD statement
313
Table 65.
creating a Data Set on a Magnetic Tape (Part 1 of 2)
r------------T-----------T----------------------------------------------------------'----'-,
I Parameter I Type
I Parameter I I I
Format
I I
~-------------+-.---------+----------------------------------------------------------,----,,-~
Data Set Information
DSNAME and DISP
ITemporary_= for the duration of the job: I I I DSNAME={&&name},DISP=(NEW,PASS,DELETE) I &name
I
ITempora~ ~
for duration of the job step:
I I DSNAME={&&name} ,DISP=(NEW,DELETE,DELETE) I &name
I
INontemp2ra~cataloged:
I
IDSNAME=dsname.DISP=(~E~'CATLG['CATLG ] )
I
,DELETE ,KEEP
I I
I Nontemporar.L-=-_kep1=::
I
IDSNAME=dsname.DISP=(~EW'KEEP['KEEP J) I ,DELETE I ,CATLG
I
~
INonte.!!!£Qra~_~~ber_g~neration data group
~
I
II
I DSNAME=groupname (+number) ,DISP= (NEW ,CATLG
Ii
I
r, CATLG~ J) L,DELETE
~-------------+----------+--------------------------------------------------------------~ ~ I I unit address I
I Location I the Data I I I I
of Set
I UNIT I I
I I I
I I I UN IT= ( I I I
2400 2400-1 2400- 2 2400-3 2400-4
[, uni tcountJ "p [ , DEFER] )
I I I
I I
I
group name I ~----------+--------------------------------------------------------------i IVOLU!vlE INon~ecit_~~ __!"~Jl\,:1~~~__= __ one scratch volume (temporary data :set)::
I I I
I I I
I
I
I I
I Nonspec;i,fi~_r~1.,!es~_IT10re than one scrat.ch volumes , (tel!!por9,~__ ~~ t~se~l :
I ,
IVOLUME=(",volcount)
,
I I I
I
,Omit
,
I
,
I
l~onspec.!K~s=_.-.!"~q~~_~_.:t_=_private volume
I I I I I I I I
I
I I
(temporary data set):
IVOLUHE=(PRIVATE[,.,volcount)
I
,~o!!~~_gifi~__ ~~_1l_~~J::__-:._p!"_~~at~~91ume
(nontemporary data S(:!t):
I ,VOLUME= ( [PRIVATE, RETAIN]
[«, volcount] )
I , I I Specific __!".~~~es:t __--=---2!:..!vate , VOLUME= ([PRIVATE, RETAIN
J'
volume
(re uest b se:r:ial number): SBR= (seria 1 , ••• ) )
« volcount,
IL_____________ LI __________I , , _____________________________________________________________ J ~
374
Table 65.
Creating a Data set on a Magnetic Tape (Part 2
of 2>
r-------------T-~--------T----------------------------------------------------------------,
I Parameter 'Type
IParameter I I
I I
Format
I
t-------------+----------+---------------------------------------------------------------~
Location of I VOLUME the Date set ,(cont.) (cont. > I
I
,Specific I I
~eguest
- private volumes used by other data set):
I
I I I I
I
I
IVOLUME= ( l:PRIVATE. RETAIN] [, • volcount, ]
I
I . ,
II I I
I
II I
I II _ Idsname *. ddname REF- *.stepname.ddname I *.stepname.procstepname.ddname I
I
~----------+------------------------------~--------------------------------~
II
LABEL
I I
I
I
I LABEL= ( [SE~quenCe] I
I I
[1tL] ,NSL [, PASSWORD] [, IN ] , NL, ,OUT ,BLP
[r1
[EXPDT:=YYddd]) RETPD=nnnn
,
I I
I
I
I
t-------------+----------+--------------------------------------------------------------~
I Data I Attributes I
I
I I
I
IDCB I I I I I
,
I[DCB=]
I special I SEP or I [SEP= (ddname, ••• I I Processing I AFF I AFF=ddname I I Options t----------t-------------------·------------------------------------------~ I I DUMMY I [DUMMY] I I I I I IL ____________ .1.I __________.l.I Note: positional parameter ________________________________________________________________ JI
Appendix D:
Summary of the DD statement
375
Table 66.
Creating a Data set on Direct Access Devices CPart 1 of 3)
r---------·----T----------T--------------------------------------------------------.-----.-,
I Parameter 'Parameter I I Type' I
Format
,
,
~-------------+----------+--------------------------------------------------------------~
Data set Information
DSNAME and DISP
ITemEQrary_~
for the duration of the job:
I
I I
&&name IDSNAME= &name ,DISP=CNEW,PASS,DELETE» I &&name(membername) I &nameCmembername)
,
,ITemporary
- for the duration of the
I
&&name
,
&&name(membername) &name(membername)
I DSNAME= &name I I
jOb~:
,DISP=(NEW,DELETE,DELETE)
Nontemporary - cataloged:
DSNAME={~:~::: Cmembername) t,DISP= CNEW, CATLG
I
,I
dsnameCmembername)f
I I I I I I I I I I I I
[, CP1TLG ]) ,DELETE ,KEEP
Nontemporary - kept: DSNAME={dsname },DISP=CNEW,KEEP[,KEEP ]) dsnarneCmembername) ,DELETE ,CATLG Nontemporary - member generation data group: DSNAME=grOUpnamec+number),DISP=CNEW,CATLG[,CATLG]) L,DELETE
1----------·----+-·----------+--------------------------------------------------------.-----,-~
Location of 'UNIT the Data Set , , ,
I , , ,
, tunit address , 2301 , 2302 , 2302 [, uni tcount] :UNIT=Cl~~~i :P [,SEP=Cddname, ••• )]) , 2314 2321 , group name I
, , , ,
I , , ,
~-.----------+--------------------------------------------------------------,-~ VOLUME '~onspecific ~uest - one public volume:
I
,,Omit INonspecific request - more than one public volumes:
I
,IVOLUME=C",volcount) INonspecific request - private volume:
I I
VOLUME= (PRIVATE [: RETAIN] [ .. volcount 1.)
I
,,specific
request -
pub~ic
volume (request by serial number):
IL ____________ .1.__________ ..1.,VOLUME=([."volcount,]SER=(serial, ••• » ______________________________________________________________ "
376
Table 66.
Creating a Data Set on Direct Access Devices (Part 2 of 3)
r-------------T----------T---------------------------------------------------------------, I Parameter I Parameter I Format J
I
Type I I I ~-------------+----------+---------------------------------------------------------------~ Location of VOLUME ISpecific request - public volume (volumes used by other the Data set (cont.) Idata set)~ (cont.) I
I I
J VOLUME=(
I I I
dsname [. , , volcount,] REF:: *.ddname *.stepname.ddname *.stepname.procstepname.ddname
ISpecific request - private volume (request by serial number):
I
IVOLUME=(PRIVATE[~ETAIN][ •• VOlcount.]SER=(Serial, ••• )
I
ISpecific request - private volume (volumes used by other Idata set):
II
VOLUME= (PRIVATE [;RETAIN] [ , ,volcount,J
I I I I
dsname REF= *.ddname *.stepname.ddname I *.stepname.procstepname.ddname ~----------+----------.----------------.------------------------------------~
II LABEL
II rLLABEL= ( [:"~~L] [, PASSWORD] [,,OUT IN 1 J
I
[I] [:EXPDT=YYddd])
RETPD=nnnn
J
~-------------+----------+--------------------------~-----------------------------------~ ISize of SPACE IThe system assigns tracks: the Data Set I IISPACE~( {TRK (choose one) CYL .(P:Limar y quantity r.secondary qUantity] } I block length ~ ['CONTIG] I I [.directorYl)~RLSEJ :~G [.ROUND]) J J J
IRequesting specific tracks:
I
ISPACE=(ABSTR,(primary quantity,address[,directory]» ~----------+--------------------------------------------------------------~ SPLIT Units of cylinders: • First data set SPLIT=(n,CYL,(primary quantity [,secondary quantity]» • Subsequent data sets SPLIT=n units of blocks: • First data set SPLIT=(%,blocklength, (primary quantity [ • secondary quantity]» • Subsequent data sets SPLIT=% L _____________ L-_________ J. ______________________________________________________________ _
Appendix
Appendix D:
summary of the DD statement
311
Table 66.
Creat:ing a Data Set on Direct Access Devices (Part 3 of 3>
r-------------T----------T--------------------------------------------------------------,
I Parameter Type
I
IParameter I
I
Format
I
I
I
~-------------+----------+--------------------------------------------------------------~
ISize of Ithe Data set I (choose one> I (cant.>
SUBALLOC
IReserved area: I
I I I
I
: SPACE= (' ~~~ }, (primary quantity) , ,CONTIG) I tblocklength
I
I ISuballocaed data sets:
I i
{TRK ISUBALLOC=( CYL length} ,C pr imary quanti ty I block I
~ secondary
quanti
t~1
[,directory]),{~~~~~:me,ddname
: I
stepname.procstepname .. ddname
II
II
II
I I I I I I
I I
dsname I I DCB=( *.ddname I * . s tepname • ddname I *stepname.procstepname.ddname I
}>
]1I
~-------------+----------+----------------------------------------------.----------.-----~
Data Attributes
DCB
I I
I I
[DCB= (list of attributes> [,list of attributes]>
INote: See Tables 12, 13, and 14 for attributes
I I
I
I
I I
~-------------+----------+--------------------------------------------------------------~
I [SEP= (ddname, ••• >]
Ispecial
I SEP or IAFF
I Options I
~.----------+----------------------------------------------.---------------,-~
I Processing
I DUMMY
I AFF=ddname I [DUMMY]
I
I
1
I I I I IL _____________ .LI __________ .LINote: positional parameter ______________________________________________ ._______________,_JI
378
Table 67.
Retrieving an Existing Data Set From an unit Record Device (Card Reader or Paper Tape Reader)
r-------------T----------T--------'----------------'-------------------------------------,
I Parameter IParameter I Format I I Type I I I ~-------------+----------+--------------------------------------------------------------~ I Location of I UNIT I uni t address I Ithe Data Set I I 1442 I I I I UNIT= 2520 I I I I 2540 I I I I 2671 I I I I group name I ~-------------+----------+-------------------------------------------------------------~ I Data IDCB I[DCB=(list of attributes) I I Attributes I I I I I I I I I I {*.ddname } I I I I DCB=( *.ddname.stepname [,list of attributes» I I I I *.ddname.procstepname.ddname I I I I I INote: See Tables 16 and 17 for attributes I I I ~-------------+----------+-----,----.----------------.-------------------------------------~ I special IDUMMY I [DUMMY) I I processing I I I I __________ .LI Note: Posi tional pararnet.er IL Option _____________ .L _________ .________________ ._____________________________________ JI
1
Appendix D:
Summary of the DD statement
379
Table 68.
Retrieving a Data set From the Input Stream
r-------------T----------T--------------------------------------------------------- -----'-,
! parameter i Type
I Parameter I I I
I I
Format
~------------+----------+---------------------------------------------------------------,-~
ILocation of I * or Ithe Data Set IDATA
I{*} I DATA
I
I
~------------+---------+,--------------------------------------------------------------,-~
I Data
I
IDCB
I [DCB=([BLKSIZE=number of bytes][,] [BUFNO=number of buffers]>] I I I
Attributes I ___________ .L_______________________________________________________________,.J I. _________ ,____ .L
380
_ _ -"'-
_ _ _ _~ _ _ _ _ _ _ _ _ _ _ _ _ _ _b _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
------------
- - - -------- --------
. - - -
Table 69.
Retrieving a Passed Data Set (Magnetic Tape or Direct Access)
r-------------T----------T--------------------------------------------------------------, I parameter I Parameter , Format I I
Type
I
I
I
~-------------+----------+----------,----------------------------------------------------~
Data Set Information
DSNAME
I Retrieving by name: I
I
I I IDSNAME= I I I
I
dsname dsname(membername) &&name &&name(membername) &name &name (membername)
I
IMaking backward reference:
I
IDSNAME={::~~~~:me.ddname}
I I
I
*~stepname.procstepname.ddname
I I I I I I I I I I I
II
~----------+---------------------------------------------------------------~
DISP
i::::~::L:~:A::t[~~;;;T:]o)a subsequent step.
I
,CATLG ,KEEP
I I
ILast time a passed temporary data set is used in job:
I
I DISP= (OLD., DELETE« DELETE)
I
ILast time a passed nontemporary data set is used in job:
!DISP= (OLD [: ~~~iTEJ ~~iTEJ I
I
,CATLG
,
[: ,CATLG
)
~-------------+---------+---------.----------------.------------------------------------~
ILocation of IUNIT Ithe Data Set I
!
I [UNIT=(,unitcount)] I
I I
f:::::-----rl:::::=-I~~-]-----------·-------------------------------------1
1
~-------------+----------+---------,----------------,------------------------------------~
I Data I Attributes
I DCB I
I [DCB=nist of attributes) I
I
I
I
I I
I
I*·stepname.procstepname.ddname
I
I
I
I
~
~
I
I
I I I I
I
I
I I
{* . ddname
I DCB= *. stepname. ddname
}
I I INote: See Tables 18, 19, 20, and 21 for attributes I ~-------------+----------+-------------------------------------------------------------~ Ispecial I DUMMY I [DUMMY] I I processing I I I Il Option Posi tional parameter _____________ I __________ I Note: ______________________________________________________________ JI
Appendix D:
Summary of the DD statement
381
'rable 70.
Retrieving a cataloged Data Set (Magnetic Tape or Direct Access)
r-------------T-----------T-----------------------------------------------'---------------,
,parameter ,Parameter Type'
I
I I
I
Format
I
I
'
~-------------t----------t-------------------------------------------------------,-----,-~
~Data Set !Information
I I I
I DSNAME , I
I
ldsname IDSNAME= dsname(membername) I groupname(nurnber)
I I
~----------t-------------------------------------------------------.-----,.~
, DISP
I
I
,
I
, DISP= ({OLD} [, UNCATLG] [, UNCATLG]) SHR ,DELETE ,DELETE
, I
,
I
I
,
-------------t-,---------t----------------------------------------------------------.-----,.~
Location of the Data Set
I UNIT I I
I I
I Requesting units: I I UNIT=(,[unitcount][,DEFER]) I P
, , I
I
I I
I
I UniLaffil!J-_ty:
I
I
I
I
I
I [UNIT=AFF=ddname]
I
~----------t--------------------------------------------------------------~ I VOLUME I
I VOLUME= ( [PRIVATE r,RETAIN] [, sequence]) I
I I
I LABEL I
I[ I LABEL=(
I I
I I
,
1
L,
~----------t--------------------------------------------------------------~ , SUL ,NL > ,NSL ,BLP
I
, ,
1
~-------------t-----------+------------------------------------------------.---------------~
IData I Attributes I I I I
IDCB I I I I I
I
I I
I
I [DCB=(list of attributes)
I
I
I
I dsname *.ddname I I DCB=( *.stepname,ddname [ , l i s t of attributes]) I *.stepname.procstepname.ddname
I I , ,
I
,
INot~:
See Tables 18, 19, 20, and 21 for attribut:es
I
~-------------t----------t-----------------------------------------------------------.----~
I Special ,Processing I Options I
I SEP or IAFF
I [SEP= (ddname, ••• I AFF=ddname
>]
~--·--------t----------------------------------------------------------.-
,DUMMY, [ DUMMY 1
I ,
. . -- ~
,
I I , , IL _____________ .LI __._,_______ J.'Not~: positional parameter I __________________________________________________________ ,____ ,J
382
Table 71.
Retrieving a Kept Data set (Magnetic Tape or Direct Access)
r-----------·--T----------T---------·---------------.-------------------------------------,
I
I Parameter Type
I Paramet.er I I I
IData Set
I DSNAME
Format
I I
~-------------+----------+-------------------------------------------------------------~
I Information I I ,
I
I DSNAME={dsname } dsname(rnembername)
I I
I
~----------+--------------------------------------------------------------~
IDISP
I
I
I
I
I
J
I [,KEEP [,KEEP ] IDISP=({OLD} ,CATLG ,CATLG ) I SHR ,DELETE ,DELETE
I
I
I
I
f
' ~-------------+----------+-----------------------------.--------------------------------~ Location of 'UNIT IRequesting units: I the Data Set I
I
,
I
I
I
, , ,
,~unitaddress~ [,UnitcountJ ,UNIT=( devicetype ',P [,DEFER) , groupname
' , ,
I
I
,
I
IUnit affinity:
,
I I
I
I
I UNIT=AFF=ddname
I
~----------+--.--------.--------------------------------------------------~
I VOLUME
IVOLUME=([PRIVATE] [,RETAIN]SER=(Serial, ••• »
,
I ' ,
,
r~~~-----r-[::::::~~:::::::::;-[;~~~-]~J------------------------------------1
",NSL I ' ,BLP
,
1
I
~-------------+----------+-------------------------------------------------------------~
I Data I Attributes
I
I I I
I
I
IDCB
I I
'rDCB=(list of attributes} I I dsname I DCB=( *.ddname I *.stepname.ddname I *.stepname.procstepname.ddname
I
I
I I I
I
INote:
~list
of attributes]}
See Tables 18, 19, 20, and 21 for attributes
I I , I
I
I
I
I
~-------------+----------+-------------------------.-------------------------------------~
I Special
I Processing I Options
, I
I SEP or I AFF
I [SEP= (ddname, ••• I AFF=ddname
>]
I
I
~----------+----------------------------------------------------------~
I DUMMY I
I [DUMMY) I
,
I
I _____________ .LI __________ J.INote: positional paramet.er L _______________________________________________________________ JI
Appendix D:
Summary of the DD statement
383
Table 72.
Extending a Passed Data Set (Magnetic Tape or Lirect Access)
r-------------T----------T--------------------------------------------------------------,
I Parameter i
Type
IParameter I I I
I
Format
I
~-------------+----------+--------------------------------------------------------------i Ii Data Set ! Information
I DSNM1E ,
I I
I , I I I I I
, I
I I
I I
I Retrieving by name:
I I
I I I
I
dsname I dsname(membername) IDSNAME= &&name I &&name(membername) I &name I &name(membername)
I I Mat_i!2~~~~ck~~rd I
!
ref~:r::ence:
I * . ddname IDSNAME= *.stepname.ddname I *.stepname.procstepname.ddnarne
~----------+--------------------------------------------------------------i
'DISP
:
I passing
tl!~
data set to a supsequent step:
iDISP~(~OD.PASS[:~~~~TEl)
I
,CATALG , KEEP
I
I
IJ-a§.!:._time
~_~sed
temporary data set is used in job:
I
'DISP=(MOD,DELET~,DELETE
,
Ila§.t time a _passed non temporary data set is used in job:
!I DISP~ (MOD[: ~~~iTEJ [:~~i~TEJ ) ,CATLG
I
,CA~LG
,
~-------------+----------+--------------------------------------------------------------i
'l..tocation of I UNIT Ithe Data Set I
I
I [UNIT= ( [, uni tcount] [, DEFER]] I ,
I
I
~----------+--------------------------------------------------------------i
,
~----------+--------------------------------------------------------------i
I
IVOLU~E
I [VOLUME=(",volcount)]
I ,
,LABEL ,
'[ I LABEL= (
I ,
, ,
I I
I
1
,SUL} , NL ,>, ,NSL ,BLP
J
I I
I
I I
]
~-------------+----------+--------------------------------------------------------------i
I Size of the
I SPACE
IOata s e t , , ,
I[ I SPACb= ( I
'fHK CYL (1, secondary quantity» blocklength
I I
1
I
~-------------+----------+--------------------------------------------------------------~
I [DCB=(list of attributes)
Ivata iAttributes
IDeB I
I
I I
I I
, I
I I
*.ddname , DCB= *. stepnaLle. ddname [ , list of a -ttributeS] I *. stepname. procstepnarr,e. ddname
I I
I I
INot~::
I ,
I
I
I I
, I
I I I I
See Tables 18, 19, and 21 lor attributes ~-------------+----------t--------------------------------------------------------------~
I Special
,DUMMY I [DUh~Yl , II-rocessin.g I I I ,Option positional parameter l _____________ L, __________ '!:!2!:.~: ______________________________________________________________ JI ~
384
Table 73.
Extending a cataloged Data Set (Magnetic Tape or Direct Access)
r-------------T----------T--------------------------------------------------------------, I parameter I Parameter I Format I
I
Type I I I ~-------------+----------+--------------------------~-----------------------------------~ I Data Set I DSNAME I {dsname} I ,Information I IDSNAME= dsname(membername) I ~----------+----------,----------------------------------------------------~ I, I, DISP I'DISP=(MOD [",,DELETE UNCATLG] UNCATLG] II ,DELETE > , , , ,CATLG ,CATLG I
r
,
I
,
,
_,
I
~-------------+----------+----------.----------------------------------------------------~ Location of UNIT IReguesting- units: I the Data Set I I
![UNIT~
(•
[~nitCoWlt] (. DEFER] ) ]
i
L
I
I! I
I
I
,I
,I
, [UNIT=AFF=:ddname]
,
unit affinity:
----------+----------------------------------------------------------------~
'VOLUME
"
,VOLUME= ( [PRIVATE [,RETAIN]
I[
,
r, sequence#] [ , volcount] >
I
L,
,
~----------+----------------------------------------------------------------~ 'LABEL ,SUL ] , I , LABEL=( ,NL > I I I wNSL , , I "BLP I ~-------------+----------+----------------------------------------------------------------~ ,size of the ,[ ,Data Set I'SPACE t SPACE=( lTRK CYL , (1, secondary quantity» , t , , block length ,
I
J
'
~-------------+----------+--------------------------------------------------------------~
, Data ,Attributes
I I, I , , t
, DCB
I , ,I , I , I
, [DCB= (list of attributes>
, I
*.ddname It DCB=( ldsname , *. stepname. ddname
t
t
]
I
[,list of attributes])
*.stepname.procstepname.ddname
,
I I ,I I I ,
,Note: See Tables 18, 19, and 21 for attributes , ~-------------+----------+---------"-----------------------------------------------------~ I special ,SEP or t [SEP=(ddname, .•• , Process ing , AFF , AFF=ddname I ~----------+---------"---------------"-------------------------------------~ I Options I I DUMMY I [DUMMY] I
>]
,
I I , I ,L _____________ 4I __________ L,Note: Posi tional parameter _________________________ ._____________________________________ JI
.. Appendix D:
Summary of the DD statement
385
~able
74.
Extending a Kept Data set (Magnetic Tape or Direct Access)
r-------------T----------T--------------------------------------------------------------,
I Parameter I Type
IParameter I
I
I I
Format
I
~-------------+----------+--------------------------------------------------------------i I DSNAME IDSNfu~E={dsname} I
IData set I Information
I
I
~----------+--------------------------------------------------------------i
I
I I I
I L'I~3P I I I
I
dsname(membername)
I
IDISP=(~OD
I
[LKE~~ ,CATLG
1
,DELETE ,
I
[..rlmt~~ ,CATLG
I
]
I I I I
)
,DELETE
~-------------+----------+--------------------------------------------------------------i
l Location of
I UNIT jthe Data Set I
! I I I I I I I I
I
i I
I Reg~~,~1:j:~