GC26 4065 1_MVS_370_Utilities_Data_Facility_Product_Rel_1.1_oct83 1 MVS 370 Utilities Data Facility Product Rel 1.1 Oct83
GC26-4065-1_MVS_370_Utilities_Data_Facility_Product_Rel_1.1_oct83 GC26-4065-1_MVS_370_Utilities_Data_Facility_Product_Rel_1.1_oct83
User Manual: GC26-4065-1_MVS_370_Utilities_Data_Facility_Product_Rel_1.1_oct83
Open the PDF directly: View PDF .
Page Count: 496
Download | ![]() |
Open PDF In Browser | View PDF |
GC26-4065-1 File No. S370-32 \,., J Program Product MVS/370 Utilities Data Facility Product 5685-295 Release 1.1 ------------------- ------,~ TNL GN26-8133 (30 Mar 84) to GC26-4065-1 Second Edition (October 1983) This edition, as amended by technical newsletter GN26-8133, applies to Release 1.1 of MVS/370 Data Facility Product, Program Product 5665-295, and to any subsequent releases until otherwise indicated in new editions or technical newsletters. The changes for this edition are summarized under "Summary of Amendments" following the preface. Specific changes are indicated by a vertical bar to the left of the change. These bars will be deleted at any subsequent republication of the page affected. Editorial changes that have no technical significance are not noted. Changes are made periodically to this publication; before using this publication in connection with the operation of IBM systems, consult the latest IBM System/370 and 4300 Processors Bibliography, GC20-0001, for the editions that are applicable and current. References in this pUblication to IBM products, programs, or services do not imply that IBM intends to make these available in all countries in which IBM operates. Any reference to an IBM program product in this publication is not intended to state or imply that only IBM's program product may be used. Any functionally equivalent program may be used instead. Publications are not stocked at the address given below; requests for IBM publications should be made to your IBM representative or to the IBM branch office serving your locality. A form for readers' comments is provided at the back of this publication. If the form has been removed, comments may be addressed to IBM· Corporation, P.O. Box 50020, Programming Publishing, San Jose, California, U.S.A. 95150. IBM may use or distribute whatever information you supply in any way it believes appropriate without incurring any obligation to you. e Copyright International Business Machines Corporation 1983 PREFACE This publication describes how to use the MVS/370 Data Facility Product (MVS/370) utility programs to manipulate system and user data and data sets. ORGANIZATION This publication contains the following major parts: • "Introduction" summarizes the utility programs and information on the differences among system, data set, and independent utility programs. The introduction contains basic information about how the programs are executed and about the utility control statements used to specify program functions. New or infrequent users of the utility programs should give particular attention to the introduction. • "Guide to Utility Program Functions" contains a table, arranged in alphabetic order, of utility program functions and the programs that perform them. This table enables you to find the program that can do what you need to have done. • "Invoking Utility Programs from a Problem Program" contains a description of the macro instructions used to invoke a utility program from a problem program rather than executing the utility program by job control statements or by a procedure in the procedure library. This section should be read only if you plan to invoke a utility program from a problem program. • The remainder of the book contains individual chapters for each utility program arranged in alphabetic order. For a discussion of the organization of these chapters, see "Organization of Program Descriptions" on page iv. • Appendix A, "Exit Routine Linkage" contains information about linking to and returning from optional user-supplied exit routines. This appendix should be read only if you plan to code or use an exit routine. If you are coding an exit routine, this appendix provides linkage conventions, descriptions of parameter lists, and return codes. If you are using an existing exit routine, you may be interested in the meaning of return codes from the exit routine. • Appendix B, "DD Statements for Defining Mountable Devices" contains a review of how to define mountable volumes to ensure that no one else has access to them. For a definitive explanation of this subject, see the publication OS/VS2 MVS JCL. • Appendix C, "Processing User Labels" describes the user-label processing that can be performed by IEBGENER, IEBCOMPR, IEBPTPCH, IEHMOVE, and IEBUPDTE. This appendix should be read only if you plan to use a utility program for processing user labels. Preface iii ORGANIZATION OF PROGRAM DESCRIPTIONS To enable you to find information more easily, program descriptions are all organized, as much as possible, in the same way. Most programs are discussed according to the following pattern: • Introduction to and description of the functions that can be performed by the program. This description typically includes an overview of the program's use, definitions of terms, illustrations, etc. • Functions supported by the utility and the purpose of each function. • Input and output (including return codes) used and produced by the program. • Control of the program through job control statements and utility control statements. Explanations of utility control statement parameters are presented in alphabetic order in tabular format, showing applicable control statements, syntax, and a description of the parameters. Any general information, restrictions, and relationships of a given utility control statement to other control statements are described in the sections concerning the statements or in the section for restrictions. • Examples of using the program, including the job control statements and utility control statements. PREREQUISITE KNOWLEDGE In order to use this book efficiently, you should be familiar the foiiowing; wi~h • Job control language • Data management • Virtual storage management REQUIRED PUBLICATIONS You should be familiar with the information presented in the following publications: iv • MVS/370 Utilities Messages contains a complete listing and explanation of the messages and codes issued by MVS/370 utility programs. • OS/VS2 MVS JCL contains a description of the use and coding of the job control language. • MVS/370 Data Management Services describes the input/output facilities of the operating system. It contains information on record formats, data set organization, access methods, data set disposition, space allocation, and generation data sets. • MVS/370 Data Management Macro Instructions contains contains a description of the WRITE macro instruction; it also contains the format and contents of the DCB. • OS/VS2 MVS System Programming Library: Supervisor Services and Macro Instructions contains contains information on how to use the services of the supervisor. Among the services of the supervisor are program management, task creation and management, and virtual storage management. MVS/370 Utilities TNL GN26-8133 (30 Mar 84) to GC26-4065-1 PREFACE ) This publication describes how to use the MVS/370 Data Facility Product (MVS/370) utility programs to manipulate system and user data and data sets. ORGANIZATION This pUblication contains the following major parts' • "Introduction" summarizes the utility programs and information on the differences among system, data set, and independent utility programs. The introduction contains basic information about how the programs are executed and about the utility control statements used to specify program functions. New or infrequent users of the utility programs should give particular attention to the introduction. • "Guide to Utility Program Functions" contains a table, arranged in alphabetic order, of utility program functions and the programs that perform them. This table enables you to find the program that can do what you need to have done. • "Invoking Utility Programs from a Problem Program" contains a description of the macro instructions used to invoke a utility program from a problem program rather than executing the utility program by job control statements or by a procedure in the procedure library. This section should be read only if you plan to invoke a utility program from a problem program. • .The remainder of the book contains individual chapters for each utility program arranged in alphabetic order. For a discussion of the organization of these chapters, see "Organization of ,Program Descriptions" on page iv. • Appendix A, "Exi~ Routine linkage" contains information about linking to and returning from optional user-supplied exit routines. This appendix should be read only if you plan to code or use an exit routine. If you are coding an exit routine, this appendix provides linkage conventions, descriptions of parameter lists, and return codes. If you are using an existing exit routine, you may be interested in the meaning of return codes from the exit routine. • Appendix B, "DD Statements for Defining Mountable Devices" contains a review of how to define mountable volumes to ensure' that no one else has access to them. For a definitive explanation of this subject, see the pUblication OS/VS2 MVS JCL. • Appendix C, "Processing User Labels" describes the user-label processing that can be performed by IEBGENER, IEBCOMPR, IEBPTPCH, IEHMOVE, and IEBUPDTE. This appendix should be read only if you plan to use a utility program for processing user labels. ) Preface iii ORGANIZATION OF PROGRAM DESCRIPTIONS To enable you to find information more easily, program descriptions are all organized, as much as possible, in the sa•• way. Most programs are discussed according to the following pattern' • Introduction to and description of the functions that can b. performed by the program. This description typically includes an overview of the program's use, definitions of terms, illustrations, etc. • Functions supported by the utility and the purpose of .ach function. • Input and output (including return codes> used ~nd produced by the program. • Control of the program through job control statements and utility control statements.. Explanations of utility control statement parameters are presented in alphabetic order in tabular format, showing applicable control statements, . syntax, and a description of the parameters. Any general information, restrictions, and relationships of a given utility control statement to other control statements are described in the sections concerning the statements or in the section for restrictions. • Examples of using the program, includ1ng the job control statements and utility control statements. PREREQUISITE KNOWLEDGE In order to use this book efficiently, you should be familiar with the following' • Job control language • Data management • Virtual storage management REQUIRED PUBLICATIONS You should be familiar with the information presented in the following publicationsl iv • MVS/370 Utilities Messages contains a complete listing and explanation of the messages and codes issued by MVS/370 utility programs. • OS/VS2 MVS JCl contains a description of the use and coding of the job control language. • MVS/370 Data 'Management Services describes the input/output facilities of the operating system. It contains information on record formats, data set organization, access methods, data set disposition, space allocation, and generation data sets. • MVS/370 Data Management Macro Instructions contains a description of the WRITE macro instructionJ it also contains the format and contents of the DCB. • OS/VS2 MVS Supervisor Services and Macro Instructions contains information on how to use the services of the supervisor. Among the services of the supervisor are program management, task creation and management, and virtual storage management. MVS/370 Utilities TNL GN26-8133 (30 Mar 84) to GC26-4065-1 RELATED PUBLICATIONS Within the text, references are made to the publications listed in the table below. \ \ Short Title publication Title Catalog Users Guide ~VS/~70 Data Facility Data Set Services: User's Guida and Reference Dati Debugging Handbook OS/VS2 MVS S~stem frogramming librar~: Debugging Handbook, Volumes 1 through 3 GC28-1047 GC28-1048 GC28-1049 Device Support Facilities User's Guide and Reference Device User's FacilitiBI and Referen~g GC3S-0033 Linkage Editor and Loader ~VS/370 Linkage Editor !nd GC26-4061 Same IBM 3800 Printing Subs~sj;em Programmer's Guide GC26-3846 Same IBM 50 Magnetic Data Inscriber Comeonent Descrietion GA27-2725 Utilities Messages MVS/370 Utilities Message:! GC26-4068 JCL OS/VS2 MVS JCl GC28-0692 Data Management Macro Instructions MVS/370 Data Managemenj; ftlacro Instructions GC26-4057 Supervisor Services and Macro Instructions OS/VS2 MVS Sueervisor Services and Macro Instructions GC28-0683 Same Reference Manual for tbl IBM 3800 Printing Subs~stem GA26-1653 System Programming Library: Data Management MVS/370 GC26-4056 VSAM Users Guide MVS/370 VSAM Users Guidg Catalog User:l Order Numb.r ~y;dg Data Saj; User's Guidg aDd Facilit~ Servi~es: Referencg ~ueeort ~uide loader librar~: Programming Data Management S~stem GC26-4053 SC26-3949 GC26-4066 I J Preface v UTILITIES NOT IXPLAINID IN THIS BOOK There ara several specialized utilities not discussed in this book. The following list shows their names and functions. and indicates which book contains their explanation. vi Reference utility Function I DCAMS Allows users to define. manipulate, or delete VSAM data sets, define and manipUlate VSAM catalogs, and copy, print. or convert SAM and ISAM data sets to VSAM data sets. Device Support Facilities Used for the initialization and maintenance of DASD volumes. ~iUf!~r:~:~;:!oI' GC3S-0033 Data Facility Data Set Services Describes DASD utility functions such as dump/restore and reduction of free space fragmentation ~ i F D ::r:lc::~ ~:~t!: and B!flteDSCI, SC26-3949 Offline IBM 3800 Utility Describes the Offline IBM 3800 Utility program, used with the IBM 3800 Tape-to-Printing Subsystem Feature. Offlin! lin ~Igg Utility, S 20-9138 MVS/370 Utilities ~VS/~Zg ~lil!gS Guide, GC26- 053 "I"! U&.C. it! IY:~: TNL GN26-8133 (30 Mar 84) to GC26-4065-1 SUMMARY OF AnENpnENTS RELEAIE 1,1 UPPATE. nARCH 1984 NEW DEVICE SUPPORT • IBM 4248 Printer The FCB statement in IEBIMAGE can now be used to create forms control buffer modules in a form appropriate for use on the IBM 4248 Printer. Information to support the 4248 has been added to the IEBIMAGE chapter. • IBM 3262 Model 5 Printer Information to support the IBM 3262 Model 5 Printer has been added to the IEBIMAGE chapter. RELEASE 1,1, OCTOBER 1983 NEW DEVICE SUPPORT • IBM 4245 Printer Information to support the IBM 4245 Printer has been added to the IEBIMAGE chapter. • IBM 3800 Printing Subsystem Model 3 The IBM 3800 Printing Subsystem Model 3 is supported by IEBIMAGE in full function mode. NEW PROGRAMMING SUPPORT • IEBCOPY Enhancements IEBCOPY can now be used to alter and copy load modules. Information to support the altering and copying functions, including the new AlTERMOD and COPYMOD statements, has bean added to the IEBCOPY chapter. • IEHMOVE Enhancements When used to move or copy IEHMOVE now uses multiple performance. Information been added to the IEHMOVE sequential data sets on DASD, BSAM buffers to improve to support multiple buffers has chapter. Summary of Amendments vii TNL GN26-8133 (30 Mar 84) to GC26-4065-1 CQNTINI' Introduction ••••••••••••• • • • • • • • • • • System utility Programs ..•• Data Set Utility Programs .••. Independent Utility Programs DASD and Tape Device Support Control ...•..... Job Control Statements . Utility Control Statements ••••••••• Continuing Utility Control Statements Restrictions ..... Notational Conventions keyword=device=list .••. Installation Considerations Special Referencing Aids ......· ..... Guide to utility Program Functions Invoking utility Programs from a Problem Program LINK or ATTACH Macro Instruction LOAD Macro Instruction CALL Macro Instruction ICAPRTBL Program •••••••••••••• • • • • • • • Executing ICAPRTBL ..•. ••••. Input and Output ..•...•• Control ...•..... Utility Control Statements JOB Statement DFN Statement UCS Statement FCB Statement END Statement ICAPRTBL Examples ICAPRTBL Example 1 ICAPRTBL Example 2 ICAPRTBL Example 3 ICAPRTBL Example 4 ... IEBCOMPR Program • • • • • • • • • Input and Output Return Codes . . • • • • • • . • Control . . • • Job Control Statements ••••• Utility Control Statements •••. COMPARE Statement •.•.•.••• EXITS Statement ..•• • LABELS Statement . • • • • • . • IEBCOMPR Examples • • • . IEBCOMPR Example 1 • IEBCOMPR Example 2 . • • IEBCOMPR Example 3 IEBCOMPR Example 4 IEBCOMPR Example S IEBCOMPR Example 6 IEBCOMPR Example 7 IEBCOPY Program ) • • • • • .". • • • • • • • • • • • • • • . • . • • • • • • • 1 1 1 2 3 4 4 4 5 5 5 6 6 6 8 13 13 15 16 18 18 19 19 19 20 20 20 21 21 23 24 24 2S 2S 27 28 28 28 29 30 30 30 31 32 33 34 34 3S 36 36 37 Creating a Backup Copy • • • • •. •••••• Copying Data Sets .•.•.•••.••••• Copying or Loading Unloaded Data Sets ••.•• Selecting Members to be Copied, Unloaded, or Loaded Copying Members That Have Alias Names Replacing Identically Named Members Replacing Selected Members ...•••• Renaming Selected Members .•••••. Excluding Members from a COpy Operation Compressing a Data Set • • • • • • • • • • Merging Data Sets . • • • • • • • . ••••••••••••••••••••• 39 39 40 40 40 41 41 42 42 42 42 43 Contents ix Re-creating a Data Set •.••••• Altering Load Modules in Place •• Copying and Reblocking Load Modules Load Module Requirements • • • • • Inserting RLD Counts .•••••••• Input and Output . • • . Return Codes .... Control . . . • . . • • • Job Control Statements •..•.•••• PARM Information on the EXEC Statement SYSPRINT DD Statement • . • • anynamel and anyname2 DD Statements SYSIN DD Statement •...•.• IEBCOPY Unloaded Data Set Block Size ••••• Space Allocation • • • • • • • Restrictions .....• •••••••• Utility Control Statements ••••••••• COpy Statement . ALTERMOD Statement COPYMOD Statement SELECT Statement EXCLUDE Statement IEBCOPY Examples IEBCOPY Example 1 IEBCOPY Example 2 IEBCOPY Example 3 IEBCOPY Example 4 IEBCOPY Example 5 IEBCOPY Example 6 IEBCOPY Example 7 IEBCOPY Example 8 IEBCOPY Example 9 IEBCOPY Example 10 IEBCOPY Example 11 IEBCOPY Example 12 IEBCOPY Example 13 IEBCOPY Example 14 IEBCOPY Example 15 IEBCOPY Example 16 IEBCOPY Example 17 IEBCOPY Example 18 IEBDG Program ••••••••••••••••• • • • • • Types of Patterns . ...•. IBM-Supplied Patterns User-Specified Pictures .• Modification of Selected Fields Input and Output Return Codes ....•••• Control . . . . . • . . . . . • • Job Control Statements • • • . • • PARM Information on the EXEC Statement SYSPRINT DD Statement SYSIN DD Statement seqinset DD Statement parinset DD Statement seqout DD Statement parout DD Statement . Utility Control Statements DSD Statement FD Statement • CREATE Statement REPEAT Statement END Statement IEBDG Examples IEBDG Example 1 IEBDG Example 2 IEBDG Example 3 IEBDG Example 4 IEBDG Example 5 IEBDG Example 6 IEBDG Example 7 x MVS/370 Utilities 45 45 46 46 46 46 46 47 48 48 49 50 50 51 53 54 55 56 60 62 63 65 67 69 71 74 76 78 79 81 85 91 92 92 94 95 96 97 97 97 98 99 . . .. IEBEDIT Program 43 43 43 44 .. . • • • • • • • • • • • • • • • • • • • • 100 100 100 101 102 102 102 102 103 103 103 104 104 105 107 110 110 121 121 122 123 125 127 128 129 131 TNL GNZ6-8133 (30 Mar 84) to GC26-4065-1 Input and Output Return Codes .••• Control .• Job Control Statements • • • • utility Control Statement ••••• EDIT Statement . • • • IEBEDIT Examples IEBEDIT Example 1 IEBEDIT Example 2 IEBEDIT Example 3 IEBEDIT Example 4 IEBEDIT Example S IEBEDIT Example 6 131 131 132 132 133 133 135 136 136 137 138 139 139 JEBGENER Program 141 141 141 142 143 144 144 145 145 145 145 145 146 147 147 148 148 149 149 150 157 158 158 159 159 160 160 161 .162 163 165 •••••••••••••••••••• Creating a Backup Copy .•.•••.••••••••• Producing a Partitioned Data Set from Sequential Input Expanding a Partitioned Data Set ••••• •••• Producing an Edi ted Data Set •.•.••• •••• Reblocking or Changing Logical Record Length ••••• Input and Output • • • • . • • • • • • • • Return Codes .....• . • • • Control . . . . . Job Control Statements SYSPRINT DD Statement SYSUT1 DD Statement ..••..••••• SYSUT2 DD Statement •••..•••• SYSIN DD Statement .• • • • • Utility Control Statements .•••• GENERATE Statement • • • • EXITS Statement LABELS Statement MEMBER Statement RECORD Statement IEBGENER Examples IEBGENER Example 1 IEBGENER Example 2 IEBGENER Example 3 IEBGENER Example 4 IEBGENER Example S IEBGENER Example 6 IEBGENER Example 7 IEBGENER Example 8 IEBGENER Example 9 IEBGENER Example 10 ..... '\ / 166 JEBJMAGE Program •••••••••••••••••••• General Information . . • • • • • • • • • • • • • 166 166 Storage Requirements . • • • • • 166 For IEBIMAGE . . . • • • • • • • • For SYSl.IMAGELIB •...••.•••••••••• 167 Maintaining the SYS1.IMAGELIB Data Set •••• 168 169 General Module Structure .••• • • • • • Naming Conventions for Modules •••• .•• • • • 170 .........••• . • • • Using IEBIMAGE 170 Creating a Forms Control Buffer Module 170 171 3800 FCB Module Structure 171 4248 FCB Module Structure FCB Module Listing . . . • 172.1 Creating a COpy Modification Module •••• 173 COPYMOD Module Structure • • • • 173 COPYMOD Module Listing . • .. • ••••••• 174 Creating a Character Arrangement Table Module •••• 174 TABLE Module Structure ••••••••.•••••• 175 TABLE Module Listing • . • • • • • . . • • 176 Creating a Graphic Character Modification Module 178 GRAPHIC Module Structure • • • • • • • • • • 178 GRAPHIC Module Listing. •.•••••••••• 179 Creating a Library Character Set Module ••••••• 181 181 CHARSET Module Structure •••. • • • • 182 CHARSET Module Listing • • • • • • • 183 Input and Output . • • • . . • • • •• ••• • 183 Return Codes ...•. • • • • 184 Control . . . . Contents xi TNLGN26-8133 (30 Mar 84) to GC26-406S-1 Job Control Statements SYSPRINT DD Statement SYSUTI DD Statement SYSIN DD Statement •.•••. Utility Control Statements Operation Groups FCB Statement COPYMOD Statement TABLE Statement GRAPHIC Statement CHARSET Statement INCLUDE Statement NAME Statement OPTION Statement Using OVERRUN IEBIMAGE Examples •.•.••..•..••••••• Example 11 Building a New 3800 Forms Control Buffer Module ...... ............ . 3800 Modell. . . • . . . . . • . . • . • Example 21 Replacing a 3800 Forms Control Buffer Module 3800 Modell. . . . . . . . . • . • . • . • • Example 31 Replacing a 3800 Forms Control Buffer Module 3800 Modell. . . . . . . . . . . . . . . . . . • • Example 41 Building a New 3800 Forms Control Buffer 184 184 185 185 185 185 186 187 188 189 190 191 191 191 192 208.1 209 209 210 210 210 210 211 .......... . • . . . • . • 211 3800 Modell. . . . . . . . . . . . . . • . . • Example 51 Replacing the 3800 Forms Control Buffer 212 Module STD3 .... ..•......••.••. 212 3800 M o d e l l . . . . • . • . . • • • • • . Example 61 Building a New 3800 Forms Control Buffer 213 Module for Additional ISO Paper Sizes ..•••• 213 3800 Model 3 .............•••.••• 214 Example 6A: Building a 4248 Forms Control Buffer Module 214.1 Example 71 Building a New COpy Modification Module 214.1 3800 M o d e l l . . . . . . • . • • . . • . Example 81 Building a New COpy Modification Module From 215 an Existing Copy ..••....••..••• 215 3800 Model 3 ..........•..•••. Example 9: Adding a New Character to a Character 216 Arrangement Table Module ....••.•••. 216 3800 Model 3 ......••..•.••.••••• Example 101 Building a New Character Arrangement Table 216 Module From an Existing COpy .•..•.•••••• 216 3800 Model 3 ..........•.••..•••• Example 11: Building Graphic Characters in a Character 217 Arrangement Table Module •.......••.••• 217 3800 Modell ..•.........•..•.•.• Example 121 Deleting Graphic References From a Character 218 Arrangement Table Module ........•••• 218 3800 Model 3 ................ . Example 131 Listing the World Trade National Use 219 Graphics Graphic Character Modification Module 219 3800 Modell. . . . . . . . . . . . . . • • • • • • Example 141 Building a Graphic Character Modification 219 Module From the World Trade GRAFMOD ....•. 219 3800 Model 3 ..............•••••• Example 151 Building a New Graphic Character Modification Module and Modifying a Character 220 Arrangement Table to Use It ........•.••• 220 3800 Model 3 ................•.•• Example 161 Building a Graphic Character Modification 222 Module From Multiple Sources .. .....•..•• 222 3800 Modell. . . . . . . . . . . . . . • . • Example 171 Defining and Using a" Character in a Graphic 223 Character Modification Module .... ...••• 223 3800 Model 3 ...............••• 226 Example 18: Listing a Library Character Set Module 226 3800 Modell. . . . . . . . . . . . . • . . . • 226 Example 191 Building a Library Character Set Module 226 3800 Model 3 ....••........•.•..• Example 20: Building a Library Character Set Module and 227 Modifying a Character Arrangement Table to Use It 227 3800 Model 3 .......•..•.....•• Module xii MVS/370 Utilities TNL GN26-8133 (30 Mar 84) to GC26-4065-1 ) Example 21s Building a Library Character Set Module From Multiple Sources ..... . ..•...•••• 3800 Model I . . . • • . • • • • JEBJSAM Program • • • • • • • • • • • • • • • Copying an ISAM Data Set ... . • • . . • • • • Creating a Sequential Backup Copy • • • • Overriding DCB Control Information ....••• Creating an ISAM Data Set from an Unloaded Data Set Printing the Logical Records of an ISAM Data Set Input and Output . . . . Return Codes ............. . Control ............... . Job Control Statements . . . . . PARM Information on the EXEC Statement IEBISAM Examples ....... . IEBISAM Example I . . . . IEBISAM Example 2 IEBISAM Example 3 ... IEBISAM Example 4 '. IEBISAM Example 5 .. JEBPTPCH Program •• JEBTCRIN Program . . .................. Printing or Punching an Entire Data Set .••...•• Printing or Punching Selected Members . Printing or Punching Selected Records .•.••••• Printing or Punching a Partitioned Directory •.••• Printing or Punching an Edited Data Set Input and Output Return Codes Control Job Control Statements SYSPRINT DD Statement SYSUTI DD Statement SYSUT2 DD Statement SYSIN DD Statement .. Utility Control Statements ...•. PRINT Statement .......•. PUNCH Statement . . . . TITLE Statement EXITS Statement MEMBER Statement RECORD Statement LABELS Statement IEBPTPCH Examples IEBPTPCH Example I IEBPTPCH Example 2 IEBPTPCH Example 3 IEBPTPCH Example 4 IEBPTPCH Example 5 IEBPTPCH Example 6 IEBPTPCH Example 7 IEBPTPCH Example 8 IEBPTPCH Example 9 IEBPTPCH Example,IO 229 229 231 231 231 232 233 233 234 235 '235 235 236 237 238 238 239 239 240 241 241 241 242 242 242 242 242 243 243 244 244 244 244 244 245 246 246 246 247 247 248 258 258 259 260 260 261 262 263 264 264 266 MTDI Editing Criteria. . ..• MTDI Editing Restrictions ..•• Special Codes . . .. ....•• End-of-Cartridge . . . . ..•••••••• • Error Records . . . . • . • • • • • • • • Error Description Word (EDW) ..... •••••••• Sample Error Records . . •. ••••• Input and Output . . . . . .,. • • • • • Return Codes ...........••.•••• Control . . . . . . . . • • • • Job Control Statements SYSPRINT DD Statement SYSUTI DD Statement ......••••• SYSUT2 and SYSUT3 DD Statements SYSIN DD Statement Utility Control Statements TCRGEN Statement •••••••••••••••••••• 267 267 268 269 273 274 274 277 279 279 280 280 281 281 282 282 283 283 Contents xiii EXITS Statement IEBTCRIN Examples IEBTCRIN Example 1 IEBTCRIN Example 2 IEBUPDTE Program 283 290 290 291 •••••••••••••••••• • • 293 293 293 293 294 294 294 295 295 296 296 297 297 298 299 301 302 303 303 305 306 311 313 314 315 316 317 317 319 320 322 323 324 IEHATLAS Program • • • • • • • • • 325 •••••••••••••••••• • • 333 ......• Input and Output Return Codes Control .• . Job Control Statements . Utility Control Statements TRACK Statement . . . . VTOC Statement IEHATLAS Examples IEHATLAS Example 1 IEHATLAS Example 2 IEHATLAS Example 3 IEHATLAS Example 4 IEHINITT Program Placing a Standard Label Set on Magnetic Tape Input and Output ..•. . . • • Return Codes . • • . • • Control ..... . . • . • . • • • • • Job Control Statements • . . . . . • . • • • . PARM Information on ~he EXEC Statement SYSPRINT DD Statement . • • • • anyname DD Statement •.•. • • • . SYSIN DD Statement • • • • • Utility Control Statement •••.•••• INITT Statement ..•. • . • . IEHINITT Examples . . • . . . • • • • . • • • IEHINITT Example 1 . • • • • • • • . IEHINITT Example 2 . • • • • IEHINITT Example 3 . . • . . • • • • . • • • . ....•••.•••••••. IEHINITT Example 4 IEHINITT Example 5 . . • . . • • • • . • • • IEHINITT Example 6 . • • . • • • • • • IEHINITT Example 7 xiv 293 Creating and Updating Data Set Libraries Modifying an Existing Data Set Changing Data Set Organization Input and Output .... Return Codes .....•.. Control ........... . Job Control Statements . . . . . . • • . PARM Information on the EXEC Statement SYSPRINT DD Statement •.•...•• SYSUTI DD Statement . . . • . • • SYSUT2 DD Statement . . •• •••• SYSIN DD Statement .. . • . • . . • • Utility Control Statements ..•.•. Function Statement ...•• .• • • Function Restrictions • • • • • Detail Statement . • •. ...•••• Detail Restrictions • . • . • • • • • • Data Statement . • • • • LABEL Statement . . . . ALIAS Statement . • . . ENDUP Statement . . . . . • . IEBUPDTE Examples . . . • . . • • . IEBUPDTE Example 1 . . • . IEBUPDTE Example 2 . . . • . • IEBUPDTE Example 3 . . . . . . IEBUPDTE Example 4 . . • . IEBUPDTE Example 5 . . . . IEBUPDTE Example 6 IEBUPDTE Example 7 IEBUPDTE Example 8 IEBUPDTE Example 9 IEBUPDTE Example 10 IEBUPDTE Example 11 MVS/370 Utilities 325 326 327 327 327 328 328 330 330 331 331 332 334 335 335 336 336 337 337 337 337 337 337 340 341 341 342 342 343 343 344 TNL ON26-1133 (30 Mar 14) to OC26-4065-1 \ IEHLIST Program Listing OS CVOL Entries • . • • . Listing a Partitioned Data Set Directory Edited Format •.•. Unedited (Dump) Format Listing a Volume Table of Contents Edited Format • • • . . . • . . . . . • Unedited (Dump) Format Input and Output . • • • . Return Codes ..... . • • • • Control ........ • • • • • • • • . Job Control statements .•.....• PARM Information on the EXEC Statement SYSPRINT DD statement . . . . . anynamel DD Statement anyname2 DD Statement SYSIN DD Statement .. Utility Control Statements LISTCTLG Statement ..•• LISTPDS Statement .... LISTVTOC Statement ..••• IEHLIST Examples IEHLIST Example 1 IEHLIST Example 2 IEHLIST Example 3 IEHLIST Example 4 • • • • • • • • • • • • • • • • • • 345 345 345 346 347 347 347 350 351 351 352 352 352 353 353 353 354 354 354 354 355 357 351 358 359 359 IEHMOVE Program •••••••••••••••••••• 361 Volume Size Compatibility Space Allocation ...• Reblocking Data Sets Using IEHMOVE with RACF Moving or Copying a Data Set Sequential Data Sets Partitioned Data Sets BDAM Data Sets Multivolume Data Sets Unloaded Data Sets .••..• Unmovable Data Sets ...•.•••••.. Moving or Copying a Group of Cataloged Data Sets Moving or Copying an OS CVOL •.••..•••••••• Moving or Copying a Volume of Data Sets • • • • . Moving or Copying BDAM Data Sets with Variable-Spanned Records . . . . . Input and Output Return Codes . • . . • • • • • • Control . • . . . . . • • • Job Control Statements . . • • • PARM Information on the EXEC Statement SYSPRINT DD Statement • • • • • SYSUTI DD Statement . . • • • anynamel DD Statement . • • • anyname2 DD Statement . . • • • tape DD Statement ...•..•••.••••••. SYSIN DD Statement •..•••.••.•••.• Job Control Language for the Track Overflow Feature Utili ty Control Statements . • . • • • • • . MOVE DSNAME Statement . .• • • • • • • . COPY DSNAME Statement MOVE DSGROUP Statement • • . • COPY DSGROUP Statement •.•.••• MOVE PDS Statement ..•. COpy PDS Statement .......•• MOVE CATALOG Statement COpy CATALOG Statement MOVE VOLUME Statement COpy VOLUME Statement INCLUDE Statement EXCLUDE Statement SELECT Statement REPLACE Statement IEHMOVE Examples .....•...••• IEHMOVE Example 1 IEHMOVE Example 2 Contents 362 363 364 365 365 366 366 369 369 370 370 370 371 372 373 373 374 374 374 375 376 376 376 377 377 378 378 378 379 380 381 381 382 383 383 384 384 385 385 386 386 386 393 394 395 xv IEHMOVE IEHMOVE IEHMOVE IEHMOVE IEHMOVE IEHMOVE IEHMOVE IEHMOVE IEHMOVE IEHMOVE IEHMOVE Example Example Example Example Example Example Example Example Example Example Example IEHPROGM Program 3 4 5 6 7 8 9 10 11 12 13 · ·· ·· ·· · · ·· ·· ·· ·· · · · · · · ·· · · · · · ·· ·· · · · ·· ·· ·· ·· · · · · · · · ·· ·· ·· ·· · ·· ·· ·· ··· · · · · · · · ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· •••••••••••••••••••• Scratching a Data Set or Member • • • • • Renaming a Data Set or Member . • • • • Cataloging a Data Set in an OS CVOL •• Building or Deleting an Index in an OS CVOL • Building or Deleting an Index Alias in an OS CVOL Connecting or Releasing Two OS CVOLs ••••••••• Building and Maintaining a Generation Data Group Index in an OS CVOl .....••• • • • • Maintaining Data Set Passwords • • • • • • • • • Adding Data Set Passwords . • • • Replacing Data Set Passwords Deleting Data Set Passwords Listing Password Entries Input and Output ....•••••••• Return Codes ....•.••• Control •.......••• Job Control Statements • • • • • • PARM Information on the EXEC Statement SYSPRINT DD Statement anynamel DD Statement anyname2 DD Statement SYSIN DD Statement •• Utility Control Statements SCRATCH Statement •••••• RENAME Statement .•.• CATlG Statement UNCATLG Statement • • BLDX (Build Index> Statement DlTX (Delete Index) Statement •• BlDA (Build Index Alias) Statement DLTA (Delete Index Alias) statement CONNECT Statement ..•••.•• RELEASE (Disconnect) Statement .•••••••••• BLDG (Build Generation Data Group Index) Statement ADD (Add a Password) Statement ••••••••••• REPLACE (Replace a Password) Statement •• ~ • • • • DElETEP (Delete a Password) Statement ••••••• LIST (List Information from a Password> Statement IEHPROGM Examples • • • • • • • • · IEHPROGM Example 1 • . • • • • • • IEHPROGM Example 2 • • • • • • • • • IEHPROGM Example 3 • • • • • • • • IEHPROGM Example 4 • • • • IEHPROGM Example 5 • • • • • • • • IEHPROGM Example 6 . • . . • • • • . IEHPROGM Example 7 IEHPROGM Example 8 IEHPROGM Example 9 IEHPROGM Example 10 ·... IFHSTATR Program • • • • • • • • • • • • • • • • • • Assessing the Quality of Tapes in a Library Input and Output ..•. • • • • Control ......••• • • • • • Job Control Statements • • • • IFHSTATR Example • • • • Appendix A. Exit Routine Linkage ••••••••••• Linking to an Exit Routine .••• label Processing Routine Parameters Nonlabel Processing Routine Parameters xvi MVS/370 Utilities • •••• • • • • • • • • 395 396 397 397 398 399 400 401 401 402 403 404 404 404 405 405 405 406 407 409 410 411 411 411 412 412 412 413 413 414 414 414 415 415 415 415 417 417 418 418 418 418 419 419 419 420 420 421 421 426 427 428 428 429 429 430 430 431 431 432 435 435 436 436 436 437 438 438 438 439 TNL ON26-8133 (30 Mar 14) to OC26-4065-1 Returning from an Exit Routine 440 Appendix B. 443 443 443 444 444 444 445 DO Statement DO Example 00 Example 00 Example DO Example DO Example Appendix C. DD statements for Defining Mountable Devic•• Examples 1 2 3 .••••••••• • • •• • • • • • •••••••••• 4 5 Proce•• ing U.er Label. •••••• • • • • 446 446 447 447 • • • • • • • • • • • • • • • • • • • • • • • • • 449 Content. xvii Processing User Labels as Data Set Descriptors Exiting to a User's Totaling Routine Processing User Labels as Data Index \ ) FIgURES 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. System Utility Programs Data Set Utility Programs Independent Utility Program Locating the Correct Example Tasks and Utility Programs Typical Parameter Lists .•• Sequence of DDNMELST Entries ICAPRTBL Wait-State Codes ••.....•• ICAPRTBL Utility Control Statements ICAPRTBL Example Directory • • • . • . . . • • Partitioned Directories Whose Data Sets Can Be Compared Using IEBCOMPR Partitioned Directories Whose Data Sets Cannot Be Compared Using IEBCOMPR IEBCOMPR Return Codes . Job Control Statements for IEBCOMPR IEBCOMPR Utility Control Statements IEBCOMPR Example Directory IEBCOPY Return Codes ... Job Control Statements for IEBCOPY •. Changing Input Record Format Using IEBCOPY IEBCOPY Utility Control Statements ••••. Multiple Copy Operations within a Job Step IEBCOPY Example Directory ...•. Copying a Partitioned Data Set--Full Copy ••. Copying from Three Input Partitioned Data Sets ••• COpy Operation with "Replace" Specified on the Data Set 0 • 0 0 • 0 • • 40. 0 O. 41. 42. 43. 0 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. MVS/370 utilities 0 • 0 • • 0 • • • • • • • 0 0 • • 0 0 0 • 0 0 0 0 • • • • • • • • 0 • 0 • • • 0 0 • 0 OJ • 0 0 0 • 0 0 • 0 0 0 0 • 0 0 • • 0 0 0 • 0 0 0 0 • • 0 0 • 0 0 • • 0 • 0 • • • • • • • O. 0 • • 0 0 0 • 0 • 0 . . . . . . . . 0 55. 56. 68 Level . . . . . . . . . . . . . . . . . . .. . . . . . 72 Renaming Selected Members Using IEBCOPY 0... 0 . . 74 Exclusive Copy with "Replace" Specified for One Input Partitioned Data Set ..... 77 Compress-in-Place Following Full Copy with "ReplaceR Specified ..•..... 80 Multiple Copy Operations/Copy Steps 0 . . . . . . . . 82 Multiple Copy Operations/Copy Steps within a Job Step 86 IBM-Supplied Patterns . • • • 98 IEBDG Actions ....• 99 IEBDG Return Codes •.•. ••.••••••• 100 Job Control Statements for IEBDG ••.••.•.• 101 IEBDG Utility Control Statements ..•. 104 Defining and Selecting Fields for Output Records Using I EB DG •.••.•••.•.••.•••••• 105 Field Selected from the Input Record for Use in the Output Record 106 Compatible IEBDG Operations .. 107 IEBDG User Exit Return Codes . 108 Default Placement of Fields within an Output Record Using IEBDG . 108 Creating Output Records with Utility Control Statements .. 109 Repetition Caused by the REPEAT Statement Using IEBDG 110 IEBDG Example Directory . 121 Output Records at Job Step Completion .••. 124 Output Partitioned Member at Job Step Completion 125 Partitioned Data Set Members at Job Step Completion 127 Contents of Output Records at Job Step Completion 128 IEBEDIT Return Codes 132 Job Control Statements for IEBEDIT 132 IEBEDIT Example Directory .. 135 Creating a Partitioned Data Set from Sequential Input Using IEBGENER 142 Expanding a Partitioned Data Set Using IEBGENER 143 Editing a Sequential Data Set Using IEBGENER 144 0 39. 64 70 0 38. 62 ....................... . Selective Copy with "Replace" Specified on the Data Set 33. 28 28 29 30 32 46 47 49 51 52 61 Level 28. 34. 35. 36. 37. 27 66 27. 32. 14 15 19 20 23 ....................... . Copying Selected Members with Reblocking and Deblocking Selective Copy with "Replace" Specified on the Member 31. 7 8 Level 26. 29. 30. xviii • 1 2 3 0 • 0 • • 0 •• • • 0 0 • 0 0 0 0 0 0 • • • 0 • • • • • • • • • 0 • • • • TNL GN26-8133 (30 Mar 14) to OC26-4065-1 57. IEBGENER Return Codes •.•.••••••••••• 145 58. Job Control Statements for IEBGENER 146 59. IEBGENER Utility Control Statements 148 60. IEBGENER Example Directory 157 169 61. 3800 General Module Header 171 62. 3800 FCB Module Structure .••••• 62.1. 4248 FCB Module Structure •••• 172 62.2. 4248 FCB Module Control Byte ••••• 172 62.3. 4248 FCB Module Data Byte •.•.••••••• 172.1 172.2 63. IEBIMAGE Listing of a Forms Control Buffer Module 64. COpy Modification Module Structure .•••• 173 65. IEBIMAGE Listing of Three Segments of a Copy Modification Module •..••..•.••••••• 174 ••• 176 66. Character Arrangement Table Module Structure 67. IEBIMAGE Listing of a Character Arrangement Table 177 Module .............•..•.•• 179 68. Graphic Character Modification Module Structure 69. IEBIMAGE Listing of Two Segments of a Graphic Character Modification Module ...•••• 110 ••• 181 70. Library Character Set Module Structure 71. IEBIMAGE Listing of Two Segments of a Library Character Set .......•.••.•• 112 114 .•.••••. 72. IEBIMAGE Return Codes 184 • 73. Job Control Statements for IEBIMAGE •••••• 185 74. Utility Control Statements for IEBIMAGE 75. IEBIMAGE Listing of a COpy Modification Module with Overrun Notes .•••..•.•••• 192 ••••••• 208.2 76. IEBIMAGE Example Directory 233 77. An Unloaded Data Set Created Using IEBISAM 234 78. Record Heading Buffer Used by IEBISAM 234 79. IEBISAM User Exit Return Codes 235 ••.••• 80. IEBISAM Return Codes 235 81. Job Control Statements for IEBISAM 237 •... 82. IEBISAM Example Directory ...••• 243 83. IEBPTPCH Return Codes 243 84. Job Control Statements for IEBPTPCH 245 85. IEBPTPCH Utility Control Statements 251 86. IEBPTPCH Example Directory 270 •••• •.•• 87. Special Purpose Codes 271 ••• .•• .••• 88. MTDI Codes from TCR 272 .•••.••••••••••• 89. MTST Codes from TCR 90. MTST Codes after Translation by IEBTCRIN with 273 TRANS=STDLC ..•..•••.•••••••• 277 ..•• 91. Tape Cartridge Reader Data Stream 271 .•••..•.••• 92. Record Construction 280 .•.••••••••• 93. IEBTCRIN Return Codes 281 • 94. IEBTCRIN Job Control Statements 283 95. IEBTCRIN Utility Control Statements 290 96. IEBTCRIN Example Directory ..... . 97. IEBUPDTE Return Codes 294 295 98. Job Control Statements for IEBUPDTE 297 99. IEBUPDTE Utility Control Statements 300 100. NEW, MEMBER, and NAME Parameters 305 101. UPDATE=INPLACE Return Codes • • 312 102. IEBUPDTE Example Directory •••••• 320 103. Example of Reordered Sequence Numbers •••.••••• 322 104. Reordered Sequence Numbers 326 .•..•.. 105. IEHATLAS Return Codes 327 106. Job Control Statements for IEHATLAS 327 107. Utility Control Statements for IEHATLAS 330 ...•.••••••• 108. IEHATLAS Example Directory 334 109. IBM Standard Label Group after Volume Receives Oat. 336 •.••.•.•••• 110. IEHINITT Return Codes 336 •.•••• Ill. IEHINITT Job Control Statements 112. Printout of INITT Statement Specifications and 338 Initial Volume Label Information .•. 340 113. IEHINITT Example Directory 345 114. Index Structure--Listed by IEHLIST ..•.. 346 115. Sample Directory Block 346 116. Edited Partitioned Directory Entry ••••••• 347 117. Sample Partitioned Directory Listing 350 118. Sample Printout of a Volume Table of Contents ••••••••••••••• 352 119. IEHLIST Return Codes 353 •.••••• 120. IEHLIST Job Control Statements ........ \ ) ... Figure. xix 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. ISO. 151. 152. 153. 154. ISS. xx MVS/370 Utilities IEHlIST Utility Control Statements •••••••• IEHlIST Example Directory •••••••••••. Move and COpy Operations--DASD Receiving Volume with Size Compatible with Source Volume •..•.•.. Move and Copy Operations--DASD Receiving Volume with Size Incompatible with Source Volume ••••••• Move and COpy Operations--Non-DASD Receiving Volume Moving and Copying Sequential Data Sets Moving and Copying Partitioned Data Sets • • Partitioned Data Set Before and After an IEHMOVE Copy Operation •.••.•••••.••••••• Merging Two Data Sets Using IEHMOVE .•••• Merging Three Data Sets Using IEHMOVE •••• Moving and Copying a Group of Non-VSAM Cataloged Dat. Sets ............... . Moving and Copying the OS CVOL •••• Moving and Copying a Volume of Data Sets IEHMOVE Return Codes .••••• IEHMOVE Job Control Statements •••. IEHMOVE Utility Control Statements IEHMOVE Example Directory ••••••••.••• Index Structure Before and After an IEHPROGM Build Operation ••••.••••.•••••• Building an Index Alias Using IEHPROGM •• Connecting an OS CVOl to a Second OS CVOl Using I EHPROGM ..••••..••••••••••• Connecting Three OS CVOls Using IEHPROGM ••••• Building a Generation Data Group Index Using IEHPROGM Relationship between the Protection Status of a Data Set and Its Passwords •••• listing of a Password Entry •••• IEHPROGM Return Codes ....•.. IEHPROGM Job Control Statements IEHPROGM Utility Control Statements IEHPROGM Example Directory • • Type 21 SMF Record Format with ESV Data Sample Output from IFHSTATR .•••• IFHSTATR Job Control Statements .•..••••• Parameter lists for Nonlabel Processing Exit Routines Return Codes That Must Be Issued by User Exit Routines •.••••••••••. • • • • • System Action at OPEN, EOV, or CLOSE Time •••• User Totaling Routine Return Codes ..••. 354 357 362 362 363 366 367 368 368 369 371 371 373 374 375 379 393 406 406 407 408 408 410 412 412 414 416 427 435 436 437 439 441 447 447 . INTRODUCTION MVS/370 Data Facility Product provides utility programs to assist in organizing and maintaining data. Each utility program falls into one of three classes of programs, determined by the function performed and the type of control of the utility. IYITEn UTILITY pROGRAMS System utility programs are used to maintain and manipUlate system and user data sets. Entire volume manipulation, for example, copying or restoring, is also provided. These programs must reside in an authorized library and are controlled by JCL statements and utility control statements. They can be executed as jobs or can be invoked as subroutines by authorized programs. The invocation of utility programs and the linkage conventions are discussed in "Invoking utility Programs from a Problem Program" on page 13. Figure 1 is a list of system utility programs and their purpose. system utility Purpose IEHATLAS To assign alternate tracks and recover usable data records when defective tracks are indicated IEHINITT To write standard labels on tape volumes IEHLIST To list system control data IEHMOVE To move or copy collections of data IEHPROGH To build and maintain system control data IFHSTATR To select, format, and write information about tape errors from the IFASMFDP tape or the SYS1.MAH data set. Figure 1. System Utility Programs DATA SET UTILITY pROGRAMS Data set utility programs are used to reorganize, change, or compare data at the data set and/or record level. These programs are controlled by JeL statements and utility control statements. These utilities manipUlate partitioned, sequential, or indexed sequential data sets provided as input to the programs. Data ranging from fields within a logical record to entire data sets can be manipulated. . Data set utility programs can be executed as jobs or can be invoked as subroutines by a calling program. The invocat;on of utility programs and the linkage conventions are disCUSSQ~ in "Invoking Utility Programs from a Problem Program" on page 13. Utility programs that manipulate data sets and are incluaed in this manual cannot be used with VSAM data sets. Information about VSAM data sets can be found in VSAM Users Guide. Introduction 1 TNL ON26-8133 (30 Mar 84) to GC26-4065-1 Two utilities, IEHMOVE and IEBCOPY, do not support Virtual Input/Output (VIO) data sets. Figure 2 is a list of data set utility programs and their purpose. Data set utility IEBCOMPR Purpose To compare records in sequential or partitioned.data sets IEBCOPY To copy, compress, or merge partitioned data sets, to add RLD count information to load modules, to select or exclude specified members in a copy operation, and to rename and/or replace selected members of partitioned data sets IEBDG To create a test data set consisting of patterned data IEBED!T To selectively copy job steps and their associated JOB statements IEBGENER To copy records from a sequential data set or to convert a data set from sequential organization to partitioned organization IEBIMAGE To modify, print, or link modules for use with the IBM 3800 Printing Subsystem, the 3262 Model 5, or the 4248 printer IEBISAM To place source data from an indexed sequential data set into a sequential data set in a format suitable for subsequent reconstruction IEBPTPCH To print or punch records that reside in a sequential or partitioned data set IEBTCRIN To construct records from the input data stream that have been read from the IBM 2495 Tape Cartridge Reader IEBUPDTE To incorporate changes to sequential or partitioned data sets Figure 2. Data Set Utility Programs INDEPENPENT UTILITY PROGRAMS Independent utility programs are used to prepare devices for system use when the operating system is not available. They operate outside of, and in support of, the operating system, are controlled by utility control statements, and cannot be invoked by a calling program. This pUblication addresses only the ICAPRTBL utility program. The following figure shows the independent utility program and its purpose. 2 MVS/370 Utilities Independent utility ICAPRTBL Purpose To load the forms control and universal character set buffers of the IBM 3203-5 or 3211 printer after an unsuccessful attempt to IPL, with the 3203-5 or 3211 assigned as the output portion of a composite console. Figure 3. Independent Utility Program The selection of a specific program depends on the nature of the job to be performed. For example, renaming a data set involves modifying system control data. Therefore, a system utility program can be used to rename the data set. In some cases, a specific function can be performed by more than one program. "Guide to Utility Program Functions" on page 8 will help you find the program that performs the function you need. DASD AND TAPE DEVICE SUPPORT Except where noted, all the following DASD and tape devices are supported by all utility programs. Restrictions and peculiar device support are noted in the individual utility sections. The table below indicates specific devices supported, and the notation to be used to reference them. The term DASD includes all direct access storage devices listed below. DASD: Tape: Device Number Devices 2305-1 2305-1 2305-2 2305-2 2314 2314 2319 2319 3330 3330-1, 3330-2, 3333, and 3350 in 3330-1 compatibility mode 3330-1 3330-11, 3333-11, and 3350 in 3330-11 compatibility mode 3330V 3850 MSS Virtual Volumes 3340 3340, 3344 (both 35 megabyte models) 3350 3350 Native mode 3375 3375 3380 3380 2400 2400 (all models) 2495 2495 (IEBTCRIN only) 3400 3420 (all models) & 70 Introduction 3 CONTROL System and data set utility programs are controlled by job control statements and utility control statements. The independent utility program is controlled by utility control statements only; because this program is independent of the operating system, job control statements are not required. The job control statements and utility control statements necessary to use utility programs are provided in the major discussion of each utility program. JOB CONTROL STATEMENTS A system or data set utility program can be introduced to the operating system in different ways: • Job control statements can be included in the input stream. • Job control statements, placed in a procedure library or defined as an inline procedure, can be included by means of the EXEC job control statement. • A utility program can be invoked by a calling program. If job control statements are placed in a procedure library, they should satisfy the requirements for most applications of the program; a procedure, of course, can be modified or supplemented for applications that require additional parameters, data sets, or devices. The data set utility IEBUPDTE can be used to enter a procedure into a procedure library; see "IEBUPDTE Program" o~ page 293. A job that modifies a system data set (identified by SYS1.) must be run in a single job environment; however, a job that uses a system data set, but does not modify it, can be run in a multiprogramming environment. The operator should be informed of all jobs that modify system data sets. DO statements should ensure that the volumes on which the data sets reside cannot be shared when update activity is being performed. Job control statements can be continued on subsequent lines, but the continued line must begin in column 4 through 16. No continuation mark is required in column 72. UTILITY CONTROL STATEMENTS Utility control statements are used to identify a particular function to be performed by a utility program and, when required, to identify specific volumes or data sets to be processed. The control statements for the utility programs have the following standard format: label operation operand The label symbolically identifies the control statement and, with the exception of system utility program IEHINITT, can be omitted. When included, a name must begin in the first position of the statement and must be followed by one or more blanks. It can contain from one to eight alphameric characters, the first of which must be alphabetic. The operation identifies the type of control statement. be preceded and followed by one or more blanks. It must The QRgrand is made up of one or more keyword parameters separated by commas. The operand field must be preceded and followed by one or more blanks. Commas, parentheses, and blanks can be used only as delimiting characters. 4 MVS/370 Utilities Comments can be written in a utility statement, but they must be separated from the last parameter of the operand field by one or more blanks. continuing utility Control statements Utility control statements are coded on cards or as online input and are contained in columns 1 through 71. A statement that exceeds 71 characters must be continued on one or more additional lines. A nonblank character must be placed in column 72 to indicate continuation. A utility statement can be interrupted either in column 71 or after any comma. The continued portion of the utility control statement must begin in column 16 of the following statement. Note: The IEHPROGM, IEBCOPY, IEBPTPCH, IEBGENER, IEBCOMPR, and IEBDG utility programs permit certain exceptions to these requirements (see the applicable program description). The utility control statements are discussed in detail, as applicable, in the remaining chapters. Restrictions • Unless otherwise indicated in the description of a specific utility program, a temporary data set can be processed by a utility program only if the user specifies the complete name generated for the data set by the system (for example, DSNAME=SYS82296.T000051.RPOOl.JOBTEMP.TEMPMOD). • The utility programs described in this book do not normally support VSAM data sets. For certain exceptions, refer to the various program descriptions. • Most utility programs do not support ISCII/ASCII tape data sets. (Conversion from EBCDIC codes to ISCII/ASCII codes will result in loss of data.) Refer to the IEHINITT program for specific exceptions. NOTATIONAL CONVENTIONS A uniform system of notation describes the format of utility commands. This notation is not part of the language; it simply provides a basis for describing the structure of the commands. The command format illustrations in this book use the following conventions: • Brackets [ ] indicate an optional parameter. • Braces C ) indicate a choice of entry; unless a default is indicated, you must choose one of the entries. Items separated by a vertical bar (I) represent alternative items. No more than one of these items may be selected. • An ellipsis ( ... ) indicates that multiple entries of the type immediately preceding the ellipsis are allowed. • Other punctuation (parentheses, commas, spaces, etc.) must be entered as shown. A space is indicated by a blank. • BOLDFACE type indicates the exact characters to be entered, • lowercase underscored type specifies fields to be supplied by the user. except as described in the bulleted notes above. must be entered exactly as illustrated. Such items Introduction 5 BOLDFACE UNDERSCORED type indicates a default option. If the parameter is omitted, the underscored value is assumed. keyword=device=list The term keyword is replaced by VOL, FROM, or TO. The term device is replaced by either a generic name, for example, 3330; or an esoteric name, for example, DISK, if this esoteric name has been generated into your system. For DASD, the term list is replaced by one or more volume serial numbers separated by commas. When there is more than one volume serial number, the entire list field must be enclosed in parentheses. For tapes, the term list is replaced by either one or more volume serial number/comma/data set sequence number pairs. Each pair is separated from the next pair by a comma. When there is more than one pair, the entire list field must be enclosed in parentheses; for example: FROM=3400=(tapeA,1,tapeB,1). INSTALLATION CONSIDERATIONS The System/370 versions of Device Support Facilities (Release 1 through 5) are not applicable for Data Facility Product Installations. The user must order and install Device Support Facilities Release 6 (5752-VS2) to run in an MVS/370 Data Facility Product environment. .' Releases 1.0 and 1.1 of Data Facility Data Set Services (DFDSS) are not applicable for Data Facility Product installations. The user must install DFDSS Release 1.2 to run in an MVS/370 Data Facility Product environment. Installation of Release 1.2 supersedes Release 1.1. The following utilities are not included as support for the Data Facility Product for MVS/370. • IBCDASDI--Disk initialization functions are described in Device Support Facilities User's Guide and Reference. • IBCDMPRS--Stand-alone disk restore functions are described in Data Facility Data Set Services User's Gujde and Reference. • IEHDASDR--Disk initialization functions are described in Device Support Facilities User's Guide and Reference. Dump restore functions are described in Data Facility Data Set Services User's Guide and Reference. Note: DFDSS does not support the dump format produced by IEHDASDR or DRWDASDR. • Analysis Program-1 (AP-1)--Functions to aid in the analysis of DASD errors are described in Device Support Facilities User's Guide and Reference. SPECIAL REFERENCING AIDS Two special referencing aids are included in this publication to help you locate the correct utility program for your needs and locate the correct example of the program for reference. To locate the correct utility program, refer to Figure 5 on page 8 in "Guide to Utility Program Functions" on page 8. To locate the right example, use the figure--called an "example directory"--that precedes each program's examples. Figure 4 on page 7 shows a portion of the example directory for IEHMOVE. The figure shows that IEHMOVE Example 1 is an example of moving a sequential data set and that IEHMOVE Example 2 is an example of copying a sequential data set. 6 MVS/370 Utilities Operation Device Comments Example MOVE Sequential Disk Source volume is demounted after job completion. 1 COPY Sequential Disk Three cataloged sequential data sets are to be copied. The disks are mountable. 2 Figure 4. locating the Correct Example Introduction 7 GUIDE TO UTILITY PROGRAM FUNCTIONS Figure 5 shows a list of tasks that the utility programs can be used to perform. The left-hand column shows tasks that you might want to perform. The middle column more specifically defines the tasks. The right-hand column shows the utility programs that can be used for each task. Notice that in some cases more than one program may be available to perform the same task. Task Options Utility Program Add a password IEHPROGM Alter in place a load module IEBCOPY Assign alternate tracks to a DASD volume and recover usable data IEHATLAS Catalog a data set in an OS CVOL IEHPROGM Change data set organization logical record length IEBUPDTE IEBGENER Compare partitioned data sets sequential data sets records IEBCOMPR Compress in place a partitioned data set IEBCOPY Construct records from MTST and MTDI input IEBTCRIN Convert to partitioned a sequential data set created as a result of an unload IEBCOPY sequential data sets IEBUPDTE, IEBGENER a partitioned data set IEBUPDTE, IEBCOPY an indexed sequential data set IEBISAM, IEBDG a direct access volume IEHMOVE a load module IEBCOPY a partitioned data set IEBCGPY, IEHMOVE a volume of data sets IEHMOVE an indexed sequential data set IEBISAM job steps IEBEDIT Convert to sequential Copy selected m~mbers Figure 5 (Part 1 of 5). Tasks and Utility Programs 8 MVS/370 Utilities IEBCOPY, IEHMOVE TNl GN26-8133 (30 Mar 84) to GC26-406S-1 ) Task Utility Program Options sequential data sets IEBGE;NER, IEHMOVE, IEBUPDTE a backup copy of a partitioned data set IEBCOPY a character arrangement; table module IEBIMAGE a copy modification module IEBIMAGE a 3800 or 4248 forms control buffer module IEBIMAGE a graphic character modification module IEBIMAGE a library character set module IEBIMAGE a library of partitioned members IEBUPDTE a member IEBDG IEBGENER IEBUPDTE a sequential output data set IEBDG an indexed sequential data set IEBDG an output job stream IEBEDIT a password IEHPROGM catalog entries IEHPROGM records in a partitioned data set IEBUPDTE Edit MTDI input IEBTCRIN Edit and convert to partitioned a sequential data set IEBGENER, IEBUPDTE Edit and copy a job stream IEBEDIT a sequential data set IEBGENER, IEBUPDTE Edit and list error statistics by volume (ESV) records IFHSTATR Edit and print a sequential data set IEBPTPCH . Edit and punch a sequential data set IEBPTPCH Create Delete Enter a procedure into a procedure library IEBUPDTE _/ Figure 5 (Part 2 of 5). Tasks and Utility Programs Guide to Utility Program Functions 9 Options Exclude a partitioned data set member from a copy operation IEBCOPY, IEHMOVE Expand a partitioned data set IEBCOPY a sequential data set IEBGENER Gene'rate test data IEBDG Get alternate tracks on a DASD volume IEHATLAS Include changes to members or sequential data sets IEBUPDTE Insert records into a partitioned data set IEBUPDTE Label magnetic tape volumes IEHINITT List a password entry IEHPROGM a volume table of contents IEHLIST number of unused d{rectory blocks and tracks IEBCOPY partitioned directories IEHLIST a previously unloaded partitioned data set IEBCOPY an indexed sequential data set IEBISAM an unloaded data set IEHMOVE UCS and FCB buffers of a 3211 ICAPRTBL Merge partitioned data sets IEHMOVE, IEBCOPY. Modify a partitioned or sequential data set IEBUPDTE Move a volume of data sets IEHMOVE partitioned data sets IEHMOVE sequential data sets IEHMOVE in a new member IEBUPDTE in a partitioned data set IEBUPDTE add a password IEHPROGM delete a password IEHPROGM Load Number records Password protect \ J list passwords replace a password IEHPROGM : Figure 5 (Part 3 of 5). Tasks and Utility Programs 10 MVS/370 Utilities utility Progralll Task IEHPROGM utility Program Task options Print sequential data sets IEBGENER, IEBUPDTE, IEBPTPCH partitioned data sets IEBPTPCH selected records IEBPTPCH a partitioned data set member IEBPTPCH a sequential data set IEBPTPCH selected records IEBPTPCH Read Tape Cartridge Reader input IEBTCRIN Reblock a load module IEBCOPY a partitioned data set IEBCOPY a sequential data set IEBGENER, IEBUPDTE Recover data from defective tracks on direct access volumes IEHATlAS Re-create a partitioned data set IEBCOPY Rename a partitioned data set member IEBCOPY, IEHPROGM a sequential or partitioned data set IEHPROGM moved or copied members IEHMOVE Renumber logical records IEBUPDTE Replace a password IEHPROGM data on an alternate track IEHATlAS identically named members IEBCOPY logical records IEBUPDTE members IEBUPDTE records in a member IEBUPDTE records in a partitioned data set IEBUPDTE, IEBCOPY selected members IEBCOPY selected members in a move or copy operation IEBCOPY, IEHMOVE a volume table of contents IEHPROGM data sets IEHPROGM data sets IEHPROGM Punch Scratch Uncatalog Figure 5 (Part 4 of 5). Tasks and Utility Programs Guide to Utility Program Functions 11 Task options utility Program Unload a partitioned data set IEHMOVE, IEBCOPY a sequential data set IEHMOVE an indexed sequential data set IEBISAM a partitioned data set IEBUPDTE Update in place Figure S (Part S of S). Tasks and Utility Programs 12 MVS/370 Utilities INVOKING UTILITY PROGRAMS FROM A PROBLEM PROGRAM Utility programs can be invoked by a problem program through the use of the ATTACH or LINK macro instruction. In addition, IEBTCRIN can be invoked with the LOAD or CALL macro instruction. The problem program must supply the following to the utility program: • The information usually specified in the PARM parameter of the EXEC statement. • The ddnames of the data sets to be used during processing by the utility program. The following programs may execute authorized functions: IEBCOPY, IEHATLAS, IEHINITT, IEHMOVE, IEHPROGM When executing an authorized function, the calling program must be aut~orized via the Authorized Program Facility (APF). When IEHMOVE, IEHPROGM, or IEHLIST is dynamically invoked in a job step containing a program other than one of these three, the DD statements defining mountable devices for the IEHMOVE, IEHPROGM, or IEHLIST program must be included in the job stream prior to DD statements defining data sets required by the other program. LINK OR ATTACH MACRO INSTRUCTION The LINK or ATTACH macro instruction can be used to invoke a utility program from a problem program. The format of the LINK or ATTACH macro instruction is! [label) (LINKIATTACHl EP=progname ,PARAM=(optionaddr[,ddnameaddr] [,hdingaddr)) ,VL=l where: EP=progname specifies the name of the utility program. PARAM= specifies, as a sublist, address parameters to be passed from the problem program to the utility program. These values can be coded: optionaddr specifies the address of an option list, OPTLIST, which is usually specified in the PARM parameter of the EXEC statement. This address must be written for all utility programs. ddnameaddr specifies the address of a list, DDNMELST, of alternate ddnames for the data sets used during utility program processing. If standard ddnames are used and this is not the last parameter in the list, Invoking Utility Programs from a Problem Program 13 it should point to a halfword of zeros. last parameter, it may be omitted. If it is the hdingaddr specifies the address of a 6-byte list, HDNGlIST, which contains an EBCDIC page count for the output device. If hdingaddr is omitted, the page number defaults to 1. VL=l specifies that the sign bit of the last fullword of the address parameter list is to be set to 1. Figure 6 shows these lists as they exist in the user's DC area. Note that the symbolic starting addresses for OPTlIST and DDNMElST fallon halfword boundaries which are not also fullword boundaries. Full word Full word ~ 1 Starting add ress of the optionad dr parameter Ii st (OPTLISTI 00 1 08 - r~/ Starting add the ddnameaddr parameter Ii st (ODNMELS T)' , N ' --.'!Jiill E V Wr° O R I F y o 48 00 00 00 00 ~' 00 00 00 00 00 00 2 00 00 00 00 00 00 00 00 3 00 00 00 00 00 00 00 00 4 00 00 00 00 5 ~ I N P U 40 00 00 00 00 6 00 00 00 00 00 00 00 00 7 00 00 00 00 T Starting add ress of the hdingad dr parameter I j st (HDNGLIST ) ..""".,.""" 0 T 1 S 1 E T ..... ~ I N P U 8 W H I C 9 00 04 00 00 10 "V 1 0 11 Figure 6. Typical Parameter lists The PARAM parameter of the LINK macro instruction in the calling program provides the utility program with the symbolic addresses of the parameter lists shown in Figure 6, as follows: 14 • The option list, OPTlIST, which includes the number of bytes in the list (hexadecimal 08) and the NOVERIFY option. • The alternate ddname list, DDNMElST, which includes the number of bytes in the list (hexadecimal 48) and alternative names for the SYSIN INPUT11, SYSUT1 INPUTSET, and SYSUT2 WHICHPTR data sets. • The heading list, HDNGLIST, which includes the number of bytes in the list (hexadecimal 04) and indicates the starting page number (shown as decimal 10) for printing operations controlled through the SYSPRINT data set. MVS/370 Utilities The option list, OPTLIST, must begin on a halfword boundary that is not also a fullword boundary. The two high order bytes contain a hexadecimal count of the number of bytes in the remainder of the OPTLIST. (For all programs except IEHMOVE, IEHLIST, IEHPROGM, IEHINITT, IEBUPDTE, and IEBISAM, the count must be zero.) OPTLIST is free form with fields separated by commas. No blanks or zeros should appear in the list. The ddname list, DDNMELST, must begin on a halfword boundary that is not also a fullword boundary. The two high order bytes contain a count of the number of bytes in the remainder of the list. Each name of fewer than 8 bytes must be left aligned and padded with blanks. If an alternate ddname is omitted from the list, the standard name is assumed. If the name is omitted within the list, the 8-byte entry must contain binary zeros. Names can be omitted from the end by merely shortening the list. Figure 7 shows the sequence of the 8-byte entries in the ddname list pointed to by ddnameaddr. Entry standard Name 1 2 00000000 00000000 00000000 00000000 3 4 5 6 SYSIN SYSPRINT 8 9 10 11 SYSUTI SYSUT2 SYSUT3 SYSUT4 7 00000000 Figure 7. Sequence of DDNMELST Entries The first 2 bytes of HDNGLIST contain the length in bytes of the heading list. The remaining 4 bytes contain a page number that the utility program is to place on the first page of printed output. LOAD MACRO INSTRUCTION IEBTCRIN can be invoked through use of the LOAD macro instruction. The LOAD macro instruction causes the control program to bring the load module containing the specified entry point into main storage unless a copy is already there. Control is not passed to the load module. The format of the LOAD macro instruction is: LOAD CEP=IEBTCRINIEPLOC=address of name} Invoking Utility Programs from a Problem Program 15 where: EP=IEBTCRIN is the entry point name of the program to be brought into main storage. EPLOC=address of name is the main storage address of the entry point name described above. CALL MACRO INSTRUCTION The CALL macro instruction can be used to pass control to IEBTCRIN a~ter IEBTCRIN has been loaded into main storage. Control can be passed to IEBTCRIN via a CALL macro instruction or via a branch and link instruction. If the branch and link instruction is used, register 1 must be loaded with the address of a parameter list of fullwbrds as described under "LINK or ATTACH Macro Instruction" on page 13. The last parameter list address must contain X'80' in byte 1 to indicate the last parameter in the list. The format of the CALL macro instruction is: [labell CALL IEBTCRIN(,optionaddr[,ddnameaddr] [,hdingaddr]) ,VL=l where: IEBTCRIN is the name of the program to be given control; the name is used in the macro instruction as the operand of a V-type address constant. optionaddr specifies the address of an option list, OPTLIST, usually specified in the PARM parameter of the EXEC statement. ddnameaddr specifies the address of a list of alternate ddnames, DDNMELST, for the data sets used during IEBTCRIN processing. If standard ddnames are used and this is not the last parameter in the list, it should point to a halfword of zeros. If it is the last parameter, it may be omitted. hdingaddr specifies the address of a six-byte list, HDNGLI5T, containing an EBCDIC page count for the output device. VL=l specifies that the high order bit of the last address parameter in the macro expansion is to be set to 1. The option list, OPTLIST, must begin on a halfword boundary that is not also a fullword boundary. The two high order bytes contain a hexadecimal count of the number of bytes in the remainder of the OPTLIST. This count must be zero. OPTLIST is free form with fields separated by commas. No blanks or zeros should appear in the list. The ddname list, DDNMELST, must begin on a halfword boundary that is not also a fullword boundary. The two high order bytes contain a count of the number of bytes in the remainder of the list. Each name of fewer than 8 bytes must be left aligned and 16 MVS/370 Utilities padded with blanks. If an alternate ddname is omitted from the list, the standard name is assumed. If the name is omitted within the list, the 8-byte entry must contain binary zeros. Names can be omitted from the end by merely shortening the list. Figure 7 on page 15 shows the sequence of the 8-byte entries in the ddname list pointed to by ddnameaddr. The first two bytes of the heading list, HDNGLIST, contain the length in bytes of the heading list. The remaining four bytes contain a page number that IEBTCRIN places on the first page of printed output. Invoking Utility Programs from a Problem Program 17 ICAPRTBl PROGRAM ICAPRTBL is an independent utility that operates only in a System/370 environment. It is used to load the universal character set (UCS) buffer and the forms control buffer (FCB) for an IBM 3211 or 3203-5 Printer. ICAPRTBL is used when the 3211/3203-5 is assigned as the output portion of a composite console and an unsuccessful attempt has been made to initialize the operating system because the UCS and FCB buffers contain improper bit patterns. ICAPRTBL properly loads the buffers so the operating system can be initialized. Note: When an operable console printer keyboard is available, the buffers are loaded under the control of the operating system. EXECUTING ICAPRTBl ICAPRTBl must be loaded from a card reader. Control statements must follow the last card of the program. Only one printer can be initialized each time the program is executed. To execute ICAPRTBL: 1. Mount the correct train on the printer and ready the printer. 2. Place the object program deck and the control cards in the card reader. Ready the reader and press the reader's END OF FILE key. 3. load the object program from the reader by setting the load selector switches and pressing the console LOAD key. Wait state codes will be displayed in the address portion of the PSW for normal termination and for input/output, system, or control card errors. Code B01 is issued for normal termination; B02 through B07 are issued for control card errors; BOA through BOC are issued for system errors; and B11 through BID are issued for input/output errors. Figure 8 on page 19 shows these codes and their meanings. 18 MVS/370 Utilities Code Meaning BOI Visually check the train image printed on the 3211.13203-5. B02 Missing control card or control card out of order. B03 Incorrect JOB statement. B04 Incorrect DFN statement. BOS Incorrect UCS statement. B06 Incorrect FCB statement. B07 Incorrect END statement. BOA External interrupt. BOB Program check interrupt. BOC Machine check interrupt. Bll Reader not online. B12 Reader not ready. B13 Reader unit check (display low virtual storage locations 2 through 7 for sense information). B14 Reader channel error. BIS No device end on reader. B19 Printer not online. BIA Printer not ready. BIB Printer unit check (display low virtual storage locations 2 through 7 for sense information). BIC Printer channel error. BID No device end on printer. Figure 8. ICAPRTBl Wait-State Codes INPUT AND OUTPUT ICAPRTBl uses, as input, utility control statements that contain images to be loaded into the universal character set and/or the forms control buffer. ICAPRTBl produces, as output, properly loaded UCS and FCB buffers. CONTROL ICAPRTBl is controlled by utility control statements. Because ICAPRTBl is an independent utility program, operating system job control statements are not used. UTILITY CONTROL STATEMENTS All utility control statement operands must be preceded and followed by one or more blanks. Continuation requirements for utility control statements are described in "Continuing Utility Control Statements" on page 5. ICAPRTBl Program 19 ICAPRTBL utility control statements are listed below. statement Use JOB Indicates the beginning of an ICAPRTBl job. DFN Defines the address of the 3211 or 3203-5, specifies that lowercase letters are to be printed in uppercase when the lowercase print train is not available, and identifies UCS and FCB image names. ucs Contains an image of the characters to be loaded into the UCS buffer. FCB Defines the image to be loaded into the FCB. END Indicates the end of an ICAPRTBL job. Figure 9. ICAPRTBl Utility Control Statements JOB statement The JOB statement indicates the beginning of an ICAPRTBl job. The format of the JOB statement is: I[label] JOB [user-information] DFN statement The DFN statement is used to define the address of the 3211 or 3203-5, to specify that lowercase letters are to be printed in uppercase when the lowercase print train is not available, and to identify UCS and FCB image names. The format of the DFN statement is: DFN ADDR=£YY [,FOLD=vIHl [,DEVT=J211IJ20J-Sl [,UCS=ucsnameIANIAll1 [,FCB=fcbnameISTDISTD21 UCS statement The UCS statement contains an image to be loaded into the UCS buffer. 20 MVS/370 Utilities The format of the UCS statement is: ucs I [ucsname] ucs-image FCB statement The FCB statement defines the image to be loaded into the forms control buffer. The FCB statement may precede or follow the UCS statement. The format of the FCB statement is: FCB [fcbnamel LPI=C618J ,LNCH=((l,Q)[,(l,Q) ••• ]) , FORHEND=,K END statement The END statement signals the end of the ICAPRTBl job. The format of the END statement is: I[labell END [user-information] ICAPRTBl Program 21 t Parameters APplicable Control statements ADDR DFH ADDR=cuu specifies the channel number, c, and unit number, gy, of the 3211 or 3203-5. DEVT DFH DEVT=3211 13203-5 specifies the device type for which the ADDR parameter applies. 3211 is the default device type. FeB DFH FCB=fcbnameISTDISTD2 specifies a 1 to 8 character name of the image loaded into the forms control buffer. The actual image loaded into the buffer is not affected by this name, but serves as a meaningful reference when printed on the printer. fcbname should be the same as the FeB image being used. STD2 is the default. FOLD DFH FOLD=VIH specifies whether lowercase letters are to be printed as uppercase letters when the lowercase print train is not available. The values can be coded: Description of Parameters v N 22 specifies that lowercase letters are to be printed as uppercase letters when the lowercase print train is not available. specifies that lowercase letters are not to be printed as uppercase letters. This is the default. FORMEHD FeB FORHEND=x specifies the number of lines (maximum 180) on the printer form. For an II-inch form, spacing six lines per inch, X must be 66. LHeH FeB LNCH=((l,~)[,(l,~) MVS/370 Utilities ••• ]) specifies the channels of the FeB image. Each set of parentheses must contain the line number (1-180), a comma, and the channel number (1-12) to be assigned to that line. One or all of the 12 channels may be assigned in any order. Each set must be separated by commas and the entire group surrounded by parentheses. Parameters Applicable Control statements LPI FCB Description of Parameters LPI=(618J specifies the number of lines per inch that will be printed on the document. These values can be coded: 6 8 UCS DFN specifies that six lines per inch will be printed. specifies that eight lines per inch will be printed. UCS=ucsnamelANIAll is a 1 to 8 character alphameric name of the image loaded into the UCS buffer. This name is printed on the printer to serve as a reference to the print train being used. AN All is the default for 3203-5 devices. is the default for 3211 devices. ucs-image UCS ucs-image specifies characters to be loaded into the UCS buffer. The characters must be contained in columns 16 through 71. The first UCS statement contains the first 56 characters; subsequent statements contain continuations of the image to be loaded into the UCS buffer. A continuation mark is required in column 72 of a continued UCS image card. userinformation JOB END [user-information] specifies user explanation of action and comments. ICAPRTBL EXAMPLES The examples that follow illustrate some of the uses of ICAPRTBL. Figure 10 can be used as a quick-reference guide to the examples. The numbers in the "Examples" column refer to examples that follow. Devices Examples 3211 1, 2 3203-5 3, 4 Figure 10. ICAPRTBL Example Directory ICAPRTBL Program 23 ICAPRTBL EXAMPLE 1 In this example, a 3211 UCS image (All) and an FCB image are loaded into the UCS and FCB buffers. JOB LOAD All IMAGE DFN ADDR=002,FOLD=N All UCS 1<.=IHGFEDCBA*$-RQPONMLKJ%,&ZYXWVUTS/~#0987654321<.=IHGF 72 EDCBA*$-RQPONMLKJ%,&ZYXWVUTS/~#0987654321<.=IHGFEDCBA*$ RQPONMLKJ%,&ZYXWVUTS/~#0987654321<.=IHGFEDCBA*$-RQPONMLK J%,&ZYXWVUTS/~#0987654321<.=IHGFEDCBA*$-RQPONMlKJ%,&ZYXW VUTS/~#0987654321<.=IHGFEDCBA*$-RQPONMLKJ%,&ZYXWVUTS/~#0 987654321<.=IHGFEDCBA*$-RQPONMlKJ%,&ZYXWVUTS/23098765432 STD2 FCB END 1<.=IHGFEDCBA*$-RQPONMlKJ%,&ZYXWVUTS/~#0987654321<.=IHGF EDCBA*$-RQPONMlKJ%,&ZYXWVUTS/~#098765432 LPI=6, LNCH=((4,1),(10,2),(16,3),(22,4),(28,5),(34,6),(40,7), (46,8),(52,10),(58,11),(64,12),(66,9», FORMEND=66 C C C The control statements are discussed below: • DFN specifies the channel and unit number of the default device type 3211 and FOLD=N specifies that lowercase letters are not to be printed as uppercase letters when the lowercase print train is not available. • UCS specifies the characters to be loaded into the UCS buffer. • FCB specifies the values to be loaded into the forms control buffer. LPI=6 indicates that six lines per inch will be printed, and FORMEND=66 specifies 66 lines per page. ICAPRTBL EXAMPLE 2 In this example, a 3211 UCS image (P1l) and an IBM standard FCB image are loaded into the UCS and FCB buffers by specifying images via the UCS and FCB parameters of the DFN statement. JOB LOAD 3211 P11 IMAGE DFN UCS=P11,ADDR=004,FCB=STD END The DFN control statement is discussed below: 24 • By omitting the DEVT parameter, the default device type is 3211. • The UCS parameter specifies the UCS image ID to be loaded into the UCS buffer from standard image tables provided by the utility. • The ADDR parameter specifies the channel and unit number of the 3211. • By omitting the FOLD parameter, the default FOLD value N is selected, specifying that lowercase letters are not to be printed as uppercase letters when the lowercase print train is not available. MVS/370 Utilities The FeB parameter specifies the standard FCB image id (STD) to be loaded into the FCB buffer from standard image tables provided by the utility. ICAPRTBL EXAMPLE 3 In this example, a 3203-5 UCS image (AN by default) and a standard FCB image (STD2 by default) are loaded into the UCS and FCB buffers. JOB DFN DEVT=3203-5,ADDR=002 END The DFN statement is discussed below: • The DEVT parameter specifies the device type as 3203-5. • The ADDR parameter specifies the channel and unit number of the 3203-5. • By omitting the FOLD parameter, the default FOLD value N is selected specifying that lowercase letters are not to be printed as uppercase letters when the lowercase print train is not available. • By omitting both a UCS statement and the UCS parameter, the default 3203-5 UCS image (AN) 1S loaded into the UCB buffer from standard image tables provided by the utility. • By omitting both an FCB statement and the FCB parameter, the default FCB image (STD2) is loaded into the FCB buffer from standard image tables provided by the utility. ICAPRTBL EXAMPLE 4 In this example, a 3203-5 UCS image (AN by default) and a provided FCB image are loaded, respectively, into the UCS and FCB buffers. USER JOB 3203-5 USER FCB FCB FORMEND=88,LPI=8,LNCH=«4,1),(12,2), (20,3),(28,4),(36,5),(44,6),(52,7), (60,8),(68,10),(76,11),(84,12),(88,9» DFN FOLD=Y, FCB=STD, ADDR=003, DEVT=3203-5 END 72 C C C C C The control statements are discussed below: • The JOB statement includes user comments on the action taken. • The FCB statement specifies the values to be loaded into the forms control buffer. FORMEND=88 and LPI=8 indicate that there will be 88 lines per page, 8 lines per inch. Note that the specification of the FCB parameter on the DFN statement is overridden by the FCB statement specification. ICAPRTBL Program 25 26 • The DEVT parameter of the DFN statement specifies the device type as 3203-5. • The ADDR parameter specifies the channel and unit number of the 3203-5. • The FOLD=Y parameter specifies that lowercase letters are to be printed as uppercase letters when the lowercase print train is not available. • By omitting both a UCS statement and the UCS parameter of the DFN statement, the default 3203-5 UCS image (AN) is loaded from standard image tables provided by the utility. MVS/370 Utilities IEBCOHPR PROGRAM IEBCOMPR is 8 data set utility used to compare two sequential or two partitioned data sets at the logical record level to verify a backup copy. Fixed, variable, or undefined records from blocked or unblocked data sets or members can also be compared. Two sequential data sets are considered equal, that is, are considered to be identical, if: • The data sets contain the same number of records, and, • Corresponding records and keys are identical. Two partitioned data sets are considered equal if: • Corresponding members contain the same number of records. • Note lists are in the same position within corresponding members. • Corresponding records and keys are identical. If all of these conditions are not met for a specific type of data set, an unequal comparison results. If records are unequal, the record and block numbers, the names of the DD statements that define the data sets, and the unequal records are listed in a message data set. Ten successive unequal comparisons terminate the job step unless a user routine is provided to handle error conditions. Partitioned data sets can be compared only if all the names in one or both of the directories have counterpart entries in the other directory. The comparison is made on members identified by these entries and corresponding user data. Figure 11 shows the directories of two partitioned data sets. Directory 2 contains corresponding entries for all the names in Directory 1; therefore, the data sets can be compared. Directory 1 ABCDGL Figure 11. Partitioned Directories Whose Data Sets Can Be Compared Using IEBCOMPR Figure 12 on page 28 shows the directories of two partitioned data sets. Each directory contains a name that has no corresponding entry in the other directory; therefore, the data sets cannot be compared, and the job step is terminated. User exits are provided for optional user routines to process user labels, handle error conditions, and modify source records. See Appendix A, "Exit Routine linkage" on page 438 for a discussion of the linkage conventions to be followed when user routines are used. IEBCOMPR Program 27 Directory 2 ABF';li H1J Figure 12. Partitioned Directories Whose Data Sets Cannot Be Compared Using IEBCOMPR INPUT AND OUTPUT IEBCOMPR uses the following input: • Two sequential or two partitioned data sets to be compared. • A control data set that contains utility control statements. This data set is required if the input data sets are partitioned or if user routines are used. IEBCOMPR produces as output a message data set that contains informational messages (for example, the contents of utility control statements), the results of comparisons, and error messages. RETURN CODES IEBCOMPR returns a code in register 15 to indicate the results of program execution. The retu~n codes and their meanings are listed below. Codes Meaning 00 (00 hex) Successful completion. OS (OS) An unequal 12 (OC) An unrecoverable error exists. terminated. 16 (10) A user routine passed a return code of 16 to IEBCOMPR. The job step is terminated. compa~ison. Processing continues. The job step is Figure 13. IEBCOMPR Return Codes CONTROL I 28 IEBCOMPR is controlled by job control statements and utility control statements. The job control statements are required to execute or invoke IEBCOMPR and to define the data sets that are used and produced by IEBCOMPR. The utility control statements are used to indicate the input data set organization (that is, sequential or partitioned), to identify any user routines that may be provided, and to indicate whether user labels are to be treated as data. MVS/370 Utilities JOB CONTROL STATEMENTS Figure 14 shows the job control statements for IEBCOMPR. One or both of the input data sets can be passed from a preceding job step. Input data sets residing on different device types can be compared. Input data sets with a sequential organization written at different densities can also be compared. statement Use JOB Initiates the job. EXEC Specifies the program name (PGM=IEBCOMPR) or, if the job control statements reside in a procedure library, the procedure name. SYSPRINT DO Defines a sequential message data set, which can be written to a system output device, a tape volume, or a direct access volume. SYSUTI DD Defines an input data set to be compared. SYSUT2 DO Defines an input data set to be compared. SYSIN DO Defines the control data set or specifies DUMMY if the input data sets are sequential and no user routines are provided. The control data set normally resides in the input stream; however, it can be defined as a member within a library of partitioned members. Figure 14. Job Control Statements for IEBCOMPR The SYSPRINT DD statement must be present for each use of IEBCOMPR. The block size specified in the SYSPRINT DD statement must be a multiple of 121. . The SYSIN DD statement is required. The block size specified in the SYSIN DD statement must be a multiple of 80. The logical record lengths of the input data sets must be identical; otherwise, unequal comparisons result. The block sizes of the input data sets can differ; however, block sizes must be multiples of the logical record length. IEBCOMPR Program 29 UTILITY CONTROL STATEMENTS The utility control statements used to control IEBCOMPR are: statement Use COMPARE Indicates the organization of a data set. EXITS Id~ntifies LABELS Indicates whether user labels are to be treated as data by IEBCOMPR. user exit routines to be used. Figure 15. IEBCOMPR Utility Control Statements Continuation requirements for utility control statements are described in "Continuing Utility Control Statements" on page 5. COMPARE Statement The COMPARE statement is used to indicate the organization of .data sets to be compared. The COMPARE statement, if included, must be the first utility control statement. COMPARE is required if the EXITS or LABELS statement is used or if the input data sets are partitioned data sets. The format of the COMPARE statement is: I[labell COMPARE TVPORG=Cpslpo) EXITS Statement The EXITS statement is used to identify any user exit routines to be used. If a user exit routine is used, the EXITS statement is required. If more than one valid EXITS statement is included, all but the last EXITS statement are ignored. For a discussion of the processing of user labels as data set descriptors, see Appendix C, "Processing User Labels" on page 446. The format of the EXITS statement is: [labell EXITS [INHDR=routinename] [,INTLR=routinename] t,ERROR=routinename] [,PRECOMP=routinename] LABELS statement The LABELS statement specifies whether user labels are to be treated as data by IEBCOMPR. For a discussion of this option, refer to Appendix C, "Processing User Labels" on page 446. The format of the LABELS statement is: I[label] LABELS [DATA={YESINOIALLIONLY)] Note: LABELS DATA=NO must be specified to make IBM standard/ user label (SUL)_.exits inactive when input/output data sets with nonstandard labels (NSL) are to be processed. If more than one valid LABELS statement is included, all but the last LABELS statement are ignored. Parameters Applicable Control Statements DATA LABELS Description of Parameters DATA={YESINOIALLIONLY) specifies whether user labels are to be treated as data. The values that can be coded are: YES NO ALL ONLY ERROR EXITS specifies that any user labels that are not rejected by a user's label processing routine are to be treated as data. Processing of labels as data stops in compliance with standard return codes. YES is the default. specifies that user labels are not to be treated as data. specifies that all user labels are to be treated as data. A return code of 16 causes IEBCOMPR to complete processing of the remainder of the group of user labels and to terminate the job step. specifies that only user header labels are to be treated as data. User header labels are processed as data regardless of any return code. The job terminates upon return from the OPEN routine. ERROR=routinename specifies the name of the routine that is to receive control after each unequal comparison for error handling. If this parameter is omitted and ten consecutive unequal comparisons occur while IEBCOMPR is comparing sequential data sets, processing is terminated; if the input data sets are partitioned, processing continues with the next member. IEBCOMPR Program 31 Parameters Applicable Control statements INHDR EXITS INHDR=routinename specifies the name of the routine that processes user input header labels. INTlR EXITS INTLR=routinename specifies the name of the routine that processes user input trailer labels. PRECOMP EXITS PRECOMP=routinename specifies the name of the rQutine that processes logical records (physical blocks in the case of variable spanned (VS) or variable blocked spanned (VBS) records longer than 32K bytes) from either or both of the input data sets before they are compared. TYPORG COMPARE TYPORG={Pslpo} specifies the organization of the input data sets. The values that can be coded are: Description of Parameters PS PO specifies that the input data sets are sequential data sets. This is the default. specifies that the input data sets are partitioned data sets. IEBCOMPR EXAMPLES The examples in Figure 16 illustrate some of the uses of IEBCOMPR. The numbers in the "Example" column refer to examples that follow. Examples that use disk or tape in place of actual device numbers must be changed before use. See "DASD and Tape Device Support" on page 3 for valid device number notation. Operation Data Set Organization Devices Comments COMPARE Sequential 9-track Tape No user routines. input. Blocked 1 COMPARE Sequential 7-track Tape No user routines. input. Blocked 2 COMPARE Sequential 7-track Tape and 9-track Tape User routines. Blocked input. Different density tapes. Figure 16 (Part 1 of 2). IEBCOMPR Example Directory 32 MVS/370 Utilities Example 3 operation Data set organization COMPARE Example Devices Comments Sequential Card Reader, 9-track Tape No user routines. input. Blocked 4 COMPARE Partitioned Disk No user routines. input. Blocked 5 COPY (using IEBCOPY) and COMPARE Sequential 9-track Tape No user routines. Blocked input. Two job steps; data sets are passed to second job step. 6 COPY (using IEBCOPY) and COMPARE Partitioned Disk User routine. Blocked input. Two job steps; data sets are passed' to second job step. 7 Figure 16 (Part 2 of 2). IEBCOMPR Example Directory IEBCOHPR EXAMPLE 1 In this example, two sequential data sets that reside on 9-track tape volumes are to be compared. //TAPETAPE JOB EXEC //SYSPRIHT DD //SYSUTl DD // // // //SYSUT2 DD // // //SYSIH DD 091660,SMITH PGM=IEBCOMPR SYSOUT=A UNIT=tape,lABEl=(,Hl), DCB=(RECFM=FB,lRECl=80,BlKSIZE=2000), DISP=(OlD,KEEP),YOlUME=SER=001234 UHIT=tape,lABEl=(,Hl),DISP=(OlD,KEEP), DCB=(RECFM=FB,lRECl=80,BlKSIZE=1040), YOlUME=SER=001235 DUMMY /* Because no user routines are used and the input data sets have a sequential organization, utility control statements are not necessary. The job control statements are discussed below: which resides on an • SYSUTl DD defines an input data unlabeled, 9-track tape volume. • SYSUT2 DD defines an input data set, which resides on an unlabeled, 9-track tape volume. • SYSIH DD defines a dummy data set. set~ IEBCOMPR Program 33 IEBCOMPR EXAMPLE 2 , In this example, two sequential data sets that reside on 7-track tape volumes are compared. //TAPETAPE // //SYSPRINT //SYSUTI JOB EXEC DD DD // // //SYSUT2 DD // // //SYSIN DD COMPARE lABELS 09#660,SMITH PGM=IEBCOMPR SYSOUT=A DSNAME=SETl,lABEl=(2,SUl),DISP=(OlD,KEEP), VOl=SER=001234,DCB=(DEN=2,RECFM=FB,lRECl=80, BlKSIZE=2000,TRTCH=C),UNIT=3400 DSNAME=SET2,lABEl=(,SUl),DISP=(OlD,KEEP), VOl=SER=001235,DCB=(DEN=2,RECFM=FB,lRECl=80, BlKSIZE=2000,TRTCH=C),UNIT=3400 * TYPORG=PS DATA=ONlY The control statements are discussed below: • SYSUTI DD defines an input data set, SETI, which resides on a labeled, 7-track tape volume. The blocked data set was originally written at a density of 800 bits per inch (DEN=2) with the data converter on (TRTCH=C). • SYSUT2 DD defines an input data set, SET2, which is the first or only data set on a labeled, 7-track tape volume. The blocked data set was originally written at a density of 800 bits per inch (DEN=2) with the data converter on (TRTCH=C). • SYSIN DD defines the control data set, which follows in the input stream. • COMPARE TYPORG=PS specifies that the input data sets are sequentially organized. • LABELS DATA=ONlY specifies that user header labels are t~ be treated as data and compared. All other labels on the tape are ignored. IEBCOMPR EXAMPLE 3 In this example, two sequential data sets written at different densities on different tape units are compared. //TAPETAPE // //SYSPRINT //SYSUTI JOB EXEC DD DD // // //SYSUT2 DD // // //SYSIN DD COMPARE EXITS LABELS 34 MVS/370 Utilities 09#660,SMITH PGM=IEBCOMPR SYSOUT=A DSNAME=SETl,lABEL=(,SUL),DISP=(OlD,KEEP), VOl=SER=001234,DCB=(DEN=1,RECFM=FB,lRECL=80, BlKSIZE=320,TRTCH=C),UNIT=3400 DSNAME=SET2,LABEl=(,SUL),DISP=(OlD,KEEP), DCB=(RECFM=FB,LRECL=80,BLKSIZE=640), . UNIT=tape,VOlUME=SER=OOI235 *TYPORG=PS INHDR=HDRS,INTlR=TlRS DATA=NO The control statements are discussed below: • SYSUTI DD defines an input data set, SETI, which is the first or only data set on a labeled, 7-track tape volume. The blocked data set was originally written at a density of 556 bits per inch (DEN=2) with the data converter on (TRTCH=C). • SYSUT2 DD defines an input data set, SET2, which is the first or only blocked data set on a labeled tape volume. this example, assume SYSUT2 is on a 9-track tape drive. • SYSIN DD defines the control data set, which follows in the input stream. • COMPARE TYPORG=PS specifies that the input data sets are sequentially organized. • EXITS identifies the names of routines to be used to process user input header labels and trailer labels. • LABELS DATA=NO specifies that the user input header and trailer labels for each data set are not to be compared. In IEBCOHPR EXAMPLE 4 In this example, two sequential data sets (card input and tape input) are compared. //CARDTAPE JOB // EXEC //SYSPRINT DD //SYSIN DD //SYSUT2 DD // // //SYSUTI DD 091660,SMITH PGM=IEBCOMPR SYSOUT=A DUMMY UNIT=tape,VOLUME=SER=OOI234,LABEL=(,Nl), DCB=(RECFM=FB,lRECl=80,BlKSIZE=2000), DISP=(OLD,KEEP) DATA (input card data set) /* The control statements are discussed below: • SYSIN DD defines a dummy control data set. Because no user routines are provided and the input data sets are sequential, utility control statements are not necessary. • SYSUT2 DD defines an input data set, which resides on an unlabeled, 9-track tape volume. • SYSUTI DD defines an input data set (card input). IEBCOMPR Program 35 IEBCOMPR EXAMPLE 5 In this example, two partitioned data sets are compared. //DISKDISK // //SYSPRINT //SYSUTI JOB EXEC DD DD // // //SYSUT2 DD // // //SYSIN DD COMPARE 09#660,SMITH PGM=IEBCOMPR SYSOUT=A DSNAME=PDSSETl,UNIT=disk,DISP=SHR, DCB=(RECFM=FB,lRECl=80,BlKSIZE=2000), VOlUME=SER=111112 DSNAME=PDSSET2,UNIT=disk,DISP=SHR, DCB=(RECFM=FB,lRECl=80,BlKSIZE=2000), VOlUME=SER=111113 *TYPORG=PO The control statements are discussed below: • SYSUTI DD defines an input partitioned data set, PDSSETI. The blocked data set resides on a disk volume. • SYSUT2 DD defines an input partitioned data set, PDSSET2. The blocked data set resides on a disk volume. • SYSIN DD defines the control data set, which follows in the input stream. • COMPARE TYPORG=PO indicates that the input data sets are partitioned. IEBCOMPR EXAMPLE 6 In this example, a sequential data set is copied and compared in two job steps. //TAPETAPE //STEPA //SYSPRINT //SYSUTI JOB EXEC DD DD 00 09#660,SMITH PGM=IEBCOPY SYSOUT=A DSN=COPYSETl,UNIT=tape, DISP=(OlD,PASS), DCB=(RECFM=FB,lRECl=80,BlKSIZE=640), lABEl=(,Sl), VOlUME=SER=001234 DSNAME=COPYSET2,OISP=(,PASS),lABEl=(,Sl), DCB=(RECFM=FB,lRECl=80,BlKSIZE=640), UNIT=tape, VOlUME=SER=001235 DUMMY EXEC DO DD DO DD PGM=IEBCOMPR SYSOUT=A DSNAME=*.STEPA.SYSUTl,DISP=(OlD,KEEP) DSNAME=*.STEPA.SYSUT2,DISP=(OlD,KEEP) DUMMY // // // // //SYSUT2 DD // // // //SYSIN /* //STEPB //SYSPRINT //SYSUTI //SYSUT2 //SYSIN /* 36 MVS/370 Utilities The first job step copies the data set and passes the original and copied data sets to the second job step. The second job step compares the two data sets. The control statements for the IEBCOMPR job step are discussed below: • SYSUTI DD defines an input data set passed from the preceding job step (COPYSETl). The data set resides on a labeled, 9-track tape volume. • SYSUT2 DO defines an input data set passed from the preceding job step. (COPYSET2). The data set, which was created in the preceding job step, resides on a labeled, 9-track tape volume. • SYSIN DD defines a dummy control data set. Because the input is sequential and no user exits are provided, no utility control statements are required. IEBCOHPR EXAMPLE 7 In this example, a partitioned data set is copied and compared in two job steps. The example follows: //DISKDISK //STEPA //SYSPRIHT //SYSUTl JOB EXEC DD DD // // //SYSUT2 // // //SYSUT3 //SYSUT4 //SYSIN DD 091660,SMITH PGM=IEBCOPY SYSOUT=A DSNAME=OLOSET,UHIT=disk,DISP=SHR, VOlUME=SER=111112, DCB=(RECFM=FB,lRECl=80,BlKSIZE=640) DSHAME=HEWMEMS,UHIT=disk,DISP=(,PASS), VOlUME=SER=111113,SPACE=(TRK,(S,S,S», DCB=(RECFM=FB,lRECl=80,BlKSIZE=640) UHIT=SYSDA,SPACE=(TRK,(l» UHIT=SYSDA,SPACE=(TRK,(l» DD DD DD * COpy OUTDD=SYSUT2,IHDD=SYSUTl SELECT MEMBER=(A,B,D,E,F) /* //STEPB EXEC PGM=IEBCOMPR //SYSPRIHT DD SYSOUT=A //SYSUTl DD DSHAME=OLDSET,DISP=(OlD,KEEP) //SYSUT2 DD DSHAME=HEWMEMS,DISP=(OlD,KEEP) //SYSIH DO * COMPARE TYPORG=PO EXITS ERROR=SEEERROR The first job step copies the data set and passes the original and copied data sets to the second job step. The second job step compares the two data sets. The control statements for the IEBCOMPR job step are discussed below: • SYSUTl DD defines a blocked input data set (OlDSET) that is passed from the preceding job step. The data set resides on a disk volume. • SYSUT2 DD defines a blocked input data set (HEWMEMS) that is passed from the preceding job step. The data set resides on a disk volume. IEBCOMPR Program 37 • SYSUT3 and SYSUT4 define temporary system data sets to be used for work files during IEBCOPY. These are not passed to IEBCOMPR. • SYSIN DD defines the control data set, which follows in the input stream. • COMPARE TYPORG=PO specifies partitioned organization. • EXITS specifies that a user error routine, SEEERROR, is to be used. Because the input data set names are not identical, the data sets can be retrieved by their data set names. 38 MVS/370 Utilities IEBCOPV PROGRAM IEBCOPY is a data set utility used to copy one or more partitioned data sets or to merge partitioned data sets. A partitioned data set that is copied to a sequential data set is said to be unloaded. The sequential data set created by an unload operation can be copied to any direct access storage device. When one or more data sets created by an unload operation are used to re-create a partitioned data set, this is called a load operation. Specific members of a partitioned or unloaded data set can be selected for, or excluded from, a copy, unload, or load process. IEBCOPY can be used to: • Create a backup copy of a partitioned data set. • Copy one or more data sets per copy operation. • Copy one partitioned data set to a sequential data set (unload). • Copy one or more data sets created by an unload operation to any direct access device (load). • Select members from a data set to be copied, unloaded, or loaded. • Replace identically named members on data sets (except when unloading). • Replace selected data set members. • Rename selected members. • Exclude members from a data set to be copied, unloaded, or loaded. • Compress partitioned data sets in place (except when the data set is an unloaded data set). • Merge data sets (except when unloading). • Re-create a data set that has exhausted its primary, secondary, or directory space allocation. • Alter load modules in place. • Copy and reblock load modules. In addition, IEBCOPY automatically lists the number of unused directory blocks and the number of unused tracks available for member records in the output partitioned data set. If LIST=NO is coded (see "COPY Statement" on page 51), the names of copied, unloaded, or loaded members listed by the input data set are suppressed. CREATING A BACKUP COpy IEBCOPY can be used to create a backup copy of a partitioned data set by copying (unloading) it to a sequential data set. A partitioned data set can be totally or partially unloaded to any tape volume or direct access device supported by BSAM. A data set is unloaded when physical sequential organization space allocation is specified for the output data set on a direct access device or when the output data set is a tape volume. To unload more than one partitioned data set to the same volume in one execution of IEBCOPY,multiple copy operations must be used IEBCOPY Program 39 and multiple sequential data sets must be allocated on the same volume. A data set with a physical sequential organization resulting from an unload operation can, in turn, be copied. No output tape file will be created if the input is a null file. COPYING DATA SETS IEBCOPY can be used to copy a partitioned data set, totally or in part, from one direct access volume to another. In addition, a data set can be copied to its own volume, provided its data set name is changed. If the data set name is not changed, the data set is compressed in place. Note that copied members are not reordered. Members are copied in the order in which they exist on the original data set. If the members are to be reordered, IEHMOVE can be used for·the copy operation (see "IEHMOVE Program" on page 361). COPYING OR LOADING UNLOADED DATA SETS Data sets can be copied or loaded, totally or in part, from one or more direct access volumes or tape volumes to a single direct access volume. To copy or load more than one input partitioned data set, specify more than one input data set with the COPY statement. The input data sets are copied or loaded in the order in which they are specified. SELECTING MEMBERS TO BE COPIED, UNLOADED, OR LOADED Members can be selected from one or more input data sets. Selected members can be copied, unloaded, or loaded from the input data sets specified on the INDO statement preceding a SELECT statement. Selected members are searched for in a low-to-high (a-to-z) collating sequence, regardless of the order in which they are specified; however, they are copied in the same physical sequence in which they appear on the input partitioned data set. Once a member of a data set has been found, no search is made for it on any subsequent input data set. Similarly, when all the selected members are found, the copy or load step is terminated even though all of the input data sets may not have been searched. For example, if members A and B are specified and A is found on the first of three input data sets, it is not searched for again; if B is found on the second input data set, the copy or load operation is successfully terminated after the second input data set has been processed, although both A and B may also exist on the third input data set. However, if the first member name is not found on the first input data set, the search for that member stops and the first data set is searched for the second member. This process continues until the first input data set has been searched for all specified members. All the members that were found on the lnput data set are then processed for copying, unloading, or loading to the output data set. This process is repeated for the second input data set (except that the members that were found on the first input data set are not searched for again). Note: Only one data set can be processed if an unload operation is to be performed. Multiple unload operations are allowed per job step; multiple INDO statements are not allowed per unload operation. 40 MVS/370 Utilities Copying Members That Have Alias Names When copying members that have alias names, note the following: • When the main member and its alias names are copied, they exist on the output partitioned data set in the same relationship they had on the input partitioned data set. • When members with alias names are copied using the SELECT or EXCLUDE member option, those alias names that are to be selected or excluded must be explicitly named. The rules for replacing or renaming members apply to both aliases and members; no distinction is made between them. However, the replace (R) option (on the SELECT statement) does not apply to an unload operation. REPLACING IDENTICALLY NAMED MEMBERS In many copy and load operations, the output partitioned data set may contain members that have names identical to the names of the input partitioned data set members to be copied or loaded. When this occurs, the user may specify that the identically named members are to be copied from the input partitioned data set to replace existing members. The replace option allows an input member to override an existing member on the output partitioned data set with the same name. The pointer in the output partitioned data set directory is changed to point to the copied or loaded member. Ifl the replace option is not specified, input members are not copied when they have the same name as a member on the output partitioned data set. The replace option can be specified on the data set or member level. This level is specified on a utility control statement. When replace (R) is specified on the data set level with a COpy or INDO statement, the input data is processed as follows: • In a full copy or load process, all members on an input partitioned data set are copied to an output partitioned data set; members whose names already exist on the output partitioned data set are replaced by the members copied or loaded from the input partitioned data set. • In a selective copy or load process, all selected input members will be copied to the output data set, replacing any identically named output data set members. • In an exclusive copy process, all nonexcluded members on input partitioned data sets are copied or loaded to an output partitioned data set replacing those duplicate named members on the output partitioned data set. When replace is specified on the member level (specified as R on a SELECT statement), only selected members for which replace is specified are copied or loaded, and identically named members on the output partitioned data set are replaced. There are differences between full, selective, and exclusive copy or' load processing. These differences should be remembered when specifying the replace option and all of the output data sets contain member names common to some or all of the input partitioned data sets being copied or loaded. These differences are: • When a full copy or load is performed, the output partitioned data set contains the replacing members that were on the last input partitioned data set copied. IEBCOPY Program 41 • When a selective copy or load is performed, the output partitioned data set contains the selected replacing members that were found on the earliest input partitioned data set searched. Once a selected member is found, it is not searched for again; therefore, once found, a selected member is copied or loaded. If the same member exists on another input partitioned data set, it is not searched for, and hence, not copied or loaded. • When an exclusive copy or load is performed, the output partitioned data set contains all members, except those specified for exclusion, that were on the last input partitioned data set copied or loaded. REPLACING SELECTED HEHBERS The user may specify the replace (R) option on either the data set or the member level when members are being selected for copying or loading. If the replace option is specified on the data set level, all selected members found on the designated input data sets replace identically named members on the output partitioned data set. This is limited by the fact that once a selected member is found it is not searched for again. If the replace option is specified on the member level, the specified members on the input data set replace identically named members on the output partitioned data set. Once a member is found it is not searched for again. (See "Replacing Identically Named Members" on page 41.) RENAMING SELECTED MEMBERS Selected members on input data sets can be copied and renamed on the output data set; the input and output data sets must not be the same. However, in the case of a copy or load operation, if the new name is identical to a member name on the output data set, the input member is not copied or loaded unless the replace option is also specified. See "SELECT Statement" on page 54for information on renaming selected members. Renaming is not physically done to the input data set directory entry. The output data set directory, however, will contain the new name. EXCLUDING MEMBERS FROM A COPY OPERATION Members from one or more input data sets can be excluded from a copy, unload, or load operation. The excluded member is searched for on every input data set in the copy, unload, or load operation and is always omitted. Members are excluded from the input data sets named on an INDD statement that precedes the EXCLUDE statement. (See "COPY Statement" on page 51 and"EXCLUDE Statement" on page 56.) The replace option can be specified on the data set level in an exclusive copy or load, in which case, nonexcluded members on the input data set replace identically named members on the output data set. See "Replacing Identically Named Members" on page 41for more information on the replace option. COMPRESSING A DATA SET A compressed data set is one that does not contain embedded, unused space. After copying or loading one or more input partitioned data sets to a ng~ output partitioned data set (by means of a selective, exclusive, or full copy or load that does not involve replacing members), the output partitioned data set contains no embedded, unused space. 42 MVS/370 Utilities To make unused space available, either the entire data set must be scratched or it must be compressed in place. A compressed version can be created by specifying the same data set for both the input and the output parameters in a full copy step. A backup copy of the partitioned data set to be compressed in place should be kept until successful completion of an in-place compression is indicated (by an end-of-job message and a return code of 00). An in-place compression does not release extents assigned to the data set. Inclusion, exclusion, or renaming of selected members cannot be done during the compression of a partitioned data set. When the same ddname is specified for the INOO and OUTOO keywords (see "COPY Statement" on page 51) and the 00 statement specifies a block size different from the block size specified in the OSCB, the OSCB block size is overridden; however, no physical reblocking or deblocking is performed by IEBCOPY. For information on reblocking load modules, see "Copying and Reblocking Load Modules." MERGING DATA SETS A merged data set is one to which an additional member is copied or loaded. It is created by copying or loading the additional members to an existing output partitioned data set; the merge operation--the ordering of the output partitioned data set's directory-is automatically performed by IEBCOPY. If there is a question about whether or not enough directory blocks are allocated to the output partitioned data set to which an input data set is being merged, the output partitioned data set should be re-created with additional directory space prior to the merge operation. RE-CREATING A DATA SET A data set can be re-created by copying or loading it and allocating a larger amount of space than was allocated for the original data set. This application of IEBCOPY is especially useful if insufficient directory space was allocated to a data set. Space cannot be allocated in this manner for an existing partitioned data set into which members are being merged. ALTERING LOAD MODULES IN PLACE IEBCOPY can be used to alter load modules in place. Alter-in-place reads modules written by earlier runs of the linkage editor and inserts new relocation dictionary (RLO) counts. For modules copied by a program other than the linkage editor or IEBCOPY, alter-in-place can replace an erroneous RLD count by correcting POS directory entries and control records. For more information, see "Inserting RLD Counts" on page 45. Only members of a partitioned data set may be altered. For the procedure used to invoke the alter-in-place function, see "ALTERMOO Statement" on page 53. COPYING AND REBLOCKING LOAD MODULES IEBCOPY can be used to copy and reblock load modules in a data set library. Copy/reblock copies a sequential (unloaded) data set or selected members from a partitioned data set onto a new or existing output partitioned data set. The text records, RLD, and control records are rebuilt; all other records are copied unchanged. For a description of how the RLD count is inserted, see "Inserting RLD Counts" on page 45. IEBCOPY Program 43 The reblock function allows you to specify: • A new maximum block size for compatibility with other systems or programs • A minimum block size to improve DASD track utilization. The minimum block size specifies the smallest block which should be written on the end of a track. The load modules will be blocked such that they can be re-link-edited and/or loaded by the loader, with the ability to include the whole module or only the indicated CSECTs. Load libraries may be copied to devices with a larger or smaller block size than the input block size. IEBCOPY will determine the amount of space remaining on a track before assigning a new block size, and if this amount is less than the output block size, it will attempt to determine whether a smaller block can be written to utilize the remaining space on the track. The maximum block size which can be handled by the linkage editor is 18K. For the procedure used to copy and reblock load modules, see "COPYMOD Statement" on page 53. LOAD MODULE REQUIREMENTS IEBCOPY requires that the members of the input data set which are to be altered or copied/reblocked must qualify as load modulesj that is, they must possess characteristics such that they can be loaded by the system fetch routine (IEWFETCH) or re-link-edited by the linkage editor. Members which are not recognized as load modules will be unaffected by the alter-in-place or copy/reblock operation. Load modules in either overlay or scatter-load format and modules which were link-edited with the noneditable (HE) attribute or with an assigned origin other than zero cannot be altered in place. For more information on module format and attributes, see Linkage Editor and Loader. The PDS directory entry for a load module must meet the following requirements: 1. The entry must be at least 34 bytes long (standard length for entries is only 12 bytes). 2. Bytes 26 and 27 must contain the length of the first text record, and this length must be equal to the length specified by the first control record. Any record in a load module which precedes the first control record must be one of the following: • A symbol record (SYM) • A composite external symbol dictionary record (CESD) • An external symbol dictionary record (ESD) • A scatter/translation record (STT) • A CSECT identification record (IDR) RLD and control records must be: 44 • An RLD record: • A control record: MVS/370 Utilities '0000 xx10'B in byte 1, '0000 xx01'B in byte 1, • An RLD and control record: '0000 xx11'B in byte 1, or • The length specified by the value in bytes 5-6 plus the value in bytes 7-8 plus 16. Control records must contain the length of the following text record in bytes 15-16. The sequence of records following a control or RLD/control record must be: • Text, End-of-Module/End-of-Segment, • Text, RLD, End-of-Module/End-of-Segment, • Text, RLD/control, • Text, RLD, (RLD, • Text, RLD, (RLD, . . • ), RLD/control. .), End-of-MQdule/End-of-Segment, or INSERTING RLD COUNTS Each block of text in a load module is preceded by a control record and may be followed by one or more RlD andlor control records. These records are variable length with a maximum of 256 bytes. They may contain only RLD data or only control data or both RlD and control data. The term 'number' or 'count' of RLD records is used to mean the number of these records containing RLD data/control data which follow a block of text in a module library. The system fetch routine (IEWFETCH) executes fewer start I/O instructions if the number of these records following a block of text is known. The number of RLD records following each block of text is inserted into the control record which immediately precedes that block of text. In addition, the number of RLD records which follow the first block of text for a load module is inserted into the PDS directory entry for that module. The linkage editor inserts RlD counts in the control records and in the PDS directory entries. INPUT AND OUTPUT IEBCOPY uses the following input: • An input data set that contains the members to be copied, loaded, merged, altered,reblocked, or unloaded to a sequential data set. • A control data set that contains utility control statements. The control data set is required for a copy, unload, load, or merge operation. IEBCOPY does not support VIa (virtual 1/0) data sets. IEBCOPY produces the following output: • An output data set, which contains the copied, merged, altered, reblocked, unloaded, or. loaded data. The output data set is either a new data set (from a copy, reblock, load, or unload) or an old data set (from a merge, compress-in-place, copy, alter, or load). • A message data set, which contains informational messages (for example, the names of copied, unloaded, or loaded members) and error messages, if applicable. • Spill data sets, which are t~mporary data sets used to provide space when not enough virtual storage is available for the input and/or output partitioned data set directories. These data sets are opened only when needed. IEBCOPY Program 45 RETURN CODES IEBCOPY returns a code in register 15 to indicate the results of program execution. The return codes and their meanings are listed below. Codes Meaning 00 (00 hex) Successful completion. 04 (04) A condition exists from which recovery may be possible. 08 (081 An unrecoverable error exists. terminated. The job step is Figure 17. IEBCOPY Return Codes CONTROL IEBCOPY is controlled by job control statements and utility control statements. JOB CONTROL STATEMENTS Figure 18 on page 47 shows the job control statements for IEBCOPY. PARM Information on the EXEC Statement The EXEC statement for IEBCOPY can contain PARM information that is used to define the number of bytes used as a buffer. The PARM parameter can be coded: PARM='SIZE=nnnnnnnn[K], The nnnnnnnn can be replaced by 1 to 8 decimal digits. causes the nnnnnnnn to be multiplied by 1024 bytes. The K If PARM is not specified, or a value below the minimum buffer size is specified, IEBCOPY defaults to the minimum. Minimum buffer size is twice the maximum of the input or output block sizes or four times the input or output track capacities, whichever is larger. The maximum buffer size that can be specified is equal to the storage remaining in the storage area gotten when IEBCOPY issues a conditional one-megabyte storage request (GETMAIN) for work areas and buffers. If the value specified in PARM exceeds this maximum, IEBCOPY defaults to the maximum. A request for too much buffer storage may result in increased system paging because of a lack of available system page frames. This will degrade overall system performance. SYSPRINT DD Statement The SYSPRINT DD statement is required and must define a data set with fixed blocked or fixed records. The block size for the SYSPRINT data set must be a multiple of 121. Any blocking factor may be specified, with a maximum allowable block size of 32767 bytes. 46 MVS/370 Utilities statement Use JOB Initiates the job. EXEC Specifies the program name (PGM=IEBCOPY) or, if the job control statements reside in the procedure library, the procedure name. This statement can include optional PARM information to define the size of the buffer to be used; see "PARM Information on the EXEC Statement." SYSPRINT DD Defines the sequential message data set used for listing statements and messages. This data set can be written to a system output device, a tape volume, or a direct access volume. anynamel DD Defines an input partitioned data set. These DO statements can describe partitioned data sets on direct access devices or sequential data sets, created as a result of unload operations, on tape or direct access devices. The data set can be defined by a data set name, as a cataloged data set, or as a data set passed from a previous job step. anyname2 DD Defines an output partitioned data set. These DO statements can describe partitioned data sets on direct access devices or sequential data sets, created as a result of unload operations, on tape or direct access devices. SYSUT3 DD Defines a spill data set on a direct access device. SYSUT3 is used when there is no space in virtual storage for some or all of the current input partitioned data set's directory entries. SYSUT3 may also be used when not enough space is available in virtual storage for retaining information during table sorting. SYSUT4 DD Defines a spill data set on a direct access device. SYSUT4 is used when there is no space in virtual storage for the current output partitioned data set's merged directory and the output partitioned data set is not new. SYSIN DD Defines the control data set. The control data set normally resides in the input stream; however, it can reside on a system input device, a tape volume, or a direct access volume. Figure 1&. Job Control Statements for IEBCOPY anynamel and anyname2 DD statements DO statements are required for input and output data sets. There must be one DO statement for each unique data set used for input and one DO statement for each unique data set used for output in the job step. For an unload operation, only one input data set may be specified for each output data set. Data sets used as input data sets in one copy operation can be used as output data sets in another copy operation, and vice versa. Input data sets cannot be concatenated. The maximum block size for input data sets to be unloaded is 32767. IEBCOPY Program 47 SYSIN DD statement The SYSIN DD statement is required and must define a data set with fixed block or fixed records. The block size for the SYSIN data set must be a multiple of 80. Any blocking factor may be specified, with a maximum allowable block size of 32767 bytes. IEBCOPY UNLOADED DATA SET BLOCK SIZE The block size for unloaded data sets is determined by the following steps: 1. The minimum block size for the unloaded data set is calculated as being equal to the larger of: • 284 bytes, or • 20 bytes + the block size and key length of the input data set. 2. If a user-supplied block size was specified, and it is larger than 284 bytes, it will be passed to step 3. Otherwise, the minimum size is passed. 3. The block size value passed from step 2 is then compared with the largest block size acceptable to the output de~ice. If the output device capacity is less than the block size passed in step 2, the unloaded data set block' size is set to the maximum allowed for the output device. 4. The logical record length (LRECl) is then set to the minimum block size calculated in step 1 minus 4 bytes. 5. The block size is stored in the first control record (COPYRl) and used at load time. Block size of the unloaded data set must not be changed before the data set is loaded. Be sure to specify the desired block size at unload time if it is other than that taken by default as indicated above. For unload and load operations, requests are handled in the same way as for a copy operation. Fixed or variable records can be reblocked. Reblocking or deblocking is done if the block size of the input partitioned data set is not equal to the block size of the output partitioned data set. An unloaded partitioned data set will have a variable spanned record format. When an unloaded data set is subsequently loaded, the output data set will have the same characteristics it had before the unload operation, unless specified differently by the user. Figure 19 shows how input record formats can be changed. In addition, any record format can be changed to the undefined format (in terms of its description in the DSCB). Input output Fixed Fixed-Blocked Fixed-Blocked Fixed Variable Variable-Blocked Variable-Blocked Variable Figure 19. Changing Input Record Format Using IEBCOPY System data sets should not be compressed in place unless the subject partitioned data set is made nonsharable. The libraries in which IEBCOPY resides (SYS1.lINKlIB and SYS1.SVClIB) must not be compressed by IEBCOPY unless IEBCOPY is first transferred to a JOBlIB. Space Allocation Sometimes it is necessary to allocate space on spill data sets (SYSUT3 and SYSUT4). The space to be allocated for SYSUT3 depends on the number of members to be copied or loaded. The space to be allocated for SYSUT4 depends on the number of directory blocks to be written to the output data set. To conserve space on the direct access volume, an initial quantity and a secondary quantity for space allocation may be used, as shown in the following SPACE parameter: SPACE=(c,(x,y» The c value should be a block length of SO for SYSUT3 and of 256 for SYSUT4. The x value is the number of blocks in the primary allocation, and the y value is the number of blocks in the secondary allocation. For SYSUT3, x + 15y must be equal to or greater than the number of members in the largest input partitioned data set in the copy operation, multiplied by 1.05. For SYSUT4, x + 15y must be equal to or greater than the number of blocks allocated to the largest output partitioned data set directory in the IEBCOPY job step. For example, if there are 700 members on the largest input partitioned data set, space could be allocated for SYSUT3 as follows: SPACE=(SO,(60,45» However, the total amount of space required for SYSUT3 in the worst case is used only if needed. If space is allocated in this manner for SYSUT4, the user must specify in his SYSUT4 DO statement: DCB=(KEYlEN=S) IEBCOPY ignores all other DCB information specified for SYSUT3 and/or SYSUT4. Multivolume SYSUT3 and SYSUT4 data sets are not supported. The temporary spill data sets mayor may not be opened, depending on the amount of virtual storage available; therefore, the SYSUT3 and SYSUT4 DO statements should always appear in the job stream. Refer to Data Management Services for more information on estimating data set space allocations. Restrictions • IEBCOPY must run from an authorized library because of special storage key requirements for IEBCOPY I/O appendages. • Variable block spanned format data sets are not supported. • VIO is not supported by IEBCOPY for SYSUT4, nor for partitioned input or output data sets. • When merging into or compressing system libraries, do not specify DISP=SHR. The results of a merge into or compress of the current SYS1.lINKlIB or SYS1.SVClIB would be unpredictable. IEBCOPY Program 49 • IEBCOPY does its own buffering; therefore, coding the BUFNO parameter in t~e DCB will cause a JCl error. • Reblocking or deblocking cannot be done if either the input or the output data set has undefined format records, keyed records, track overflow records, note lists, or user TTRNs, or if compress-in-place is specified. load modules, however, may be reblocked using the COPYMOD statement. The compress-in-place function cannot be performed for the following: • An unloaded data set • A data set with track overflow records • A data set with keyed records • A data set for which reblocking is specified in the DCB parameter .' An unmovabl e data set Note: If IEBCOPY creates a copied library (partitioned data set) whose block size is smaller than the logical record length of the original library, a return code of 4 is issued, with message IEB175I. If IEBCOPY is used later to compress-in-place the output library, the operation will fail and this library becomes unusable. UTILITY CONTROL STATEMENTS IEBCOPY is controlled by the following utility control statements: statement Use COPY Indicates the beginning of a COPY operation. ALTERMOD Specifies the load module(s) to be altered in place. COPYMOD Specifies the load moduleCs) to be copied and reblocked. SELECT Specifies which members in the input data set are to be copied. EXCLUDE Specifies members in the input data set to be excluded from the copy step. Figure 20. IEBCOPY Utility Control Statements In addition, when INDD, a COPY statement parameter, appears on a card other than the COPY statement, it is referred to as an INDD statement; it can function as a control statement in this context. Continuation requirements for utility control statements are described in "Continuing Utility Control Statements" on page 5. 50 MVS/370 Utilities COpy statement The COPY statement is required to initiate one or more IEBCOPY copy, unload, or load operations. Any number of operations can follow a single COPY statement; any number of COPY statements can appear within a single job step. IEBCOPY uses a copy operation/copy step concept. 1 A copy operation starts with a COPY statement and continues until either another COpy statement or a COPYMOD or ALTERMOD statement is found, or the end of the control data set is found. Within each copy operation, one or more copy steps are present. Any INDD statement directly following a SELECT or EXCLUDE statement marks the beginning of the next copy step and the end of the preceding copy step within the copy operation. If such an INDD statement cannot be found in the copy operation, then the copy operation consists of only one copy step. Figure 21 shows the copy operation/copy step concept. Two copy operations are shown in the figure: the first begins with the statement containing the name COPOPER1, and the second begins with the statement containing the name COPOPER2. First Copy Operation STEP 1 COPOPER1 COpy SELECT SELECT OUTDD=AA,INDD=ZZ INDD=(BB,CC) INDD=DD INDD=EE MEMBER=(MEMA,MEMB) MEMBER=MEMC EXCLUDE INDD=GG INDD=HH MEMBER=(MEMD,MEMH) COPY SELECT OUTOO=YY,I=(MM,PP),LIST=NO MEMBER=MEMB STEP 2 Second Copy operation STEP 1 STEP 2 COPOPER2 INDD=KK INDO=(LL,NN) Figure 21. Multiple Copy Operations within a Job Step There are two copy steps within the first copy operation shown in Figure 21: the first begins with the COPY statement and continues through the two SELECT statements; the second begins with the first INDO statement following the two SELECT statements and continues through the EXCLUDE statement preceding the second COpy statement. There are two copy steps within the second copy operation: the first begins with the COpy statement and continues through the SELECT statement; the second begins with the INDD statement immediately following the SELECT statement and ends with the same /* (delimiter) statement that ended the copy operation. 1 The same applies to an unload or load operation or step. IEBCOPY Program 51 The format of the COPY statement is: [label] COpy OUTDD=ddname INDD=[(]ddnamel[,ddname2] [,(ddname3,RJ][, ••• ][J] [,LIST=NO] The control statement operation and keyword parameters can be abbreviated to their initial letters; for example, COPY can be abbreviated to C and OUTDO can be abbreviated to O. If there are no keywords other than OUTDD on the COpy card, compatibility with the previous version of the data set is implied. In this case, comments may not be placed on this card. The OUTDO and INDO keyword parameters on COPY statements name DO statements that define data sets to be copied, unloaded, or loaded. The INDO parameter names the DO statement that identifies the input data set. The OUTDO parameter names the DO statement that identifies the output data set. Only one INDD and one OUTDO keyword may be placed on a single card. OUTDD must appear on the COpy statement. When IHDD appears on a separate card, no other operands may be specified on that card. If INDD appears on a separate card, it is not preceded by a comma. The characteristics of the input and output data sets depend on the operation to be performed, as follows: • If a data set is to be copied, the input and output data sets must both be partitioned data sets. • If a data set is to be loaded, the input data set may be either partitioned or sequential; the output data set must be partitioned. • If a data set is to be unloaded, the input data set must be either a partitioned data set or a sequential data set that was created as a result of a previous unload operation. The output data set may reside on either a direct access or tape volume. If the output data set is to reside on a direct access volume, the organization of the data set must be specified as sequential. To specify sequential organization for a direct access data set, specify the SPACE parameter, omitting the directory or index value. If more than one ddname is specified, the input partitioned data sets are processed in the same sequence as that in which the ddnames are specified. A COPY statement must precede a SELECT or EXCLUDE statement when members are selected for or excluded from a copy, unload, or load step. In addition, if an input ddname is specified on a separate INDD statement, it must follow the COPY statement and precede the SELECT or EXCLUDE statement to which it applies. If one or more INDD statements are immediately followed by the /* card or another COPY or COPYMOD or ALTERMOD statement, a full copy, unload, or load is invoked onto the most recent previously specified output partitioned data set. A full copy, unload, or load is invoked only by specifying different input and output ddnames; that is, by omitting the SELECT or EXCLUDE statement from the copy step. 52 MVS/370 Utilities The compress-in-place function is valid for partitioned data sets. Compress-in-place is normally invoked by specifying the same ddname for both the OUTDD and INDD parameters of a COpy statement. If multiple entries are made on the INDD statement, a compress-in-place will occur if one of the input ddnames is the same as the ddname specified by the OUTDD parameter of the COpy statement, provided that SELECT or EXCLUDE is not specified. When a compression is invoked by specifying the same ddname for the INDO and OUTDD parameters, and the DD statement specifies a block size that differs from the block size specified in the DSCB, the DSCB block size is overridden; however, no physical reblocking or deblocking is done by IEBCOPY. ALTERMOD statement The ALTERMOD statement is required to alter load modules in place. The function is designed to read modules which were written by earlier versions of the linkage editor and to insert RLD counts. It can also be used to alter modules which may have an erroneous RLD count--for example, modules which were copied by a program other than the linkage editor or IEBCOPY. Only PDS directory entries and control records will be modified. If the control records are already correct, they will not be rewritten. Members which are not recognized as load modules will not be altered. Load modules in either overlay or scatter-load format and modules which were link-edited with the noneditable (NE) attribute or with an assigned origin other than zero will not be altered. The alter-in-place function may be performed multiple times for the same load module or module library. Altering has no cumulative effect. The format of the ALTERMOD statement is: [label] ALTERMOD OUTDD=ddname [,LIST=NO] OUTDD specifies the partitioned data set which is to be altered. The replace (R) and RENAME functions of IEBCOPY cannot be specified in the same step with ALTERMOD. COPYMOD statement The COPYMOD statement is required to copy, reblock, and alter modules in a library. When copying load modules, the selected members will be copied from the input data set(s) to the output data set. The output data set may be new or it may be an existing load library to which members are to be added. The output data set must be a partitioned data set, and it cannot also be an input data set (reblock-in-place is not permitted). The text records and the RLD/control records will be rebuilt. Other records such as SYM and CESD records will be copied unchanged. IEBCOPY Program 53 Load modules in either overlay or scatter-load format and modules which were link-ed;ted with the noneditable (NE) attribute or with an assigned origin other than zero will be copied, but not reblocked or altered (that is, as if the member was specified with a COpy statement). Members which are not recognized as load modules will be copied, but not reblocked or altered. Note that modules which are not reblocked by COPYMOD cannot be copied to a device which has a track size less than the input block size. They may, however, be re-link-edited with a smaller block size. The replace (R) function may be specified with input ddnames and/or member names to cause like-named modules to be replaced, or it may be omitted to prevent the copying of like-named modules. The rename function may be invoked to specify a new name for the selected member. For more information, see "SELECT Statement." IEBCOPY can unload modules to a sequential data set via the COpy function, and the output of that step can be input to a subsequent COPYMOD step in which the output data set is the same as the input to the unload step. This would also provide a backup copy in the sequential data set. The format of the COPYMOD statement is: [label] COPYMOD OUTDD=ddname ,INDO=[(]ddnamel[,ddname2] [,(ddname3,R)][, ••• ][)] [,MAXBLK=CnnnnnlnnK)] [,MINBLK=CnnnnnlnnK)l [,LIST=NO] INDD specifies the partitioned or sequential (unloaded) data set from which load modules are to be read. OUTDD specifies the partitioned data set to which load modules are to be copied. MAXBLK specifies the maximum block size for records in the output data set. MINBLK specifies the minimum block size for records in the output data set. SELECT Statement The SELECT statement specifies members (or modules, in the case of AlTERMOD or COPYMOD) to be selected from input data sets to be altered, copied, loaded, or unloaded to an output data set. This statement is also used to rename and/or replace selected members on the output data set. More than one SELECT statement may be used in succession, in which case the second and subsequent statements are treated as a continuation of the first. The SELECT statement must follow either a COpy statement that includes an INDD parameter, a COPYMOD statement, or one or more INDD statements. A SELECT statement cannot appear with an EXCLUDE statement in the same copy, unload, or load step, and it cannot be used with a compress-in-place function. When a selected member is found on an input data set, it is not searched for again, regardless of whether the member is copied, unloaded, or loaded. A selected member will not replace an identically named member on the output partitioned data set unless the replace option is specified on either the data set or member level. (For a description of replacing identically named 54 MVS/370 Utilities members, see "Replacing Identically Hamed Members" on page 41 and "Replacing Selected Members" on page 4~.) In addition, unless the replace option is specified, a renamed member will not replace a member on the output partitioned data set that has the same new name as the renamed member. The replace (R) and rename (newname) options cannot be specified with ALTERMOD. The format of the SELECT statement is: [label] SELECT MEMBER: {[(]namel[,name2][, ••• ][)]1 ( { ( n am e 1 , n e~... n a me [ , R1 ) [ , ••• 1 I (namel,newname)[, ••• ll (namel"R)[, ••• ][)]) where: MEMBER: specifies the members to be selected from the input data set. The values that can be coded are: specifies the name of a member that is to be selected in a copy step. Each member name specified within one copy step must be unique; that is, duplicate names cannot be specified as either old names, or new names, or both, under any circumstances. newname specifies a new name for a selected member. The member is copied, unloaded, or loaded to the output partitioned data set using its new name. If the name already appears on the output partitioned data set, the member is not copied unless replacement (R) is also specified. newname cannot be specified with ALTERMOD. R specifies that the input member is to replace any identically named member that exists on the output partitioned data set. The replace option is not valid for an unload operation. R cannot be specified with ALTERMOD. The control statement operation and keyword parameters can be abbreviated to their initial letters; SELECT can be abbreviated to S and MEMBER can be abbreviated to M. To rename a member, the old member name ;s specified in the SELECT statement, followed by the new name and, optionally, the R parameter. When this option is specified, the old member name and new member name must be enclosed in parentheses. When any option within parentheses is specified anywhere in the MEMBER field, the entire field, exclusive of the MEMBER keyword, must be enclosed in a second set of parentheses. IEBCOPY Program 55 EXCLUDE statement The EXCLUDE statement specifies members to be excluded from the copy, unload, or load step. Unlike the selective copy/alter/unload/load, an exclusive copy/alter/unload/load causes all members (or modules, in the case of ALTERMOD or COPYMOD) specified on each EXCLUDE statement to be omitted from the operation. More than one EXCLUDE statement may be used in succession, in which case the second and subsequent statements are treated as a continuation of the first. The EXCLUDE statement must follow either a COPY statement that includes an INDO parameter, an ALTERMOD or COPYMOD statement, or one or more INDD statements. An EXCLUDE statement cannot appear with a SELECT statement in the same copy, unload, or load step; however, both may be used following a COPY statement for a copy or load operation. The EXCLUDE statement cannot be used with a compress-in-place function. The format of the EXCLUDE statement is: EXCLUDE MEMBER=[(]membernamel[,membername2] ••• [)] The control statement operation and keyword parameters can be abbreviated to their initial letters; EXCLUDE can be abbreviated to E and MEMBER can be abbreviated to M. If neither SELECT nor EXCLUDE is specified, the entire data set is copied (a "full copy"). 56 MVS/370 Utilities Parameters INDO Applicable Control statements COPY COPYMOD Description of Parameters INDD=[(]ddnamel[,ddname2][,(ddname3,R)] [, ... specifies ][)] the names of the input partitioned data sets. INDO may, optionally, be placed on a separate line following a COPYMOD or COPY statement containing the OUTDO parameter, another INDO statement, a SELECT statement, or an EXCLUDE statement. These values can be coded: ddname specifies the ddname, which is specified on a DO statement, of an input data set. In the case of COPYMOD, this is the name of a load module. For an unload operation, only one ddname may be specified per COpy statement. If more than one ddname is specified in the case of a copy or load operation, the input data sets are processed in the same sequence as the ddnames are specified. R LIST COpy COPYMOD ALTERMOD specifies that all members to be copied or loaded from this input data set are to replace any identically named members on the output partitioned data set. (In addition, members whose names are not on the output partitioned data set are copied or loaded as usual.> When this option is specified with the INDD parameter, it does not have to appear with the MEMBER parameter (discussed in "SELECT Statement" on page 54) in a selective copy operation. When this option is specified, the ddname and the R parameter must be enclosed in a set of parentheses; if it is specified with more than one ddname in INDD, the entire field, exclusive of the INDO parameter, must be enclosed in a second set of parentheses. LIST=NO specifies that the names of copied members are not to be listed on SYSPRINT at the end of each input data set. Default: The names of copied members are listed. IEBCOPY Program 57 Parameters Applicable Control statements Description of Parameters MAXBlK COPYMOD MAXBlK=(nnnnnlnnKl specifies~he maximum block size for records in the output partitioned data set. MAXBlK is normally used to specify a smaller block size than the default, in order to make the records in the data set compatible with other systems or programs. nnnnn is specified as a decimal number; K indicates that the un value is multiplied by 1024 bytes. MAXBlK may be specified with or without MINBlK. Default: The track size for the output device or 18K, whichever is smaller. If a value greater than 18K (18432) or less than 4K (4096) is specified, the default is used. MEMBER SELECT specifies the members to be selected from the input data set. The values that can be coded for SELECT are: specifies the name of a member that 1s to be selected in a copy step. Each member name specified within one copy step must be unique; that is, duplicate names cannot be specified as either old names, or new names, or both, under any circumstances. If no member name is specified, the entire data set is included in the operation. newname specifies a new name for a selected member. The member is copied, unloaded, or loaded to the output partitioned data set using its new name. If the name already appears on the output partitioned data set, the member is not copied unless replacement (R) is also specified. R 58 MVS/370 Utilities spec if i es that the input Inember i s to replace any identically named member that exists on the output partitioned data set. The replace option is not valid for an unload or alter operation. Parameters APplicable Control statements MEMBER EXCLUDE MEMBER=[(]membernamel[,membername2] ••• [)] specifies members on the input data set that are not to be copied, unloaded, or loaded to the output data set. The members are not deleted from the input data set unless the entire data set is deleted. (This can be done by specifying DISP=DELETE in the operand field of the input DO job control statement.) Each member name specified within one copy step must be unique. MINBLK COPYMOD MINBLK=CnnnnnlnnKl specifies the mInImum block size for records in the output partitioned data set. MINBLK specifies the smallest block which should be written on the end of a track for the purpose of improving utilization of OASO storage. Description of Parameters A small MINBLK value will improve track utilization; however, a large MIHBLK value (close to the track size) will improve system fetch (IEWFETCH) performance. When determining the value of MIHBLK, you should consider the importance of fetch performance versus optimal OASO storage. In any case, in order to have room for RLD counts, the value of MIHBLK should be less than the size of one full track. nnnnn is specified as a decimal number; K indicates that the un value is multiplied by 1024 bytes. MIHBLK may be specified with or without MAXBLK. Default: lK (1024). If a value greater than MAXBLK or less than 1K is specified, lK is used. The default for the installation can be changed by altering the value in the assembler statement 'MIHBLK DC F'1024" in the macro IEBMCA and reassembling the module IEBOSCPY. OUTDO COPY COPYMOD ALTERMOD OUTDD= ddname specifies the name of the output partitioned data set. One ddname is required for each copy, unload, or load operation; the ddname used must be specified on a DO statement. When the COPY or COPYMOD or ALTERMOD statement is used, OUTDO must be specified. IEBCOPY Program 59 IEBCOPY EXAMPLES The following examples illustrate some of the uses of IEBCOPY. Figure 22 on page 61 can be used as a quick-reference guide to IEBCOPY examples. The numbers in the "Example" column point to examples that follow. Examples that use disk or tape, in place of actual device numbers, must be changed before use. See "DASD and Tape Device Support" on page 3 for valid device number notation. 60 MVS/370 Utilities Operation Device Comments Example COPY Disk Full Copy. The input and output data sets are partitioned. 1 COpy Disk Multiple input partitioned data sets. Fixed-blocked and fixed-record formats. 2 COpy Disk All members are to be copied. Identically named members on the output data set are to be replaced. The input and output data sets are partitioned. 3 COPY Disk Selected members are to be copied. Variable-blocked data set is to be created. Record formats are variable-blocked and variable. The input and output data sets are partitioned. 4 COPY Disk Selected members are to be copied. One member is to replace an identically named member on the output data set. The input and output data sets are partitioned. 5 COpy Disk Selected members are to be copied. Members found on the first input data set replace identically named members on the output data set. The input and output data sets are partitioned. 6 COPY Disk Selected members are to be copied. Two members are to be renamed. One renamed member is to replace an identically named member on the output data set. The input and output data sets are partitioned. 7 COpy Disk Exclusive Copy. Fixed-blocked and fixed-record formats. The input and output data sets are partitioned. 8 Unload and Compressin-place Disk and Tape Copy a partitioned data set to tape (unload) and compress-in-place if the first step is successful. 9 COpy and Compressin-place Disk Full copy to be followed by a compress-in-place of the output data set. Replace specified for one input data set. The input and output data sets are partitioned. 10 COpy Disks Multiple copy operations. The input and output data sets are partitioned. 11 COPY Disks Multiple copy operations. 12 Unload Disk and Tape A partitioned data set i s to be unloaded to tape. 13 Load Tape and Disk An unloaded data set is to be loaded to disk. 14 Unload, Load, and COPY Disk and Tape Selected members are to be unloaded, loaded, and copied. The input data set i s partitioned; the output data set is sequential. 15 Alter in Place Disk Selected members are to be altered in place. 16 Figure 22 (Part 1 of 2). IEBCOPY Example Directory IEBCOPY Program 61 Operation Device Comments Example Copy, alter, and reblock Disk Selected members are copied to a new data set, altered, and reblocked to various sizes. 17 COpy, alter, and reblock Disk and Tape All members copied to tape; library scratched; members copied back to library, altered, and reblocked. 18 Figure 22 (Part 2 of 2). IEBCOPY Example Directory IEBCOPY EXAMPLE I In this example, a partitioned data set CDATASET5) is copied from one disk volume to another. Figure 23 shows the input and output data sets before and after processing. Input DATASETlJ Output DATASET4 Before copy operalion After process1nq DATASETlJ Figure 23. Copying a Partitioned Data Set--Full Copy 62 MVS/370 Utilities //COPY //JOBSTEP //SYSPRIHT //INOUT4 JOB EXEC DO DO // //INOUTS DO // //SYSUT3 //SYSUT4 //SYSIN COPYOPER DO DO DO COpy PGM=IEBCOPY SYSOUT=A DSNAME=DATASET4,UNIT=3350,YOL=SER=111112, DISP=(NEW,KEEP),SPACE=(TRK,(5,1,2» DSNAME=DATASETS,UNIT=3350,YOL=SER=111113, DISP=SHR UNIT=SYSDA,SPACE=(TRK,(l» UNIT=SYSDA,SPACE=(TRK,(l» * OUTDD=INOUT4,INDD=INOUT5 /* The control statements are discussed below: • INOUT4 DO defines a new partitioned data set (DATASET4) that is to be kept after the copy operation. Five tracks are allocated for the data set on a 3350 volume. Two blocks are allocated for directory entries. • INOUTS DO defines a partitioned data set (DATASETS), that resides on a 3350 volume and contains two members (A and C). • SYSUT3 DO defines a temporary spill data set. allocated on a disk volume. One track is • SYSUT4 DO defines a temporary spill data set. allocated on a disk volume. One track is • SYSIH DO defines the control data set, which follows in the input stream. The data set contains a COpy statement. • COpy indicates the start of the copy operation. The absence of a SELECT or EXCLUDE statement causes a default to a full copy. The OUTOO parameter specifies INOUT4 as the 00 statement for the output data set (DATASET4); the INDO parameter specifies INOUT5 as the 00 statement for the input data set. After the copy operation is finished, the output data set (DATASET4) will contain the same members that are on the input data set (DATASET5); however, there will be no embedded, unused space on DATASET4. The temporary spill data sets mayor may not be opened, depending on the amount of virtual storage available; therefore, the SYSUT3 and SYSUT4 DO statements should always appear in the job stream. IEBCOPY EXAMPLE 2 In this example, members are copied from three input partitioned data sets (DATASETl; DATASETS, and DATASET6) to an existing output partitioned data set (DATASET2). The sequence in which the control statements occur controls the manner and sequence in which partitioned data sets are processed. Figure 24 on page 64 shows the input and output data sets before and after processing. IEBCOPY Program 63 Input DATASET5 Input DATASETl Input DATASET6 After processing DATASET 1 After processing DATASET6 Output DATASET2 Before copy operation After processing DATASET5 Figure 24. Copying from Three Input Partitioned Data Sets //COPY //JOBSTEP //SYSPRINT //INOUTI JOB EXEC DD DD // //INOUT5 DD // //INOUT2 DD // //INOUT6 DD // //SYSUT3 //SYSUT4 //SYSIN COPYOPER 64 MYS/370 Utilities DD DD DD COpy PGM=IEBCOPY SYSOUT=A DSNAME=DATASETl,UNIT=3330,YOL=SER=111112, DISP=SHR DSNAME=DATASET5,UNIT=3350,YOl=SER=111114, DISP=OlD DSNAME=DATASET2,UNIT=3350,YOL=SER=111115, DISP=(OlD,KEEP) DSNAME=DATASET6,UNIT=3350,YOL=SER=111117, DISP=(OLD,DELETE) UNIT=SYSDA,SPACE=(TRK,(l» UNIT=SYSDA,SPACE=(TRK,(l» * OUTDD=INOUT2 INDD=INOUTI INDD=INOUT6 INDD=INOUT5 The control statements are discussed below: • INOUT1 DD defines a partitioned data set (DATASET1). This data set, which resides on a 3330 volume, contains three members (A, B, and F) in fixed format with a logical record length of 80 bytes and a block size of 80 bytes. • INOUT5 DD defines a partitioned data set (DATASET5), which resides on a 3350 volume. This data set contains two members (A and C) in fixed blocked format with a logical record length of 80 bytes and a block size of 160 bytes. • INOUT2 DD defines a partitioned data set (OATASET2), which resides on a 3350 volume. This data set contains two members (C and E) in fixed blocked format. The members have a logical record length of 80 bytes and a block size of 240 bytes. • INOUT6 DO defines a partitioned data set (OATASET6), which resides on a 3350 volume. This data set contains three members (B, C, and D) in fixed-block format with a logical record length of 80 bytes and a block size of 400 bytes. This data set is to be deleted when processing is completed. • SYSUT3 DD defines a temporary spill data set. allocated on a disk volume. One track is • SYSUT4 DD defines a temporary spill data set. allocated on a disk volume. One track is • SYSIN DD defines the ~ontrol data set, which follows in the input stream. The data set contains a COpy statement and three INDD statements. • COPY indicates the start of the copy operation. The absence of a SELECT or EXCLUDE statement causes a default to a full copy. The OUTDD parameter specifies INOUT2 as the DD statement for the output data set (DATASET2). • The first INDD statement specifies INOUT1 as the DD statement for the first input data set (DATASET1) to be processed. All members (A, B, and F) are copied to the output data set (DATASET2). • The second INDD statement specifies INOUT6 as the DD statement for the second input data set (DATASET6) to be processed. Processing occurs, as follows: (1) members Band C, which already exist on DATASET2, are not copied to the output data set (DATASET2), (2) member D is copied to the output data set (DATASET2), and (3) all members on DATASET6 are lost when the data set is deleted. • The third INDD statement specifies INOUT5 as the DD statement for the third input data set (DATASET5) to be processed. No members are copied to the output data set (DATASET2) because all of them exist on DATASET2. The temporary spill data sets mayor may not be opened, depending on the amount of virtual storage available; therefore, the SYSUT3 and SYSUT4 DD statements should always appear in the job stream. IEBCOPY EXAMPLE 3 In this example, members are copied from an input partitioned data set (DATASET6) to an existing output partitioned data set (DATASET2). In addition, all copied members replace identically named members on the output partitioned data set. Figure 25 on page 66 shows the input and output data sets before and after processing. IEBCOPY Program 65 Inpul DATASU' Output DATASET2 Alter prOClS$ing DATASET6 Figure 25. Copy Operation with "Replace" Specified on the Data Set level The example follows: .I.1COPY .I.1JOBSTEP .I.1SYSPRINT .I.1INOUT2 .1.1 .I.1INOUT6 JOB EXEC DO DD DO .1.1 .I.1SYSUT3 .I.1SYSUT4 .I/SYSIN COPYOPER .1* 66 MYS/370 Utilities DD DO DO COPY PGM=IEBCOPY SYSOUT=A OSNAME=DATASET2,UHIT=3330-1,YOl=SER=111113, OISP=OLD OSNAME=DATASET6,UNIT=3350,YOL=SER=111117, OISP=(OLD,KEEP) UNIT=SYSOA,SPACE=(TRK,(l» UNIT=SYSDA,SPACE=(TRK,(l» *OUTDO=INOUT2 INDO=(CINOUT6,R» The control statements are discussed below: • INOUT2 00 defines a partitioned data set (OATASET2), which resides on a 3330-1 volume. This data set contains two members (C and E). • INOUT6 00 defines a partitioned data set (OATASET6), which resides on a 3350 volume. This data set contains three members (B, C, and 0). • SYSUT3 DO defines a temporary spill data set. allocated on a disk volume. One track is • SYSUT4 DO defines a temporary spill data set. allocated on a disk volume. One track is • SYSIN DD defines the control data set, which follows in the input stream. The data set contains a COPY statement and an INDO statement. • COpy indicates the start of the copy operation. The absence of a SELECT or EXCLUOE statement causes a default to a full copy. The OUTDO parameter specifies INOUT2 as the 00 statement for the output data set (OATASET2). • INDD specifies INOUT6 as the DD statement for the input data set (OATASET6). Members B, C, and 0 are copied to the output data set (OATASET2). The pointer in the output data set directory is changed to point to the new (copied) member C; thus, the space occupied by the old member C is embedded unused space. Member C is copied even though the output data set already contai ns a member named "C" because the replace option is specified for all identically named members on the input data set; that is, the replace option is specified on the data set level. The temporary spill data sets mayor may not be opened, depending on the amount of virtual storage available; therefore, the SYSUT3 and SYSUT4 DO statements should always appear in the job stream. IEBCOPY EXAMPLE 4 In this example, five members (A, C, D, E, and G) are selected from two input partitioned data sets (OATASET6 and DATASET2) copied to a new output partitioned data set (OATASET4). Figure 26 on page 68 shows the input and output data sets before and after processing. //COPY //JOBSTEP //SYSPRINT //INOUT2 JOB EXEC DD DD // //INOUT6 DO // //INOUT4 DD // // //SYSUT3 //SYSUT4 //SYSIN COPYOPER DO DD DD COPY SELECT PGM=IEBCOPY SYSOUT=A OSNAME=DATASET2,UNIT=3330,VOL=SER=111114, DISP=(OLD,DELETE) DSNAME=DATASET6,UNIT=3350,VOL=SER=111117, DISP=(OLD,KEEP) DSNAME=DATASET4,UNIT=3350,VOL=SER=111116, DISP=(NEW,KEEP),SPACE=(TRK,(5,,2», DCB=(RECFM=VB,LRECl=96,BLKSIZE=300) UNIT=SYSDA,SPACE=(TRK,(l» UNIT=SYSDA,SPACE=(TRK,(l» *OUTOD=INOUT4 INDD=INOUT6 INDD=INOUT2 MEMBER=(C,D,E,A,G) IEBCOPY Program 67 Input DATASET 2 Input DATASET 6 Dis first Output DATAsET4 Before copy After prOCesSIng operatIon OATAsET6 After processing DATASET 2 Figure 26. Copying Selected Members with Reblocking and Deblocking The control statements are discussed below: 68 • INOUT2 DD defines a partitioned data set (DATASET2), which resides on a 3330 volume. This data set contains two members (C AND E) in variable-blocked format with a logical record length of 96 bytes and a block size of 500 bytes. This data set is to be deleted when processing is completed. • INOUT6 DD defines a partitioned data set (DATASET6), which resides on a 3350 volume. This data set contains three members (8, C, and D) in variable-blocked format with a logical record length of 96 bytes and a block size of 100 bytes. • INOUT4 DD defines a partitioned data set (DATASET4). This data set is new and is to be kept after the copy operation. Five tracks are allocated for the data set on a 3350 volume. Two blocks are allocated for directory entries. In addition, records are to be copied to this data set in variable blocked format with a logical record length of 96 bytes and a block size of 300 bytes. • SYSUT3 DD defines a temporary spill data set. allocated on a disk volume. MVS/370 Utilities One track is • SYSUT4 DD defines a temporary spill data set. allocated on a disk volume. One track is • SYSIN DD defines the control data set, which follows in the input stream. The data set contains a COPY statement, two INDO statements, and a SELECT statement. • COPY indicates the start of the copy operation. The use of a SELECT statement causes a selective copy. The OUTDO parameter specifies INOUT4 as the DO statement for the output data set (DATASET4). • The first INDO statement specifies INOUT6 as the DO statement for the first input data set (DATASET6) to be processed. The members specified on the SELECT statement are searched for. The found members (C and D) are copied to the output data set (OATASET4) in the order in which they reside on the input data set, that is, in TTR (track record) order. In this case, member 0 is copied first, and then member C is copied. • The second INDO statement specifies INOUT2 as the DO statement for the second input data set (DATASET2) to be processed. The members specified on the SELECT statement and not found on the first input data set are searched for. The found member (E) is copied onto the output data set (DATASET4). All members on DATASET2 are lost when the data set is deleted. • SELECT specifies the members to be selected ,from the input data sets (DATASET6 and DATASET2) to be copied to the output data set (DATASET4). The temporary spill data sets mayor may not be opened, depending on the amount of virtual storage available; therefore, the SYSUT3 and SYSUT4 DO statements should always appear in the job stream. IEBCOPY EXAMPLE 5 In this example, two members (A and B) are selected from two input partitioned data sets (OATASET5 and DATASET6) copied to an existing output partitioned data set (DATASET!). Member B replaces an Identically named member that already exists on the output data set. Figure 27 on page 70 shows the input and output data sets before and after processing. //COPY //JOBSTEP //SYSPRINT //INOUTI JOB EXEC DD DD // //INOUT6 DD // //INOUT5 DO // //SYSUT3 //SYSUT4 //SYSIN COPYOPER DO DO DO COpy SELECT PGM=IEBCOPY SYSOUT=A DSNAME=DATASETl,UNIT=3330,YOL=SER=111112, DISP=(OLD,KEEP) DSNAME=DATASET6,UNIT=3350,YOL=SER=111115, DISP=OLD DSNAME=DATASET5,UNIT=3330,YOL=SER=111116, DISP=(OLD,KEEP) UNIT=SYSDA,SPACE=(TRK,(l» UNIT=SYSDA,SPACE=(TRK,(l» * OUTDO=INOUTI INOD=INOUT5,INOUT6 MEMBER=«B"R),A) Input DATASETS Input DATASET6 Output DATASET 1 Before copy operallon , Alter Alter processIng procesSIng DATASETS DATASET6 Figure 27. Selective Copy with "Replace" Specified on the Member Level 70 MVS/370 Utilities The control statements are discussed below: • INOUT1 DD defines a partitioned data set (DATASET1). This data set resides on a 3330 volume and contains three members (A, B, and F). • INOUT6 DD defines a partitioned data set (DATASET6). This data set resides on a 33S0 volume and contains three members (B, C, and D). • INOUTS DD defines a partitioned data set (DATASETS). This data set resides on a 3330 volume and contains two members (A and C). • SYSUT3 DD defines a temporary spill data set. allocated on a disk volume. One track is • SYSUT4 DD defines a temporary spill data set. allocated on a disk volume. One track is • SYSIN DD defines the control data set, which follows in the input stream. The data set contains a COPY statement, an INDD statement, and a SELECT statement. • COPY indicates the start of the copy operation. The use of a SELECT statement causes a selective copy. The OUTDD parameter specifies INOUT1 as the DD statement for the output data set (DATASET1). • INDD specifies INOUTS as the DD statement for the first input data set (DATASET5) to be processed and INOUT6 as the DD statement for the second input data set (DATASET6) to be processed. Processing occurs, as follows: (1) selected members are searched for on DATASET5, (2) member A is found, but is not copied to the output data set because it already exists on DATASET2 and the replace option is not specified, (3) selected members not found on DATASET5 are searched for on DATASET6, and (4) member B is found and copied to the output data set (DATASET1), even though a membe~ named B already exists on the output data set, because the replace option is specified for member B on the member level. The poin*er in the output data set directory is changed to point to the new (copied) member B; thus, the space occupied by the old member B is unused. • SELECT specifies the members to be selected from the input data sets (DATASET5 and DATASET6) to be copied to the output data set (DATASETl). The temporary spill data sets mayor may not be opened, depending on the amount of virtual storage available; . therefore, the SYSUT3 and SYSUT4 DD statements should always appear in the job stream. IEBCOPY EXAMPLE 6 In this example, two members (A and B) are selected from two input partitioned data sets (DATASETS and DATASET6) copied to an existing output partitioned data set (DATASETl). All members found on DATASETS replace identically named members on DATASET1. Figure 28 on page 72 shows the input and output data sets before and after processing. IEBCOPY Program 71 Input DATASET5 DATASET6 Output DATASET1 Before copy operation After processing DATASET5 After processing DATASET6 Figure 28. Selective Copy with "Replace" Specified on the Data Set level 72 MVS/370 Utilities IICOPY IIJOBSTEP IISYSPRIHT IIIHOUTI II IIIHOUT5 II IIINOUT6 II IISYSUT3 IISYSUT4 IISYSIN COPYOPER JOB EXEC DD DD DD DD DD DO DD COPY SELECT PGM=IEBCOPY SYSOUT=A DSNAME=DATASET1,UNIT=33S0,YOL=SER=111112, DISP=(OLD,KEEP) DSNAME=DATASETS,UNIT=3330,YOL=SER=111114, DISP=(OLD,DELETE) DSNAME=DATASET6,UHIT=230S-2,YOL=SER=11111S DISP=(OLD,KEEP) UNIT=SYSDA,SPACE=(TRK,(l» UNIT=SYSDA,SPACE=(TRK,(l» *OUTDD=INOUTl INDD=(CINOUT5,R),INOUT6) MEMBER=(A,B) The control statements are discussed below: • INOUTl DD defines a partitioned data set (DATASETl). This data set resides on a 3350 volume and contains three members (A, B, and F). • INOUT5 DD defines a partitioned data set (DATASET5). This data set contains two members (A and C) and resides on a 3330 volume. This data set is to be deleted when processing is completed. • INOUT6 DD defines a partitioned data set (DATASET6). This data set contains three members (B, C, and D) and resides on a 2305-2 volume. • SYSUT3 DO defines a temporary spill data set. allocated on a disk volume. One track is • SYSUT4 DO defines a temporary spill data set. allocated on a disk volume. One track is • SYSIN DD defines the control data set, which follows in the input stream. The data set contains a COPY statement, an INDD statement, and a SELECT statement. • COPY indicates the start of the copy operation. The presence of a SELECT statement causes a selective copy. The OUTDD operand specifies INOUTl as the DD statement for the output data set (DATASET!). • INDD specifies INOUTS as the DD statement for the first input data set (DATASETS) to be processed and INOUT6 as the statement for the second input data set (DATASET6) to be processed. Processing occurs, as follows: (1) selected members are searched for on DATASET5, (2) member A is found and copied to the output data set (DATASET1) because the replace option was specified on the data set level for DATASET5, (3) member B, which was not found on DATASET5 is searched for and found on DATASET6, (4) member B is not copied because DATASET1 already contains a member called member B and the replace option is not specified for DATASET6. The pointer in the output data set directory is changed to point to the new (copied) member A; thus, the space occupied by the old member A is unused. • SELECT specifies the members to be selected from the input data sets (DATASET5 and DATASET6) to be copied to the output data set (DATASET1). IEBCOPY Program 73 The temporary spill data sets mayor may not be opened, depending on the amount of virtual storage available; therefore, the SYSUT3 and SYSUT4 DO statements should always appear in the job stream. IEBCOPY EXAMPLE 7 In this example, four members (A, 8, C, and D) are selected from an input partitioned data set (DATASET6) copied to an existing output partitioned data set (DATASET3). Member 8 is renamed Hi member C is renamed J; and member D is renamed K. In addition, member C (renamed J) replaces the identically named member (J) on the output partitioned data set. Figure 29 shows the input and output data sets before and after processing. Input DATASET6 Output DATASET3 Member J replaced by renamed Member J Before copy operation After processing DATASET6 Figure 29. Renaming Selected Members Using IE8COPY 74 MVS/370 Utilities IICOPY IIJOBSTEP IISYSPRINT IIINOUT3 II IIINOUT6 II IISYSUT3 IISYSUT4 IISYSIN COPYOPER JOB EXEC DD DD DD DD DD DD COPY SELECT PGM=IEBCOPY SYSOUT=A DSNAME=DATASET3,UNIT=disk,VOl=SER=111114, DISP=(OlD,KEEP) DSNAME=DATASET6,UNIT=disk,VOl=SER=111117, DISP=(OlD,DElETE) UNIT=SYSDA,SPACE=(TRK,(l» UNIT=SYSDA,SPACE=(TRK,(l» * OUTDD=INOUT3,INDD=INOUT6 MEMBER=«B,H),(C,J,R),A,CD,K» 1* The control statements are discussed below: • INOUT3 DD defines a partitioned data set CDATASET3). This data set contains four members CD, G, H, and J) and resides on a disk volume. • INOUT6 DD defines a partitioned data set (DATASET6). This data set contains three members CB, C, and D) and resides on a disk volume. DATASET6 is to be deleted when processing is completed; thus, all members on this data set are lost. • SYSUT3 DD defines a temporary spill data set. allocated on a disk volume. One track is • SYSUT4 DD defines a temporary spill data set. allocated on a disk volume. One track is • SYSIN DD defines the control data set, which follows in the input stream. The data set contains a COpy statement, an INDD statement, and a SELECT statement. • COPY indicates the start of the copy operation. The presence of a SELECT statement causes a selective copy. The OUTDD parameter specifies INOUT3 as the DD statement for the output data set (DATASET3). • INDD specifies INOUT6 as the DD statement for the input data set (DATASET6). Processing occurs, as follows: • 1. Selected members are searched for on DATASET6. 2. Member B is found, but is not copied to DATASET3 because its intended new name (H) is identical to the name of a member (H), which already exists on the output data set, and replace is not specified. 3. Member C is found and copied to the output data set (DATASET3), although its new name (J) is identical to the name of a member (J), which already exists on the output data set, because the replace option is specified for the renamed member. 4. Member D is copied onto the output data set (DATASET3) because its new name (K) does not already exist there. SELECT specifies the members to be selected from the input data set CDATASET6) to be copied to the output data set (DATASET3). The temporary spill data sets mayor may not be opened, depending on the amount of virtual storage available; therefore, the SYSUT3 and SYSUT4 DD statements should always appear in the job stream. IEBCOPY Program 75 IEBCOPY EXAMPLE 8 In this example, five members (A, B, C, J, and l) are excluded from the copy operation when each of the input partitioned data sets (DATASET1, DATASET3, and DATASET6) ;s processed. In addition, replace is specified for the last input partitioned data set (DATASET6) to be processed; thus, with the exception of the members specified on the EXCLUDE statement, all members on DATASET6 will replace any identically named members on the output partitioned data set (DATASET4). Figure 30 on page 77 shows the input and output data sets before and after processing. //COPY //JOBSTEP //SYSPRINT //INOUTI JOB EXEC DO 00 // //INOUT3 DO // //INOUT4 // // //INOUT6 DD DO // //SYSUT3 DO //SYSUT4 DO //SYSIN DO COPYOPER COPY EXCLUDE PGM=IEBCOPY SYSOUT=A DSNAME=DATASET1,UNIT=disk,VOl=SER=111112, DISP=(OlD,KEEP) DSNAME=DATASET3,UNIT=disk,VOl=SER=111114, OISP=OLD DSNAME=DATASET4,UNIT=disk,VOl=SER=111l15, DISP=(NEW,KEEP),SPACE=(TRK,(3,l,2», OCB=(lRECl=100,RECFM=FB,BlKSIZE=400) OSNAME=DATASET6,UNIT=disk,VOL=SER=1111l6, DISP=OlD UNIT=SYSDA,SPACE=(TRK,(l» UNIT=SYSDA,SPACE=(TRK,(l» * OUTDD=INOUT4, INDD=INOUTl,INOUT3,(INOUT6,R) MEMBER=(A,J,B,l,C) The control statements are discussed below: 76 • INOUTI 00 defines a partitioned data set (DATASET1). This data set contains three members (A, B, and F) and resides on a disk volume. The record format is fixed-blocked with a logical record length of 100 bytes and a block size of 400 bytes. • INOUT3 DO defines a partitioned data set (DATASET3), which resides on a disk volume. This data set contains four members (0, G, H, and J) in fixed-blocked format with a logical record length of 100 bytes and a block size of 600 bytes. • INOUT4 DO defines a new partitioned data set (DATASET4). Three tracks are allocated for the copied members on a disk volume. Two blocks are allocated for directory entries. In addition, records are to be copied to this data set in fixed-blocked format with a logical record length of 100 bytes and a block size of 400 bytes. • INOUT6 DO defines a partitioned data set (DATASET6). This data set contains three members (B, C, and D) in fixed format. The records have a logical record length of 100 bytes and a block size of 100 bytes. This data set resides on a disk volume. • SYSUT3 DO defines a temporary spill data set. allocated on a disk volume. One track is • SYSUT4 DO defines a temporary spill data set. allocated on a disk volume. One track is • SYSIN DO defines the control data set, which follows in the input stream. The data set contains a COPY statement and an EXCLUDE statement. MVS/370 Utilities Input DATASET 1 Input DATASETJ Input DATASET6 Output DATASET4 Before copy operatIon member After processIng DATASET! After processIng DATASETJ After processing DATASET6 Figure 30. Exclusive Copy with "Replace" Specified for One Input Partitioned Data Set • COPY indicates the start of the copy operation. The presence of an EXCLUDE statement causes an exclusive copy. The OUTDD parameter specifies INOUT4 as the DD statement for the output data set (DATASET4). The INDD parameter specifies INOUT1 as the DD statement for the first input data set (DATASET1) to be processed, INOUT3 as the DD statement for the second input data set (DATASET3) to be processed, and INOUT6 as the DD statement for the last input data set (DATASET6) to be processed. Processing occurs, as follows: 1. Member F, which is not named on the EXCLUDE statement, is copied from DATASET1. 2. Members D, G, and H, which are not named on the EXCLUDE statement, are copied from DATASET3. 3. Member D is copied from DATASET6 because the replace option is specified for nonexcluded members. The pointer in the output data set directory is changed to point at the new (copied) member D; thus, the space occupied by the old member D (copied from DATASET3) is unused. • EXCLUDE specifies the members to be excluded from the copy operation. The named members are excluded from all of the input partitioned data sets specified in the copy operation. The temporary spill data sets mayor may not be opened, depending on the amount of virtual storage available; therefore, the SYSUT3 and SYSUT4 DD statements should always appear in the job stream. IEBCOPY Program 77 IEBCOPY EXAMPLE 9 In this example) a partitioned data set is unloaded to a tape volume to create a backup copy of the data set. If this step is successful) the partitioned data set is to be compressed in place. //SAVE //STEPI //SYSPRINT //INPDS // //BACKUP // //SYSUT3 // //SYSIN /* //STEP2 // //SYSPRINT //COMPDS // //SYSUT3 // //SYSUT4 // //SYSIN /* JOB EXEC PGM=IEBCOPY DD SYSOUT=A DSNAME=PARTPDS)UNIT=disk)VOL=SER=PCPOOI) DD DISP=OLD DSNAME=SAVDATA)UNIT=tape)VOL=SER=TAPE03) DD DISP=CNEW,KEEP),LABEL=(,SL) DSNAME=TEMPI,UNIT=disk)VOL=SER=111111, DD DISP=CNEW,DELETE),SPACE=(80)(60,45» DD * COpy OUTDD=BACKUP,INDD=INPDS EXEC PGM=IEBCOPY,COND=(O,NE») PARM='SIZE=99999999K' SYSOUT=A DD DSNAME=PARTPDS,UNIT=disk,DISP=OLD, DD VOL=SER=PCPOOI DSNAME=TEMPA,UNIT=disk)VOL=SER=111111, DD DISP=(NEW,DELETE»)SPACE=(SO,(60,45» DSNAME=TEMPB,UNIT=disk,VOL=SER=IIIIII, DD SPACE=(256,(15,1»,DCB=KEYLEN=S DD * COPY OUTDD=COMPDS)INDD=COMPDS The control statements are discussed below: 78 • INPDS DD defines a partitioned data set (PARTPDS) that resides on a disk volume and is assumed to have 700 members. The number of members is used to calculate the space allocation on SYSUT3. • BACKUP DD defines a sequential data set to hold PARTPDS in unloaded form. Block size information can optionally be added; this data set must be NEW. • SYSUT3 DD defines the temporary spill data set. • SYSIN DD defines the control data set, which follows in the input stream. The data set contains a COPY statement. • COpy marks the beginning of the unload operation; the absence of an EXCLUDE or SELECT statement causes the entire partitioned data set (INDD=INPDS) to be unloaded to a sequential data set (OUTDD=BACKUP). • The second EXEC statement marks the beginning of the compress-in-place operation. The SIZE parameter indicates that the buffers are to be as large as possible. The CONO parameter indicates that the compress-in-place is to be performed ~nly if the unload operation was successful. • COMPDS DD defines a partitioned data set (PARTPDS) that contains 700 members and resides on a disk volume. • SYSUT3 DD defines the temporary spill data set to be used if there is not enough space in main storage for the input data set's directory entries. TEMPA contains one SO-character record for each member. • SYSUT4 DD defines the temporary spill data set to be used if there is not enough space in main storage for the output MVS/370 Utilities partitioned data set's directory blocks. TEMPB contains one 2S6-character record for each directory block. • SYSIN DD defines the control data set, which follows in the input stream. The data set contains a COpy statement. • COPY marks the beginning of the copy operation. The absence of a SELECT or EXCLUDE statement causes a default to a full copy. Because the same DD statement is specified for both the INDD and OUTDD operands, the data set is compressed in place. The temporary spill data sets mayor may not be opened, depending on the amount of virtual storage available; therefore, the SYSUT3 and SYSUT4 DD statements should always appear in the job stream. However, the SYSUT4 data set is never used for an unload operation. For an unload operation, only one INDD data set may be specified for one OUTDD data set. IEBCOPY EXAMPLE 10 In this example, two input partitioned data sets (DATASETS and DATASET6) are copied to an existing output partitioned data set (DATASET!). In addition, all members on DATASET6 are copied; members on the output data set that have the same names as the copied members are replaced. After DATASET6 is processed, the output data set (DATASET1) is compressed in place. Figure 31 on page 80 shows the input and output data sets before and after processing. //COPY //JOBSTEP //SYSPRINT //INOUTI JOB EXEC DD DD // //INOUTS DD // //INOUT6 DD // //SYSUT3 //SYSUT4 //SYSIN COPYOPER DD DD DO COpy PGM=IEBCOPY SYSOUT=A DSNAME=DATASET1,UNIT=3330,VOL=SER=111112, DISP=(OLD,KEEP) DSNAME=DATASETS,UNIT=33S0,VOl=SER=111114, DISP=OLD DSNAME=DATASET6,UNIT=33S0,VOl=SER=11111S, DISP=(OlD,KEEP) UNIT=SYSOA,SPACE=(TRK,(l» UNIT=SYSOA,SPACE=(TRK,(l» * OUTDD=INOUT! INDD=INOUTS,(INOUT6,R),INOUT1 /* The control statements are discussed below: • INOUTI DD defines a partitioned data set (DATASET1). This data set contains three members (A, B, and F) and resides on a 3330 volume. • INOUTS DD defines a partitioned data set (DATASETS). This data set contains two members (A and C) and resides on a 33S0 volume. • INOUT6 DD defines a partitioned data set (DATASET6). This data set contains three members (B, C, and D) and resides on a 3350 volume. • SYSUT3 DO defines a temporary spill data set. allocated on a disk volume. One track is • SYSUT4 DD defines a temporary spill data set. allocated on a disk volume. One track is IEBCOPY Program 79 Input DATASET5 Output DATASET1 Before copy operation DATASET6 DATASET1 After processing DATASET6 After compressing in place • After processing DATASET5 Figure 31. Compress-in-Place Following Full Copy with "Replace" Specified 80 MVS/370 Utilities • SYSIH DD defines the control data set, which follows in the input stream. The data set contains a COPY statement and an INDD statement. • COPY indicates the start of the copy operation. The nUTDD operand specifies INOUTl as the DD statement for the output data set (DATASETl). The absence of a SELECT or EXCLUDE statement causes a default to a full copy. • INDD specifies INOUTS as the DD statement for the first input data set (DATASETS) to be processed. It then specifies INOUT6 as the DD statement for the second input data set (DATASET6) to be processed; in addition, the replace option is specified for all members copied from DATASET6. Finally, it specifies INOUTl as the DD statement for the last input data set (DATASETl) to be processed; this causes a compress-in-place of DATASET! because it is also specified as the output data set. Processing occurs, as follows: !. Member A is not copied from DATASETS onto the output data set (DATASET!) because it already exists on DATASET! and the replace option was not specified for DATASETS. 2. Member C is copied from DATASETS to the output data set (DATASETl), occupying the first available space. 3. All members are copied from DATASET6 to the output data set (DATASET!), immediately following the last member. Members Band C are copied even though the output data set already contains members with the same names because the replace option is specified on the data set level. The pointers in the output data set directory are changed to point to the new members Band C; thus, the space occupied by the old members Band C is unused. The members currently on DATASETl are compressed in place, thereby eliminating embedded unused space. The temporary spill data sets mayor may not be opened, depending on the amount of virtual storage available; therefore, the SYSUT3 and SYSUT4 DD statements should always appear in the job stream. IEBCOPY EXAMPLE 11 In this example, members are selected, excluded, and copied from input partitioned data sets onto an output partitioned data set. This example is designed to illustrate multiple copy operations. Figure 32 on page 82 shows the input and output data sets before and after processing. IEBCOPY Program 8! Compress-in-Place Operation DATASETA • Output DATASETA Before copy operation DATASETB After compressing in place After processing DATASETB Figure 32 (Part 1 of 2). Multiple Copy Operations/Copy Steps 82 MVS/370 Utilities Multiple Copy Steps DATASETD DATASETC DATASETE • • Before copy operation After processing DATASETD After processing DATASETC After processing DATASETE Figure 32 (Part 2 of 2). Multiple Copy Operations/Copy Steps IEBCOPY Program 83 //COPY //JOBSTEP //SYSPRINT //INOUTA JOB EXEC DD DD // //INOUTB DD // //INOUTC DD // //INOUTD DD // //INOUTE DD // //INOUTX DD // //SYSUT3 //SYSUT4 //SYSIN COPERSTI DD DD DD COPY COpy COpy EXCLUDE SELECT PGM=IEBCOPY SYSQUT=A DSNAME=DATASETA,UNIT=disk,VOl=SER=111113, DISP=OLD DSNAME=DATASETB,UNIT=disk,VOl=SER=111115, DISP=(OlD,KEEP) DSNAME=DATASETC,UNIT=disk,VOl=SER=111114, DISP=(OlD,KEEP) DSNAME=DATASETD,UNIT=disk,VOl=SER=111116, DISP=OlD DSNAME=DATASETE,UNIT=disk,VOl=SER=111117, DISP=OlD DSNAME=DATASETX,UNIT=disk,VOl=SER=111112, DISP=(NEW,KEEP),SPACE=(TRK,(3,1,2» UNIT=SYSDA,SPACE=(TRK,(l» UNIT=SYSDA,SPACE=(TRK,(l» *. O=INOUTX,I=INOUTA OUTDD=INOUTA,INDD=INOUTA INDD=INOUTB O=INOUTA INDD=INOUTD MEMBER=MM INDD=INOUTC MEMBER=«Ml,MD,R» INDD=INOUTE /*. The-control statements are discussed below: 84 • INOUTA DD defines a partitioned data (DATASETA). This data set contains seven members (MA, MB, MC, MD, ME, MF, and MG) and resides on a disk volume. • INOUTB DD defines a partitioned data set (DATASETB). This data set resides on a disk volume and contains two members (MA and MJ). • INOUTC DD defines a partitioned data set (DATASETC), that resides on a disk volume. The data set contains four members (MF, Ml, MM, and MN). • INOUTD DD defines a partitioned data set (DATASETD). This data set resides on a disk volume and contains two members (MM and MP). • INOUTE DD defines a partitioned data set (DATASETE). This data set contains four members (MD, ME, MF, and MT) and resides on a disk volume. • INOUTX DD defines a partitioned data set (DATASETX). This data set _is new and is to be kept after the copy operation. Three tracks are allocated for the data set on a disk volume. Two blocks are allocated for directory entries. • SYSUT3 DD defines a temporary spill data set. allocated on a disk volume. One track is • SYSUT4 DD defines a temporary spill data set. allocated on a disk volume. One track is • SYSIN DD defines the control data set, which follows in the input stream. The data set contains two COpy statements, several INDD statements, a SELECT statement, and an EXCLUDE statement. • The first COPY statement indicates the start of the first copy operation. This copy operation is done to create a MVS/370 Utilities backup copy of DATASETA, which is compressed in place in the second copy operation. • The second COPY statement indicates the start of another copy operation. The absence of a SELECT or EXCLUDE statement causes a default to a full copy; however, the same DO statement, INOUTA, is specified for both the INDO and OUTDD parameters, causing a compress-in-place of the specified data set. The output data set is compressed in place first to save space because it is known that it contains embedded, unused space. INDD specifies INOUTB as the DD statement for the input data set (DATASETB) to be copied. Only member MJ is copied because member MA already exists on the output data set. • The third COPY statement indicates the start of the third copy operation. The OUTDD parameter specifies INOUTA as the DO statement for the output data set (DATASETA). This copy operation contains more than one copy step. The first INDD statement specifies INOUTD as the DD statement for the first input data set (DATASETD) to be processed. Only member MP is copied to the output data set (DATASETA) because member MM is specified on the EXCLUDE statement. EXCLUDE specifies the member to be excluded from the first copy step within this copy operation. The second INDD statement marks the beginning of the second copy step for this copy operation and specifies INOUTC as the DO statement for the second input data set (DATASETC) to be processed. Member ML is searched for, found, and copied to the output data set (DATASETA). Member ML is copied even though its new name (MD) is identical to the name of a member (MD) that already exists on the output data set, because the replace option is specified for the renamed member. SELECT specifies the member to be selected from the input data set (DATASETC) to be copied to the output partitioned data set. The third INDO statement marks the beginning of the third copy step for this copy operation and specifies INOUTE as the DO statement for the last data set (DATASETE) to be copied. Only member MT is copied because the other members already exist on the output data set. Because the INDO statement is not followed by an EXCLUDE or SELECT statement, a full copy is performed. The temporary spill data sets mayor may not be opened, depending on the amount of virtual storage available; therefore, it ;s suggested that the SYSUT3 and SYSUT4 DO statements always appear in the job stream. The output data set is compressed in place first to save space because it is known that it contains embedded, unused space. IEBCOPY EXAMPLE 12 In this example, members are selected, excluded, and input partitioned data sets to an output partitioned This example is designed to illustrate multiple copy Figure 33 on page 86 shows the input and output data and after processing. copied from data set. operations. sets before IEBCOPY Program 85 First copy operetion Input DATASETE Input DATASETC Alter Alter processIng proceSSIng DATASETE DATASETC Output DATASET A Belore copy operatIon Figure 33 (Part 1 of 3). Multiple Copy Operations/Copy Steps within a Job Step 86 MVS/370 Utilities Second copy operillon Input Input Input DATASETD DATASETC DATASETB Output DATASETB Before copy operatIon After After Aft... processIng processing compressing DATASETD DATASETC in pIKe Figure 33 (Part 2 of 3). Multiple Copy Operations/Copy Steps within a Job Step IEBCOPY Program 87 Third copy operation Input DATASETB Output DATASETD Old member Before copy operation After processing DATASETB Figure 33 (Part 3 of 3). Multiple Copy Operations/Copy steps within a Job Step 88 MVS/370 Utilities //COPY //JOBSTEP //SYSPRINT //INOUTA JOB EXEC DD DD // //INOUTB DD // //INOUTC DD // //INOUTD DD // //INOUTE DD // //SYSUT3 //SYSUT4 //SYSIN DD DD DD COPY SELECT EXCLUDE COPY COPY SELECT PGM=IEBCOPY SYSOUT=A DSNAME=DATASETA,UNIT=disk,YOL=SER=111113, DISP=OLD DSNAME=DATASETB,VOL=SER=111115,UNIT=disk, DISP=(OLD,KEEP) DSNAME=DATASETC,YOL=SER=111114,UNIT=disk, DISP=(OLD,KEEP) DSNAME=DATASETD,VOL=SER=111116,DISP=OLD, UNIT=disk DSNAME=DATASETE,YOL=SER=111117,DISP=OLD, UNIT=disk UNIT=SYSDA,SPACE=(TRK,(l» UNIT=SYSDA,SPACE=(TRK,(l» *OUTDD=INOUTA INDD=INOUTE MEMBER=(MA,MJ) INDD=INOUTC MEMBER=(MM,MN) O=INOUTB,INDD=INOUTD I=«INOUTC,R),INOUTB) O=INOUTD,I=«INOUTB,R» MEMBER=MM The control statements are discussed below: • INOUTA DD defines a partitioned data set (DATASETA). This data set contains three members (MA, MB, and MD) and resides on a disk volume. • INOUTB DD defines a partitioned data set (DATASETB). This data set resides on a disk volume and contains two members (MA and MJ). • INOUTC DD defines a partitioned data set (DATASETC), that resides on a disk volume. This data set contains four members (MF, ML, MM, and MN). • INOUTD DD defines a partitioned data set (DATASETD). This data set resides on a disk volume and contains two members (MM and MP). • INOUTE DD defines a partitioned data set (DATASETE), that resides on a disk volume. This data set contains three members (MA, MJ and MK). • SYSUT3 DD defines a temporary spill data set. allocated on a disk volume. One track is • SYSUT4 DD defines a temporary spill data set. allocated on a disk volume. One track is • SYSIH DD defines the control data set, which follows in the input stream. The data set contains three COPY statements, two SELECT statements, one EXCLUDE statement, and several INDD statements. • The first COPY statement indicates the start of a copy operation. The OUTDD operand specifies INOUTA as the DD statement for the output data set (DATASETA). IEBCOPY Program 89 The first INDD statement specifies INOUTE as the DD statement for the first input data set (DATASETE) to be processed. Processing occurs, as follows: 1. Member MA is searched for and found, but is not copied because the replace option is not specified. 2. Member MJ is searched for, found, and copied to the output data set. Members are not searched for again after they are found. SELECT specifies the members (MA and MJ) to be selected from the input data set (DATASETE) to be copied. The second INDD statement marks the end of the first copy step and the beginning of the second copy step within the first copy operation. It specifies INOUTC as the DD statement for the second input data set (DATASETC) to be processed. Members MF and ML, which are not named on the EXCLUDE statement, are copied because neither exists on the output data set. EXCLUDE specifies the members (MM and MN) to be excluded from the second copy operation. • The second COPY statement indicates the start of another copy operation. The absence of a SELECT or EXCLUDE statement causes a default to a full copy. The 0 (OUTDD) parameter specifies INOUTB as the output data set (DATASETB). The INDD parameter specifies INOUTD as the first input data set (DATASETD) to be processed. Members MP and MM are copied to the output data set. INDD(I) specifies INOUTC as the DD statement for the second input data set (DATASETC) and INOUTB as the DD statement for the third input data set (DATASETB) to be processed. Members MF, ML, MM, and MN are copied from DATASETC. Member MM is copied, although it already exists on the output partitioned data sets, because the replace option is specified. (The pointer in the output data set directory is changed to point to the new (copied) member MM; thus the space occupied by the replaced member MM is embedded, unused space.) Because DATASETB is also the data set specified in the OUTDD parameter, a compress-in-place takes place, and thus the embedded, unused space is removed. • The third COPY statement indicates the start of another copy operation. The 0 (OUTDD) parameter specifies INOUTD as the DD statement for the output data set (DATASETD). The I (INDD) parameter specifies INOUTB as the DD statement for the input data set (DATASETB). SELECT specifies the member (MM) to be selected from the input partitioned data set (DATASETB) to be copied. The replace option is specified on the data set level. The temporary spill data sets mayor may not be opened, depending on the amount of virtual storage available; therefore, the SYSUT3 and SYSUT4 DD statements should always appear in the job stream. 90 MVS/370 Utilities IEBCOPY EXAMPLE 13 In this example, a partitioned data set (SYSl.lIHKlIB) ;s unloaded to a tape volume. //UNLOAD //STEPI //SYSPRIHT //INPDS JOB EXEC DD DD // //OUTTAPE DO // //SYSUT3 DD // //SYSIN DO COpy PGM=IEBCOPY,PARM='SIZE=100K' SYSOUT=A DSNAME=SYSl.lINKlIB,UHIT=disk,OISP=SHR, VOl=SER=666666 DSNAME=lINKLIB,UHIT=tape,VOL=SER=TAPEOO, lABEL=(,Sl),DISP=(NEW,KEEP) DSNAME=TEMPI,UNIT=disk,VOL=SER=111111, DISP=(HEW,DELETE),SPACE=(80,(60,45» *OUTDD=OUTTAPE INDD=INPDS The control statements are discussed below: • EXEC specifies the execution of IEBCOPY. The PARM parameter specifies the size of the input/output buffer to be used (lOOK). • INPDS DD defines a partitioned data set (SYSl.LIHKLIB), which resides on a disk volume. This data set is assumed to have 700 members; the number of members is used to calculate the space allocation for SYSUT3. • OUTTAPE DD defines a sequential data set to which SYSl.lINKlIB is to be unloaded. The unloaded data set is named LINKLIB. If a tape volume is used, it can be IBM standard labeled or unlabeled. • SYSUT3 OD defines a temporary spill data set on a disk volume. This data set is used if there is not enough space in virtual storage for the input partitioned data set's directory entries. This data set mayor may not be opened depending on the amount of virtual storage available; therefore, it is suggested that the statement always appear in the job stream. • SYSIN DO defines the control data set, which follows in the input stream. The data set contains a COpy and INDO statement. • COPY indicates the start of an unload operation because the OUTDO parameter refers to OUTTAPE DO, which specifies a sequential output data set. Because no EXCLUDE or SELECT statement is specified, the entire data set is unloaded. • INDO refers to INPDS DD, which defines the input partitioned data set to be unloaded. Note that for an unload operation, only one INDO data set may be specified for each OUTDO data set. The SYSUT4 data set is never used for an unload operation. The SYSUT3 data set for an unload operation is used under the same conditions as it is used for a copy operation. If too much space is allocated with the SIZE option of the PARM parameter on the EXEC statement, the paging process slows down because the buffer areas are fixed. IEBCOPY Program 91 IEBCOPY EXAMPLE 14 In this example, a sequential data set created by an IEBCOPY unload operation is loaded. //LOAD //STEPA //SYSPRINT //SEQIN // //INOUT4 // //SYSUT3 // //SYSIN JOB EXEC PGM=IEBCOPY,PARM='SIZE=65536' DD SYSOUT=A DSNAME=UNLOADSET,UNIT=tape,LABEL=(,SL), DD YOL=SER=TAPE01,DISP=OLD DSNAME=DATASET4,UNIT=disk,YOL=SER=2222222, DD DISP=(NEW,KEEP),SPACE=(CYL,(10,5,lO}) DD DSN=TEMPl,UNIT=disk,YOL=SER=111111, DISP=(NEW,DELETE),SPACE=(80,(15,1» DD COpy OUTDD=INOUT4,INDD=SEQIN * /* The control statements are discussed below: • EXEC specifies the execution of IEBCOPY. The PARM parameter allocates 2 tracks on a disk volume. If less space is specified, 2 tracks are allocated because 2 tracks are the minimum required by IEBCOPY when the unloaded data set's block size does not exceed the track capacity. • SEQIN DD defines a sequential data set that was previously unloaded by IEBCOPY. The data set contains 28 members in sequential organization. • INOUT4 DD This data cylinders allocated • SYSUT3 DD defines a temporary spill data set on a disk volume. This data set is used if there is not enough space in main storage for the input data set's directory entries. This data set mayor may not be opened, depending on the amount of main storage available; therefore, it is suggested that the statement always appear in the job stream. The space allocated for this data set is based on the number of members in the input data set (in this case, 28). • SYSIN DD defines the control data set, which follows in the input stream. The data set contains a COpy statement. • COpy indicates the start of a load operation because the INDD parameter refers to SEQIN DD, which defines a sequential data set, and OUTDD refers to INOUT4 DD, which defines a direct access volume. defines a partitioned data set on a disk volume. set is to be kept after the load operation. Ten are allocated for the data set; ten blocks are for directory entries. Because the output data set in this example is new, the SYSUT4 data set is not needed. SYSUT4 should be specified, however, when the output data set is old. IEBCOPY EXAMPLE 15 In this example, members are selected, excluded, unloaded, loaded, and copied. Processing will occur, as follows: (1) unload, excluding members, (2) unload, selecting members, and (3) load and copy to merge members. 92 MYS/370 Utilities //COPY //STEP //SYSPRIHT //PDSI JOB EXEC PGM=IEBCOPY DO SYSOUT=A DO DSHAME=ACCOUHTA,UHIT=3350,VOl=SER=333333, // DISP=OlD //PDS2 DO DSHAME=ACCOUHTB,UNIT=3350,VOl=SER=333333, // DISP=OlD //SEQI DO DSNAME=SAVAC,UNIT=3350,VOl=SER=333333, // DISP=(HEW,KEEP),SPACE=(CYl,(5,2» //SEQ2 DO DSNAME=SAVACB,UNIT=tape,VOl=SER=T01911, // DISP=(NEW,KEEP),lABEl=(,Sl) //HEWUP DO DSNAME=NEWACC,UNIT=tape,VOl=SER=T01219, // DISP=OlD,lABEl=(,Sl) //MERGE DO DSNAME=ACCUPDAT,UNIT=3330-1,VOl=SER=222222, // DISP=OLD //SYSUT3 DO DSNAME=TEMPl,VOl=SER=666666,UNIT=3330-1, // DISP=(NEW,DElETE),SPACE=(80,(1,1» //SYSUT4 DD DSNAME=TEMP2,VOl=SER=666666,UNIT=3330-1, // DISP=(NEW,DElETE), // SPACE=(256,(1,1»,DCB=(KEYlEN=8) //SYSIH DO * COPY OUTDD=SEQl,INDD=PDS1 MEMBER=(D,C) EXCLUDE COpy OUTDD=SEQ2,INDD=PDS2 MEMBER=(A,K) SELECT OUTDD=MERGE,INDD=((NEWUP,R),PDS1,PDS2) COPY EXCLUDE MEMBER=A The control statements are discussed below: • PDS1 DD defines a partitioned data set called ACCOUNTA that contains six members (A, B, C, 0, E, and F) and resides on a 3350 volume. • PDS2 DD defines a partitioned data set called ACCOUNTB that contains three members (A, K, and l) and resides on a 3350 volume. • SEQ1 DD defines a new sequential data set called SAVAC on a 3350 volume. • SEQ2 DD defines a new sequential data set called SAVACB on a tape volume. The tape has IBM standard labels. • NEWUP DO defines an old sequential data set called NEWACC that is the unloaded form of a partitioned data set that contains eight members (A, B, C, D, M, N, 0, and Pl. It resides on a tape volume. • MERGE DD defines a partitioned data set called ACCUPDAT that contains six members (A, B, C, D, Q, and R) and resides on a 3330-1 volume. , SYSUT3 DO defines a temporary spill data set on a 3330-1 volume. • SY5UT4 00 defines a temporary spill data set on a 3330-1 volume. • SYSIN DO defines the control data set, which follows in the input stream. • The first COPY statement indicates the start of the first unload operation. (The input data set is partitioned; the output data set is sequential.) IEBCOPY Program 93 • The first EXCLUDE statement specifies that members D and C are to be excluded from the unload operation specified by the preceding COpy statement. • The second COPY statement indicates the start of the second unload operation. (The input data set is partitioned; the output data set is sequential.) • The SELECT statement specifies that members A and K are to be included in the unload operation specified by the preceding COpy statement. • The third COPY statement indicates the start of the copy and load operations. The replace option is specified for the NEWUP data set; therefore, members in this data set replace identically named members on the output data set. The first INDD data set is an unloaded data set that is to be loaded. The second and third INDD data sets are partitioned data sets that are to be copied. (The input data sets are sequential and partitioned; the output data set is partitioned.) • The second EXCLUDE statement specifies that member A is excluded from the copy and load operation specified in the preceding COPY statement. IEBCOPY EXAMPLE 16 In this example, all members of data set MODLIBJ, members MODX, MODY, and MODZ of data set MODLIBK, and all members of data set MODLIBL except MYMACRO and MYJCL are altered in place. //ALTERONE JOB //STEPA EXEC //SYSPRINT DD //SYSUT3 DO //SYSUT4 DD //LIBJ DD //LIBK DO //LIBL DD //SYSIN DD ALTERMOD ALTERMOD SELECT AlTERMOD EXCLUDE PGM=IEBCOPY SYSOUT=A UNIT=SYSDA,SPACE=(TRK,(5,1» UNIT=SYSDA,SPACE=(TRK,(5,1» DSNAME=MODLIBJ,DISP=(OLD,KEEP) DSNAME=MODLIBK,DISP=(OLD,KEEP) DSNAME=MODLIBL,DISP=(OLD,KEEP) * OUTDD=LIBJ OUTDD=LIBK,LIST=NO MEMBER=(MODX,MODY,MODZ) OUTDD=LIBL MEMBER=(MYMACRO,MYJCL) The control statements are discussed below. 94 • LIBJ DD defines the partitioned data set MODLIBJ, which has been previously created and cataloged. 2 • LIBK DD defines the partitioned data set MODLIBK, which has been previously created and cataloged. 2 • LIBL DO defines the partitioned data set MODLIBL, which has been previously created and cataloged. 2 • SYSIN DO defines the control data set, which follows in the input stream. 2 For data sets that have not been previously cataloged, you must also specify UNIT and VOL=SER information on the DO statement. MVS/370 Utilities TNL GN26-8133 (30 Mar 84) to GC26-4065-1 ) • The first ALTERMOD statement specifies that the entire data set defined in LIBJ is to be altered in place. • The second ALTERMOD statement plus the following SELECT statement indicates that members MODX, MODY, and MODZ. are to be altered in place. The remainder of MODLIBK is unchanged. • The third ALTERMOD statement plus the following EXCLUDE statement indicates that all of MODLIBL is to be altered in place except the'members called MYMACRO and MYJCL. These members remain unchanged. IEBCOPY EXAMPLE 17 In this example, members MOD7, MOD8, and MOD9 of data set MODLIBL are copied to data set MODLIBM, altered, and reblocked to the default size. All members of data set MODLIBN except NEWMACRO and NEWJCL are copied to data set MODLIBP, altered, and reblocked to 10K bytes; blocks a$ small as 2K bytes may be written to improve utilization of disk space. //COPYRBLK JOB //STEPA EXEC //SYSPRINT DD //SYSUT3 DD DD //SYSUT4 //LIBL DD //LIBM DD //LIBN DD //LIBP DD //SYSIN DD COPYMOD SELECT COPYMOD EXCLUDE 72 PGM=IEBCOPY SYSOUT=A UNIT=SYSDA,SPACE=(TRK,(S,I» UNIT=SYSDA,SPACE=(TRK,(S,I» DSNAME=MODLIBL,DISP=(OLD,KEEP) DSNAME=MODLIBM,DISP=(OLD,KEEP) DSNAME=MODLIBN,DISP=(OLD,KEEP) DSNAME=MODLIBP,DISP=(OLD,KEEP) *INDD=LIBL,OUTDD=LIBM MEMBER=(MOD7,MOD8,MOD9) INDD=LIBN,OUTDD=LIBP,MAXBLK=IOK, MINBLK=2K,LIST=NO MEMBER=(NEWMACRO,NEWJCL) X The control statements are discussed below. \ ) • LIBL DD defines the partitioned data set MODLIBL, which has been previously created and cataloged. a • LIBM DD defines the partitioned data set MODLIBM, which MS been previously created and cataloged. a • LIBN DD defines the partitioned data set MODLIBN, which has been previously created and cataloged. a • LIBP DD defines the partitioned data set MODLIBP, which has been previously created and cataloged. a • SYSIN DD defines the control data set, which follows in the input stream. • The COPYMOD statement indicates that the members listed in the following SELECT statement (MOD7,MOD8,MOD9) are to be copied from MODLIBL to MODLIBM, altered, and reblocked. • The second COPYMOD statement indicates that the MODLIBN data set (except for NEWMACRO and NEWJCL, which are specified in For data sets that have not been previously cataloged, you must also specify UNIT and. VOL=SER information on the DD statement. IEBCOPY Program 95 TNL ON26-8l33 (30 Mar 84) to GC26-406S-l the following EXCLUDE statement) is copied to MOOLIap, altered, and reblocked to 10K bytes. IIICOPY EXAMPLE 18 In this example, all members of data set MODLIay are copied to tape COPYLIBY in STEPI. MODLIBY is scratched (but not uncataloged) in STEP2. In STEP3, all members are copied back to data set MODLIBY, reblocked to the default size, and altered. The net result is that the data set MODLIBY is compressed, altered, and reblocked. //COPYTWO //STEPI //SYSPRINT //SYSUT3 //SYSUT4 //LIBY .1/ //TAPEA // JOB EXEC DD DD DD DD DD PGM=IEBCOPY SYSOUT=A UNIT=SYSDA,SPACE=(TRK,(S,l» UNIT=SYSDA,SPACE=(TRK, (S,l» DSNAME=MODLIBY,DISP=(OLD), UNIT=3330-1,VOL=SER=333l0l DSNAME=COPYLIBY,DISP=(NEH,PASS), UNIT=tape,VOL=SER=717000,LABEL=(,NL) //SYSIN DD JE COPY INDD=LIBY,OUTDD=TAPEA /)( //STEP2 EXEC PGM=IEHPROGM,COND=(O,EQ,STEP1) //SYSPRINT DD SYSQUT=A //LIBY DD DSNAME=MODLIBY,DISP=(OLO), .1/ UNIT=3330-1,VOL=SER=333101 DD JE //SYSIN SCRATCH DSNAME=MODLIBY,YOL=3330-l=333l0l .1)( //STEP3 EXEC PGM=IEBCOPY,COND=(O,EQ,STEP1) //SYSPRINT DD SYSOUT=A //SYSUT3 DD UNIT=SYSDA,SPACE=(TRK,(S,I» //SYSUT4 DD UNIT=SYSDA,SPACE=(TRK,(S,l» DD DSNAME=MODLIBY,DISP=(NEH,KEEP), //LIBY // UNIT=3330-1,VOL=SER=33310l, // SPACE=(TRK,(2,1,S) //TAPEA DD DSNAME=COPYLIBY,DISP=(OLO,KEEP), // UNIT=tape,VOL=SER=717000,LABEL=(,NL) //SYSIN DD JE COPYMOD INDD=TAPEA,OUTDD=LIBY /)( The control statements are discussed below. 96 • STEPI marks the beginning of the IEBCDPY job step. • LIBY DD defines the partitioned data set MOOLIBY, which has also been previously defined. • TAPEA DD defines the tape data set CDPYLIBY. • The COpy statement makes a backup copy of MDDLIBY and places it in the data set COPYLIBY. • STEP2 marks the beginning of the IEHPROGM job step. STEPI fails, STEP2 will not be executed. • The SCRATCH statement scratches the old data set MDOLIay but does not remove it from the catalog. • STEP3 marks the beginning of the second IEBCDPY job step. STEP3 will not be executed if STEPI fails. • The COPYMOD statement copies all members back to MDOLIBY, alters their RLD counts, and reblocks them. The new MDDLlay will be compressed, but will not necessarily occupy the same MVS/370 Utilities If TNL GN26-8133 (30 Mar 84) to OC26-4065-1 ) space on the disk as it did before being scratched and reallocated. IEBCOPY Program 96.1 IEBDG PROGRAM IEBDG is a data set utility used to provide a pattern of test data to be used as a programming debugging aid. An output data set, containing records of any format, can be 'created through the use of utility control statements, with or without input data. An optional user exit passes control to a user routine to monitor each output record before it is written. Sequential, ISAM, and partitioned data sets can be used for input or output. You can code utility control statements to generate a pattern of data that can be analyzed quickly for predictable results. When you define the contents of a field, the following must be decided: • What type of pattern--IBM-supplied or user-supplied--is to be placed initially in the defined field. • What action, if any, is to be performed to alter the contents of the field after it is selected for each output record. TYPES OF PATTERNS IBH-SUPPLIED PATTERNS IBM supplies seven patterns: • • Alphameric • • • Zoned decimal • Collating sequence • Random number Alphabetic Packed decimal Binary number You may choose one of them when defining the contents of a field. All patterns except the binary and random number patterns repeat in a given field, provided that the defined field length is sufficient to permit repetition. For example, the alphabetic pattern is: ABCDEFGHIJKlMNOPQRSTUVWXYZABCDEFG ... Figure 34 on page 98 shows the IBM-supplied patterns. IEBCOPY Program 97 Expressed in Printable Characters Type Expressed in Hexadecimal Alphameric C1 C2 ... E9, Alphabetic C1 C2 ... E9 AB ... Z Zoned Decimal FOFO ... F9F9 00 ... 99 Packed Decimal 0000 ... 001C (Positive pattern) 0000 ... 001D (Negative pattern) Not applicable Binary Number 00000001, (Positive FFFFFFFF, (Negative Not applicable Collating Sequence 40 ... F9 b¢.«+I&!$*);~-/,X_>?:#=" Random Number Random hexadecimal digits Not applicable FO ... F9 etc. pattern) etc. pattern) AB ... Z, O... 9 A... Z O... 9 Figure 34. IBM-Supplied Patterns A packed decimal or binary number is right-aligned in the defined field. You can specify a starting character when defining an alphameric, alphabetic, or collating-sequence field. For example, a 10-byte alphabetic field for which "H" is specified as the starting character would appear as: HIJKlMNOPQ The same 10-byte alphabetic field with no specified starting character would appear as: ABCDEFGHIJ You can specify a mathematical sign when defining a packed decimal or binary field. If no sign is specified, the field is assumed to be positive. USER-SPECIFIED PICTURES Instead of selecting an IBM-supplied pattern, you may wish to specify a picture to be placed in the defined field. The user can provide: • • • An EBCDIC character string A decimal number to be converted to packed decimal by IEBDG A decimal number to be converted to binary by IEBDG When you supply a picture, a picture length must be specified that is equal to or less than the specified field length. An EBCDIC picture is left-aligned in a defined field; a decimal number that is converted to packed decimal or to binary is right-aligned in a defined field. You can initially load (fill) a defined field with either an EBCDIC character or a hexadecimal digit. For example, the 10-byte picture "BADCFEHGJI" is to be placed in a IS-byte field. An EBCDIC "2" is to be used to pad the field. The result is BADCFEHGJI22222. (If no fill character is provided, the remaining bytes contain binary zeros.) Remember that the fill character, if specified, is written in each byte of the defined field prior to the inclusion of an IBM-supplied pattern or user-supplied picture. 98 MVS/370 Utilities MODIFICATION OF SELECTED FIELDS IEBDG can be used to change the contents of a field in a specified manner. One of eight actions can be selected to change a field after its inclusion in each applicable output record. These actions are! • Ripple • Shift left • Shift right • • • • • Truncate left Truncate right Fixed Roll Wave Figure 35 shows the effects of each of the actions on a 6-byte alphabetic field. Note that the roll and wave actions are applicable only when a user pattern is supplied. In addition, the result of a ripple action depends on which type of pattern--IBM-supplied or user-supplied--is present. Rippl.-u ..r· suppli.d pictur. ABCOEF Rippl.... IBM· supplied forINt ABCOEF Shift I.ft ABCOEF Shih right ABCOEF ABCOE BCOEFA BCOEFG BCOEF COEFAB COEFGH COEF OEFABC OEFGHI OEF EFABCO EFGHIJ EF FABCOE FGHIJK F ABCOEF GHIJKL ABCOEF BCOEFA HIJKLM BCOEF Truncate left ABCOEF Truncate right ABCOEF Fixed ABCOEF ABCOE Roll-usersupplied pictur. AAA ABCOE ABCOEF AAA BCOEF COEF oEF EF F ABCOEF BCOEF ABCO ABC AB A ABCOEF AAA ABCO ABCOEF ABC ABCOEF AB ABCOEF A ABCOEF AAA ABCOEF ABCOE ABCOEF ABCOEF AAA AAA AAA Wave-u.rsupplied picture AAA AAA AAA AAA AAA AAA AAA AAA ~AA Figure 35. IEBDG Actions If no action is selected, or if the specified action is not compatible with the format, the fixed action is assumed by IEBDG. IEBDG Program 99 INPUT AND OUTPUT IEBDG uses the following input: • An input data set which contains records to be used in the construction of an output data set or partitioned data set member. The input data sets are optional; that is, output records can be created entirely from utility control statements. • A control data set that contains any number of sets of utility control statements. IEBDG produces the following output: • An output data set that is the result of the IEBDG operation. One output data set is created by each set of utility control statements included in the job step. • A message data set that contains informational messages, the contents of applicable utility control statements, and any error messages. Input and output data sets may be sequential, indexed sequential (ISAM), or partitioned data set members. BDAM and VSAM are not supported. RETURN CODES IEBDG returns a code in register 15 to indicate the results of program execution. The return codes and their meanings are listed below. Codes Meaning 00 (00 hex) Successful completion. 04 (04) A user routine returned a code of 16 to IEBDG. job step is terminated at the user's request. OS (OS) An error occurred while processing a set of utility control statements. No data is generated following the error. Processing continues normally with the next set of utility control statements, if any. 12 (OC) An error occurred while processing an input or output data set. The job step is terminated. 16 (10) An error occurred from which recovery is not possible. The job step is terminated. The Figure 36. IEBDG Return Codes CONTROL IEBDG is controlled by job control statements and utility control statements. The job control statements are used to execute or invo.ke IEBDG and define the data sets used and produced by IEBDG. Utility control statements are used to control the functions of the program and to define the contents of the output records. 100 MVS/370 Utilities uJB CONTROL STATEMENTS Figure 37 shows the job control statements for IEBDG. Both input and output data sets can contain fixed, variable, or undefined records. statement Use JOB Initiates the job. EXEC Specifies the program name (PGM=IEBDG) or, if the job control statements reside in a procedure library, the procedure name. Additional information can be specified in the EXEC statement; see "PARM Information on the EXEC Statement" on page 102. SYSPRINT DD Defines a sequential message data set. The data set can be written on a system output device, a tape volume, or a DASD volume. SYSIN DD Defines the control data set, which contains the utility control statements and, optionally, input records. The data set normally resides in the input stream; however, it can be defined as a sequential data set or as a member of a partitioned data set. seqinset DD Defines an optional sequential or ISAM data set used as input to IEBDG. The data set can reside on a tape volume or on a DASD volume. Any number of these statements (each having a ddname different from all other ddnames in the job step) can be included in the job step. Each DD statement is subsequently referred to by a DSD utility control statement. parinset DD Defines an optional input partitioned data set member residing on a DASD volume. Any number of these statements (each having a ddname different from all other ddnames in the job step) can be included in the job step. The DD statement is subsequently referred to by a DSD utility control statement. seqout DD Defines an output (test) sequential or ISAM data set. Any number of these DD statements can be included per job step; however, only one statement is applicable per set of utility control statements. parout DD Defines an optional output partitioned data set member to be created and placed on a DASD volume. Any number of these DD statements (each DD statement referring to the same or to a different data set) can be included per job step; however, only one statement is applicable per set of utility control statements. Figure 37. Job Control Statements for IEBDG The DSORG subparameter must be included in the DCB subparameters if the input or output data set has an indexed sequential (ISAM) organization (DSORG=IS). If members of a partition~d data set are used, DSORG=PO or DSORG=PS may be coded. If the DSORG subparameter is not coded, DSORG=PS is assumed. IEBDG Program 101 For an ISAM data set, the key length must be specified in the DCB. Refer to Data Management Services for information on estimating space allocations. PARH Information on the EXEC statement The EXEC statement can include an optional PARM parameter to specify the number of lines to be printed between headings in the message data set, coded as follows: PARH=LINECT=nnnn The nnnn is a 4-digit decimal number that specifies the number of lines (0000 to 9999) to be printed per page of output listing. If PARM is omitted, 58 lines are printed between headings (unless a channel 12 punch is encountered in the carriage control tape, in which case a skip to channel 1 is performed and a heading is printed). If IEBDG is invoked, the line-count option can be passed in a parameter list that is referred to by a subparameter of the LINK or ATTACH macro instruction. In addition, a page count can be passed in a six-byte parameter list that is referred to by a subparameter of the LINK or ATTACH macro instruction. For a discussion of linkage conventions, refer to "Invoking Utility Programs from a Problem Program" on page 13. SYSPRINT DD statement If the SYSPRINT DD statement is omitted, no messages are written. The block size for the SYSPRINT data set must be a multiple of 121. Any blocking factor can be specified. SYSIN DD statement The block size for the SYSIN data set must be a multiple of 80. Any blocking factor can be specified. seqinset DD statement The "seqinset" DD statement can be entered: //seqinset DD DSNAME=setname,UNIT=xxxx,DISP=(OLD,KEEP), // VOLUME=SER=xxxxxx,LABEL=( ... , ... ), // DCB=(applicable subparameters) The LABEL parameter is included only for a magnetic tape volume. If the input data set has an indexed sequential organization, DSORG=IS should be coded in the DCB parameter. 102 MVS/370 Utilities parinset DD statement The "parinset" DD statement can be entered: //parinset DD DSNAME=setnameCmembername),UNIT=xxxx, // DISP=COlD,KEEP),VOlUME=SER=xxxxxx, // DCB=Capplicable subparameters) seqout DD statement The "seqout" DD statement can be entered: //seqout DD DSNAME=setname, UNIT=xxxx, // DISP=C,KEEP),VOLUME=SER=xxxxxx, // DCB=Capplicable subparameters) The LABEL parameter is included for magnetic tape; the SPACE parameter is included for DASD. parout DD statement The "parout" DD statement can be entered: //parout DD DSNAME=setnameCmembername),UNIT=xxxx, // DISP=C,KEEP),VOLUME=SER=xxxxxx,DCB=(applicable // DCB=Capplicable subparameters), // SPACE=Capplicable 5ubparameter) The SPACE parameter is included on the parout DD statement when creating the first member to be placed in a partitioned data set. The partitioned data set defined by "parout" is a new member and has a new directory entry. No information is copied from the previous directory. IEBDG Program 103 UTILITY CONTROL STATEMENTS IEBDG is controlled by the following utility control statements: statement Use DSD Specifies the ddnames of the input and output data sets. One DSD statement must be included for each set of utility control statements. FD Defines the contents and lengths of fields to be used in creating output records. CREATE Defines the contents of output records. REPEAT Specifies the number of times a CREATE statement or a group of CREATE statements are to be used in generating output records. END Marks the end of a set of IEBDG utility control statements. Figure 38. IEBDG Utility Control Statements Any number of sets of control statements can appear in a single job step. Each set defines one data set. General continuation requirements for utility control statements are descri bed in "Cont i nu i ng Ut i 1 i ty Control Statements" on pag_e 5. FD or CREATE utility control statements that contain a PICTURE parameter and are to be continued must have a nonblank character in column 72. The continuation must begin in column 4 on the next statement. DSD statement The DSD statement marks the beginning of a set of utility control statements and specifies the data sets that IEBDG is to use as input. The DSD statement can be used to specify one output data set and any number of input data sets for each application of IEBDG. The format of the DSD statement is: [label] DSD OUTPUT=(ddname) [,INPUT=(ddname, ••• )] The ddname SYSIN must not be coded in the INPUT parameter. Each parameter should appear no more than once on any DSD statement. 104 MVS/370 Utilities FD statement The FD statement defines the contents and length of a field that will be used subsequently by a CREATE statement (or statements) to form output records. A defined field within the input logical record may be selected for use in the output records if it is referred to, by name, by a subsequent CREATE statement. Figure 39 shows how fields defined in FD statements are placed in buffer areas so that subsequent CREATE statements can assign selected fields to specific output records. F D Statements-define fields Defines field 5 Contents are placed in buffers so that subsequent CREATE statements can selectively create output records. Field 5 CREATE Statementcreates output record from selected fields Figure 39. Defining and Selecting Fields for Output Records Using IEBDG IEBDG Program 105 .Figure 40 on page 106 shows how the FD statement is used to specify a field in an input record to be used in output records. The left-hand side of the figure shows that a field in the input record beginning at byte 50 is selected for use in the output record. The right-hand side of the figure shows that the field is to be placed at byte 20 in the output record. I nput record 50 --.1. . ._ _ 40 80 LENGTH Same as input field Figure 40. Field Selected from the Input Record for Use in the Output Record The format of the FD statement is: [labell FD NAHE=.ruu!!..@ , LENGTH=length-in-bytes [,STARTLOC=starting-byte-locationl [,FILL=('character'IX'2-hex-digits']] [,FORHAT=pattern[,CHARACTER=character]I ,PICTURE=length,('character-string'l P'decimal-number'l B'decimal-number']] [,SIGN=sign] [,ACTION=action] [,INDEX=number[,CYCLE=number][,RANGE=number]] [,INPUT=ddname] [,FROMLOC=number] Some of the FD keywords do not apply when certain patterns or pictures are selectad by the user; for example, the INDEX, CYCLE, RANGE, and SIGN parameters are used only with numeric fields. Figure 41 on page 107 shows which IEBDG keywprds can be used with the applicable pattern or picture chosen by'the user. Each keyword should appear no more than once on any FD statement. 106 MVS/370 Utilities FORHAT/PICTURE Value compatible Parameters FORMAT=Al (alphabetic) FORMAT=AN (alphameric) FORMAT=CO (collating seq.) ACTION=Sl ACTION=SR ACTION=Tl ACTION=TR ACTION=FX ACTION=RP FORMAT=ZD (zoned decimal) FORMAT=PD (packed decimal) FORMAT=BI (binary) INDEX=x CYClE=x RANGE=x SIGN=x 1 PICTURE=P'n' (packed decimal) PICTURE=B'n' (binary) INDEX=x CYCLE=x RANGE=x SIGN=x 1 PICTURE='string' (EBCDIC) ACTION=SL ACTION=SR ACTION=TL ACTION=TR ACTION=FX ACTION=RP ACTION=WV ACTION=RO Figure 41. Compatible (shift left) (shift right) (truncate left) (truncate right) (fixed) (ripple) (shift left) (shift right) (truncate left) (truncate right) (fixed) (ripple) (wave) (roll) IEBDG~Operations Note to Figure 41: 1 Zoned decimal numbers (ZD) do not include a sign. CREATE statement The CREATE statement defines the contents of a record (or records> to be made available to a user routine or to be written directly as an output record (or records>. The format of the CREATE statement is: [label] CREATE [QUANTITY=number] [,FILL=C'character'IX'2-hex-digits')l [,INPUT=ddnameISYSIN[(~)]l [,PICTURE=length,startlocC,'character-string'l ,P'decimal-number'l ,B'decimal-number')] [,NAHE=~I(namel,namen ... )1 (ngmg(COPY=number,namel,namen ... ), ••• )] [,EXIT=routinename] After processing each potential output record, the user routine should provide a return code in register 15 to instruct IEBDG how to handle the output record. The user codes are listed below. IEBDG Program 107 Codes Meaning 00 (00 hex) The record is to be written. 04 (04) The record is not to be written. The skipped record is not to be counted as a generated output record; processing is to continue as though a record were written. If skips are requested through user exits and input records are supplied, each skip causes an additional input record to be processed in the generation of output records. For example, if a CREATE statement specifies that 10 output records are to be generated and a user e~it indicates that two records are to be skipped, 12 input records are processed. 12 (OC) The processing of the remainder of this set of utility control statements is to be bypassed. Processing is to continue with the next DSD statement. 16 (10) All processing is to halt. Figure 42. IEBDG User Exit Return Codes When an exit roufine is loaded and you return control to IEBDG, register 1 contains the address of the first byte of the output record. Each keyword should appear no more than once on any CREATE statement. Figure 43 shows the addition of field X to two different records. In record 1, field X is the first field referred to by the CREATE statement; therefore, field X begins in the first byte of the output record. In record 2, two fields, field A and field B, have already been referred to by a CREATE statement; field X, the next field referred to, begins immediately after field B. Field X does not have a special starting location in this example. Record 1 21 80 Record 2 41 61 80 ~------r-------r------- Figure 43. Default Placement of Fields within an Output Record Using IEBDG You can also indicate that after it has been referred statements, that 1s, after made. A modification will field. 108 MVS/370 Utilities a numeric field is to be modified to n times by a CREATE statement or n cycles, a modification is to be add a user-specified number to a The CREATE statement constructs an output record by referring to previously defined fields by name and/or by providing a picture to be placed in the record. You can generate multiple records with a single CREATE statement. When defining a picture in a CREATE statement, the user must specify its length and starting location in the output record. The specified length must be equal to the number of specified EBCDIC or numeric characters. (When a specified decimal number is converted to packed decimal or binary, it is automatically right-aligned.) Figure 44 shows three ways in which output records can be created from utility control statements. 1. Fields only Output record 3. Picture only C_R_E_A_TE_~~•••r'Pul """d (. . __ Picture Figure 44. Creating Output Records with Utility Control Statements As an alternative to creating output records from utility control statements alone, you can provide input records, which can be modified and written as output records. Input records can be provided directly in the input stream, or in a separate data set. Only one input data set can be read for each CREATE statement. As previously mentioned, the CREATE statement is responsible for the construction of an output record. An output record is constructed in the following order: 1. A fill character, specified or default (binary zero), is initially loaded into each byte of the output record. 2. If the INPUT operand is specified on the CREATE statement, and not on an FD statement, the input records are left-aligned in the corresponding output record. 3. If the INPUT operand specifies a ddname in any FD statement, only the fields described by the FD statementCs) are placed in the output record. IEBDG Program 109 4. FD fields, if any, are placed in the output record in the order of the appearance of their names in the CREATE statement. 5. A CREATE statement picture, if any, is placed in the output record. IEBDG provides a user exit so you can provide your own routine to analyze or further modify a newly constructed record before it is placed in the output data set. See Appendix A, "Exit Routine linkage" oh page 438 for information on linking to a user exit routine. A set of utility control statements contains one DSD statement, any number of FD, CREATE, and REPEAT statements, and one END statement when the INPUT parameter is omitted from the FD card. When selecting fields from an input record CFD INPUT=ddname), the field must be defined by an FD statement within each set of utility control statements. In that case, defined fields for field selection are not usable across sets of utility control statements; such an FD card may be duplicated and used in more than one set of utility control statements within the job step. REPEAT statement The REPEAT statement specifies the number of times a CREATE statement or group of CREATE statements is to be used repetit;vely in the generation of output records. The REPEAT statement precedes the CREATE statements to which it applies. Figure 45 shows a group of five CREATE statements repeated n times. CREATE CREATE CREATE CREATE CRE.ATE (11 (2) (3) (4) (5) CREATE "tREATE CMATE CREATE (1' (2, (3) (4) elfrATE (5) • ·· CREATE CREATE CREATE CREATE CREATE (1) (2) (3) (4) (5) Figure 45. Repetition Caused by the REPEAT Statement Using IEBDG The format of the REPEAT statement is: REPEAT QUANTITY=number[,CREATE=number] END statement The END statement is used to mark the end of a set of utility control statements. Each set of control statements can pertain 110 MVS/310 Utilities to any number of input data sets but only a single output data set. The format of the END statement is: I[label] END IEBDG Program III Parameters Applicable Control statements ACTION FD Description of Parameters ACTION=action specifies how the contents of a defined field are to be altered (if at all) after the field's inclusion in an output record. These values can be coded: FX RO specifies that the contents of a defined field are to remain fixed after the field's inclusion in an output record. specifies that the contents of a defined field are to be rolled after the field's inclusion in an output record. The picture is incremented to the left by one byte for each output record, until ~he first non-blank character of the picture is in field byte 1. At that time, the character string is reset to its original picture position. RO can be used only for a user-defined field. For RO to be effective, the picture length must be less than the field length. RP SL SR TL TR 112 MVS/370 Utilities specifies that the contents of a defined field are to be rippled after the field's inclusion in an output record. specifies that the contents of a defined field are to be shifted left after the field's inclusion in an output record. specifies that the contents of a defined field are to be shifted right after the field's inclusion in an output record. specifies that the contents of a defined field are to be truncated left after the field's inclusion in an output record. specifies that the contents of a defined field are to be truncated right after the field's inclusion in an output record. Parameters ACTION (continued) Applicable Control statements FD (continued) Description of parameters wv specifies that the contents of a defined field are to be waved after the field's inclusion in an output record. The picture is incremented to the left by one byte for each output record, until the first non-blank character of the picture is in field byte 1. At this time, the character string is reset to its original picture position. WV can be used only for a user-defined field. For WV to be effective, the picture length must be less than the field length. Default: FX See Figure 41 on page 107 for system actions compatible with FORMAT and PICTURE values. See Figure 35 on page 99 for examples of IEBDG ACTION patterns. CREATE REPEAT CREATE=number specifies the number of following CREATE statements to be included in the group. Default: Only the first CREATE repeated. stat~ment is EXIT CREATE EXIT=routinename specifies the name of the user routine that is to receive control from IEBDG before writing each output record. FIll CREATE FD FILL=C'character'IX'2-hex-digits'] specifies a value that is to be placed in each byte of the output record before any other operation in the construction of record. These values can be coded: 'character' specifies an EBCDIC character that is to be placed in each byte of the output record. X'2-hex-digits' specifies 2 hexadecimal digits (for example, FIll=X'40', or FIll=X'FF') to be placed in each byte of the output record. Default: Binary zeros are placed in the output record. IEBDG Program 113 Parameters APplicable Control statements FORMAT FD Description of Parameters FORMAT=pattern[,CHARACTER=characterJ specifies an IBM-supplied pattern that is to be placed in the defined field. FORMAT must not be used when PICTURE is used. The values that' can be coded are: pattern specifies the IBM-supplied patterns, as follows: AL AN II CO PD RA ZD specifies an alphabetic pattern. specifies an alphameric pattern. specifies a binary pattern. specifies a collating sequence pattern. specifies a packed decimal pattern. specifies a random binary pattern. specifies a zoned decimal pattern. CHARACTER=character specifies the starting character of a field. See "IBM-Supplied Patterns" on page 97 for details on starting characters. FROMLOC FD FROMLOC=number specifies the location of the selected field within the input logical record. The number represents the position in the input record. If, for example, FROMLOC=10 is coded, the specified field begins at the tenth byte; if FROMlOC=1 is coded, the specified field begins at the first byte. (For variable-length records, significant data begins on the first byte after the 4-byte length descriptor.) When retrieving data sets with RECFM=F or FB, and RKP>O, the record consists of the key plus the data with embedded key. To copy the entire record, the output DCB=lRECL has to be input LRECl + KEYlEN. If only the data (which includes the embedded key) is to be copied, the FROMlOC must point to start of the data, that is, FROMLOC=keylength. Default: The start of the input record. 114 MVS/370 Utilities Parameters Applicable Control statements INDEX FD Description of Parameters INDEX=number[,CYCLE=numberl[,RANGE=numberl specifies a decimal number to be added to this field whenever a specified number of records have been written. INDEX is valid only with FORMATs ZD, PD, BI, or PICTURES P'n', B'n'. Additional values can be coded: ; CYCLE=number specifies a number of output records (to be written as output or made available to an exit routine) that are treated as a group by the INDEX keyword. Whenever this field has been used in the construction of the specified number of records, it is modified as specified in the INDEX parameter. For example, if CYCLE=3 is coded, output records might appear as 111 222 333 444 etc. This parameter can be coded only when INDEX is coded. RANGE=number specifles an absolute value which the contents of this field can never exceed. If an index operation attempts to exceed the specified absolute value, the contents of the field as of the previous index operation are used. Default: No indexing is performed. If CYCLE is omitted and INDEX is coded, a CYCLE value of 1 is assumed; that is, the field is indexed after each inclusion in a potential output record. IEBDG Program 115 Parameters Applicable Control statements INPUT DSD Description of Parameters INPUT=(ddname, ••• ) specifies the ddname of a DD statement defining a data set used as input to the program. Any number of data sets can be included as input--that is, any number of ddnames referring to corresponding DD statements can be coded. Whenever ddnames are included on a continuation card, they must begin in column 4. The ddname SYSIN must not be coded as the INPUT parameter on the DSD control statement. Each ddname should not appear more than once on any control statement. FD INPUT=ddname specifies the ddname of a DD statement defining a data set used as input for field selection. Only a portion of the record described by the FD statement will be placed in the output record. If the record format of the output data set indicates variable-length records, the position within the output record will depend upon where the last insert into the output record was made unless STARTlOC is specified. The ddname SYSIN must not be coded as the INPUT parameter on the FD control statement. Each ddname should not appear more than once on any control statement. A corresponding ddname must also be specified in the associated CREATE statement in order to have the input recordCs) read. 116 MVS/370 Utilities Parameters INPUT (continued) APplicable Control statements CREATE Description of Parameters INPUT=ddnameISVSIN[(ccccl] defines an input data set whose records are to be used in the construction of output records. If INPUT is coded, QUANTITY should also be coded, unless the remainder of the input records are all to be processed by this CREATE statement. If INPUT is specified in an FD statement referenced by this CREATE statement, there must be a corresponding ddname specified in the CREATE statement in order to get the input record(s) read. These values can be coded: ddname specifies the ddname of a DD statement defining an input data set. SYSIN[cccc] specifies that the SYSIN data set (input stream) contains records (other than utility control statements) to be used in the construction of output records. If SVSIN is coded, the input records follow this CREATE statement (unless the CREATE statement is in a REPEAT group, in which case the input records follow the last CREATE statement of the group). ££££ can be any combination of from 1 to 4 EBCDIC characters. If cccc is coded, the input records are delimited by a record containing EBCDIC characters beginning in column 1. When INPUT=SYSIN with no cccc value, the input records are delimited from any additional utility control statements by a record containing $$$E in columns 1 through 4. LENGTH FD LENGTH=lgngth-in-bytes specifies the length in bytes of the defined field. For variable records, 4 bytes of length descriptor must be added. For ACTION=RP or WV, the length is limited to 16383 bytes. For ACTION=RO, the length is limited to 10922 bytes. IEBDG Program 117 Parameters APplicable Control statements NAME FD NAHE=name specifies the name of the field defined by this FD statement. CREATE NAHE=~I(namel,namen ••• )I(~,(COPY= Description of Parameters number,name~,namen ••• ) ••• ) specifies the name or names of previously defined fields to be included in the applicable output records. If both NAME and PICTURE are omitted, the fill character specified in the CREATE statement appears in each byte of the applicable output record. These values can be coded: (namel, ••• ) -----specifies the name or names of a field or fields to be included in the applicable output record(s). Each field (previously defined in the named FD statement) is included in an output record in the order in which its name is encountered in the CREATE statement. COPY=number indicates that all fields named in the inner parentheses (maximum of 20) are to be treated as a group and included the specified number of times in each output record produced by this CREATE statement. Any number of sets of inner parentheses can be included with NAME. Within each set of inner parentheses, COpy must appear before the name of any field. OUTPUT 118 DSD MVS/370 Utilities OUTPUT=(ddname) speClfies the ddname of the DD statement defining the output data set. Parameters PICTURE Applicable Control statements Description of Parameters FD CREATE PICTURE=length[,startloc][,'character-string'l ,P'decimal-number'I,B'decimal-number'l specifies the length, starting byte (CREATE only), and the contents of a user-supplied picture. For FD, PICTURE must not be used when FORMAT is used. If both PICTURE and NAME are omitted, the fill character specified in the CREATE statement appears in each byte of applicable output records. These values can be coded: length specifies the number of bytes that the picture will occupy. length must be equal to or less than the LENGTH parameter value in the FD statement. startloc (CREATE only) specifies a starting byte (within any applicable output record) in which the picture is to begin. 'character-string' specifies an EBCDIC character string that is to be placed in the applicable record(s). The character string is left-aligned at the defined starting byte. A character string may be broken in column 71, a non-blank character in column 72 is required, and it m~st be continued in column 4 of the next statement. The number of characters within the quotation marks must equal the number specified in the length subparameter (for FD statements). P 'decimal-number' specifies a decimal number that is to be converted to packed decimal and right-aligned (within the boundaries of the defined length and starting byte) in the output records or defined field. The number of characters within the quotation marks must equal the number specified in the length subparameter (for FD statements). B 'decimal-number' specifies a decimal number that is to be converted to binary and right-aligned (within the boundaries of the defined length and starting byte) in the output records or defined field. The number of characters within the quotation marks must equal the number specified in the length subparameter (for FD statements). IEBDG Program 119 Parameters Applicable Control statements QUANTITY CREATE Description of Parameters QUANTITY=number specifies the number of records that this CREATE statement is to generate; the contents of each record are specified by the other parameters. If both QUANTITY and INPUT are coded t and the quantity specified is greater than the number of records in the input data sett the number of records created is equal to the number of input records to be processed plus the generated data up to the specified number. Default: If QUANTITY is omitted and INPUT is not specified, only one output record is created. If QUANTITY is omitted and INPUT is specified, the number of records created is equal to the number of records in the input data set. If both QUANTITY and INPUT are codedt but the QUANTITY is less than the number of records in the input data sett then only the number of records specified by QUANTITY are written to the output data set. REPEAT QUANTITY=number specifies the number of times the defined group of CREATE statements is to be used repetitively. This number cannot exceed 65,535. SIGN FD SIGN=sign specifies a mathematical sign (+ or -), to be used when defining a packed decimal or binary field. Default: Positive (+). STARTlOC FD STARTLOC=starting-byte-location specifies a starting location (within all output records using this field) in which a field is to begin. For example, if the first byte of an output record is chosen as the starting location, the keyword is coded STARTlOC=l; if the tenth byte is chosen, STARTlOC=10 is coded, etc. Default: The field will begin in the first available byte of the output record (determined by the order of specified field names in the applicable CREATE statement). For variable records the starting location is the first byte after the length descriptor. 120 MVS/370 Utilities IEBDG EXAMPLES The following examples illustrate some of the uses of IEBDG. Figure 46 can be used as a quick reference guide to IEBDG examples. The numbers in the "Example" column refer to examples that follow. operation Data Set Organization Device Comments Example Place binary zeros in selected fields. Sequential 9-track Tape Blocked input and output. 1 Ripple alphabetic pattern Sequential 9-track Tape, Disk Blocked input and output. 2 Create output records from utility control statements Sequential Disk Blocked output. 3 Modify records from partitioned members and input stream Partitioned, Sequential Disk Reblocking is performed. Each block of output records contains ten modified partitioned input records and two input stream records. 4 Create partitioned members for utility control statements Partitioned Disk Blocked output. One set of utility control statements per member. 5 Roll and wave user-supplied patterns Sequential Disk Output records are created from utility control statements. 6 Create indexed sequential data set using field selection and data generation Sequential, Indexed Sequential Disk Tape Output records are created by augmenting selected input fields with generated data. 7 Figure 46. IEBDG Example Directory Examples that use disk or tape in place of actual device numbers must be changed before use. See "DASD and Tape Device Support" on page 3 for valid device number notation. IEBDG EXAMPLE 1 In this example, binary zeros are placed in two fields of 100 records copied from a sequential data set. After the operation, each record in the copied data set (OUTSET) contains binary zeros in locations 20 through 29 and 50 through 59. IEBDG Program 121 //ClEAROUT // //SYSPRINT //SEQIN JOB EXEC DD DD // // // //SEQOUT DD // // // //SYSIN DD DSD FD FD CREATE END "MSGLEVEl=l PGM=IEBDG SYSOUT=A DSNAME=INSET,UNIT=tape,DISP=(OlD,KEEP), DCB=(RECFM=FB,lRECl=aO,BlKSIZE=aOO), lABEl=(,NL), VOlUME=SER=222222 DSNAME=OUTSET,UNIT=tape,VOlUME=SER=222333, DCB=(RECFM=FB,lRECL=aO,BlKSIZE=aOO), DISP=(,KEEP), lABEl=(,Nl) * OUTPUT=(SEQOUT),INPUT=(SEQIN) NAME=FIElDl,lENGTH=10,STARTlOC=20 NAME=FIElD2,LENGTH=10,STARTlOC=50 QUANTITY=100,INPUT=SEQIN,NAME=(FIElD1,FIElD2) The control statements are discussed below: • SEQIN DD defines a sequential input data set (INSET). The data set was originally written on a unlabeled tape volume. • SEQOUT DD defines the test data set (OUTSET). The output records are identical to the input records, except for locations 20 through 29 and 50 through 59, which contain binary zeros at the completion of the operation. • SYSIN DD defines the control data set, which follows in the input stream. • DSD marks the beginning of a set of utility control statements and refers to the DD statements defining the input and output data sets. • The first FD statement defines an aO-byte field of input data. • The first and second FD statements create two 10-byte fields (FIELD1 and FIElD2) that contain binary zeros. The fields are to begin in the 20th and 50th bytes of each output record. • CREATE constructs 100 output records in which the contents of previously defined fields (FIElD1, FIELD2) are placed in their respective starting locations in each of the output records. Input records from data set INSET are used as the basis of the output records. • END signals the end of a set of utility control statements. IEBDG EXAMPLE 2 In this example, a 10-byte alphabetic pattern is rippled. At the end of the job step the first output record contains "ABCDEFGHIJ," followed by data in location 11 through ao from the input record; the second record contains "BCDEFGHIJK" followed by data in locations 11 through ao, etc. 122 MVS/370 Utilities //RIPPLE // //SYSPRINT //SEQIN JOB EXEC DD DD // // //SEQOUT DO // // // //SYSIN DSD FD FD DO CREATE END 72 "MSGlEVEl=1 PGM=IEBDG SYSOUT=A OSNAME=INSET,DISP=(OlO,KEEP),VOL=SER=222222, OCB=(RECFM=FB,lRECl=80,BlKSIZE=800), UNIT=tape OSNAME=OUTSET,UNIT=disk,VOLUME=SER=111111, OCB=(RECFM=FB,LRECL=80,BLKSIZE=800), DISP=(,KEEP), SPACE=(TRK,(lO,lO» * OUTPUT=(SEQOUT),INPUT=(SEQIN) NAME=FIElOl,INPUT=SEQIN,LENGTH=80 NAME=FIElD2,LENGTH=10,FORMAT=AL,ACTION=RP, C STARTLOC=l QUANTITY=100,INPUT=SEQIN,NAME=(FIELDl,FIELD2) The control statements are discussed below: • SEQIN DD defines an input sequential data set (INSET). data set was originally written on a 9-track, standard labeled tape volume. The • SEQOUT DO defines the test output data set (OUTSET). Ten tracks of primary space and ten tracks of secondary space are allocated for the sequential data set on a disk volume. • SYSIN DO defines the control data set, which follows in the input stream. • OSO marks the beginning of a set of utility control statements and refers to the DO statements defining the input and output data sets. • The FD statements create a lO-byte field in which the pattern ABCDEFGHIJ is initially placed. The data is rippled after each output record is written. • CREATE constructs 100 output records 1n which the contents of a previously defined field (FIELD1) are included. The CREATE statement uses input records from data set INSET as the basis of the output records. • END signals the end of a set of utility control statements. IEBDG EXAMPLE 3 In this example, output records are created entirely from utility control statements. Three fields are created and used in the construction of the output records. In two of the fields, alphabetic data is truncated; the other field is a numeric field that is incremented (indexed) by one after each output record is written. Figure 47 on page 124 shows the contents of the output records at the end of the job step. IEBOG Program 123 Field 1 Field 2 1 31 Field 3 (packed decimal) 61 ABCDEFGHIJKLMNOPORSTUVWXYZABCD ABCDEFGHIJKLMNOPORSTUVWXYZABCD FF ... FF BCDEFGHIJKLMNOPORSTUVWXYZABCD ABCDE FG H IJKLMNOPORSTUVWXYZABC FF ... FF CDEFGHIJKLMNOPORSTUVWXYZABCD ABCDEFGHIJKLMNOPORSTUVWXYZAB DEFGHIJKLMNOPORSTUVWXYZABCD ABCDEFGHIJKLMNOPORSTUVWXYZA EFGHIJKLMNOPORSTUVWXYZABCD ABCDE FG H IJ KLM NOPORSTUVWXYZ FF ... FF FF ... FF FF ... FF 71 80 123 ... 90 123 ... 91 123 ... 92 123 ... 93 123 ... 94 Figure 47. Output Records at Job step Completion 72 //UTlYONlY JOB "MSGLEVEl=1 // EXEC PGM=IEBDG //SYSPRINT DD SYSOUT=A //SEQOUT DD DSNAME=OUTSET,UNIT=disk,DISP=(,KEEP), // DCB=(RECFM=FB,lRECl=80,BlKSIZE=800), // SPACE=(TRK,(10,10», // VOlUME=SER=11111l //SYSIN DD DATA DSD OUTPUT=(SEQOUT) FD NAME=FIELDl,lENGTH=30,STARTlOC=1,FORMAT=AL,ACTION=Tl FD NAME=FIElD2,LENGTH=30,STARTlOC=31,FORMAT=Al,ACTION=TR FD NAME=FIELD3,lENGTH=10,STARTlOC=71,PICTURE=10, C P'1234567890',INDEX=1 CREATE QUANTITY=100,NAME=(FIELDl,FIElD2,FIElD3),FILL=X'FF' END The control statements are discussed below: 124 • SEQOUT DD defines the test output data set. Ten tracks of primary space and ten tracks of secondary space are allocated for the sequential data set on a disk volume. • SYSIN DD defines the control data set, which follows in the input stream. • DSD marks the beginning of a set of utility control statements and refers to the DD statement defining the output data set. • FD defines the contents of three fields to be used in the construction of output records. The first field contains 30 bytes of alphabetic data to be truncated left after each output record is written. The second field contains 30 bytes of alphabetic data to be truncated right after each output record is written. The third field is a 10-byte field containing a packed decimal number (1234567890) to be increased by one after each record is written. • CREATE constructs 100 output records in which the contents of previously defined fields (FIELD1, FIELD2, and FIELD3) are included. Note that after each record is written, FIELDI and FIELD2 are restored to full width. • END signals the end of a set of utility control statements. MVS/370 Utilities IEBDG EXAMPLE 4 In this example, two partitioned members and input records from the input stream are used as the basis of a partitioned output member. Each block of 12 output records contains 10 modified records from an input partitioned member and two records from the input stream. Figure 48 shows the content of the output partitioned member at the end of the job step. Output Records Input record 1) (Rightmost 67 bytes of INSET1 (MEMBA) from input stream from input stream record 10) (Rightmost 67 bytes of INSET1 (MEMBA) record 11 ) (MEMBA) record 20) Department 21 (Rightmost 67 bytes of INSET1 (MEMBA) Department 21 I nput record 1 Input record 2 Department 21 Department 21 I nput record 3 Input record 4 •• •• •• •• (Rightmost 67 bytes of INSET1 1st bloc k of 1 2 • ••• 10 11 12 2nd block of 12 •• •• 10 11 12 from input stream from input stream •• •• Department 21 Department 21 I nput record 19 Input record 20 Department 21 Department 21 Input record 21 I nput record 22 (Rightmost 67 bytes of INSET1 (MEMBA) • ••• (Rightmost 67 bytes of INSET1 (MEMBA) record 91) record 100) from input stream from input stream 10th block of 12 •• •• 10 11 12 (Rightmost 67 bytes of INSET2 (MEMBA) •• •• (Rightmost 67 bytes of INSET2 (MEMBA) record 1) record 10) 11th block of 12 •• •• 10 11 12 from input stream from in put stream ••• • Figure 48. Output Partitioned Member at Job Step Completion IEBDG Program 125 //MIX JOB EXEC //SYSPRINT DD //PARIN1 DD // // // //PARIN2 // // //PAROUT // // //SYSIN DSD FD REPEAT CREATE CREATE "MSGLEVEL=1 PGM=IEBDG SYSOUT=A DSNAME=INSET1(MEMBA),UNIT=disk,DISP=OLD, DCB=(RECFM=FB,LRECL=80,BLKSIZE=800,DSORG=PS), VOLUME=SER=111111 DO DSNAME=INSET2(MEMBA),UNIT=disk,DISP=OLD, DCB=(RECFM=FB,LRECL=80,BLKSIZE=960,DSORG=PS), VOLUME=SER=222222 DD DSNAME=PARSET(MEMBA),UNIT=disk,DISP=(,KEEP), VOLUME=SER=333333,SPACE=(TRK,(lO,lO,5», DCB=(RECFM=FB,LRECL=80,BLKSIZE=960,DSORG=PS) DD DATA OUTPUT=(PAROUT),INPUT=(PARINl,PARIN2) NAME=FIELD1,LENGTH=13,PICTURE=13,'DEPARTMENT 21' QUANTITY=10,CREATE=2 QUANTITY=10,INPUT=PARIN1,NAME=FIELD1 QUANTITY=2,INPUT=SYSIN (input records 1 through 20) REPEAT CREATE CREATE QUANTITY=10,CREATE=2 QUANTITY=10,INPUT=PARIN2,NAME=FIELD1 QUANTITY=2,INPUT=SYSIN (input records 21 through 40) END The control statements are discussed below: 126 • PARINI DD defines one of the input partitioned members. • PARIN 2 DD defines the second of the input partitioned members. (Note that the members are from different partitioned data sets.) • PAROUT DD defines the output partitioned member. This example assumes that the partitioned data set does not exist prior to the job step; that is, this DD statement allocates space for the partitioned data set. • SYSIN DD defines the control data set, which follows in the input stream. • DSD marks the beginning of a set of utility control statements and refers to the DD statements defining the input and output data sets. • FD creates a 13-byte field in which the picture "DEPARTMENT 21" is placed. • The first REPEAT statement indicates that the following group of two CREATE statements is to be repeated 10 times. • The first CREATE statement creates 10 output records. Each output record is constructed from an input record (from partitioned data set INSET1) and from previously defined FIELD1. • The second CREATE statement indicates that two records are to be constructed from input records included next in the input stream. MVS/370 utilities • The E record separates the input records from the REPEAT statement. The next REPEAT statement group is identical to the preceding group, except that records from a different partitioned member are used as input. • END signals the end of a set of utility control statements. IEBDG EXAMPLE 5 In this example, output records are created from three sets of utility control statements and written in three partitioned data set members. Four fields are created and used in the construction of the output records. In two of the fields (FIELD1 and FIELD3), alphabetic data is shifted. FIELD2 is fixed zoned decimal and FIElD4 is fixed alphameric. Figure 49 shows the partitioned data set members at the end of the job step. MEMBA Field 1 1 Field 2 51 Binary zeros 71 80 fill ABCDEFGHIJKLMNOPOASTUVWXYZABCD ABCDEFGHIJKLMNOPORST 00000000000000000001 BCDE F GH IJK LMNOPORSTUVWX YZABCD ABCDE FGHIJKLMNOPORS 0000000000000001 fill Field 3 31 CDEFGHIJKLMNOPORSTUVWXYZABCD DEFGHIJKI ~Aw'\PORSTUVWXYZA8C~_ - MEMBB Field 3 1 ABCDE FGH IJKLMNOPOR 0000000000000001 ABCDEFGHIJKI MNOPO OOOOOOOOO()O()OOl'~1 Field 3 Field 3 Field 2 21 41 61 fill - .1iJ1 80 A8CDEFGHIJKLMNOPORST ABCDEFGHIJKLMNOPQRST ABCD~FGHIJKLMNOPORST 00000000000000000001 ABCDEFGHIJKLMNOPORS ABCDEFGHIJKLMNOPORS ABCDE FGHIJKLMNOPORS 00000000000000000001 ABCDEFGHIJLKMNOPQR JBCDEFGHIJKLMNOPO MEMBC Field 4 1 ABCDEFGHIJKLMNOPOR ABCDEFGHIJKLMt-ll"\pn ABCDEFGHIJKLMNOPOR 00000000000000000001 ABCJl~c:r,'i!JIfI "~If"\pn ooonnoooo~ Field 1 Binary zeros 31 61 80 ABCDEFGHIJKLMNOPORSTUVWXYZ0123 ABCDE FG H IJ K LMNOPORSTUVWX YZABCD fill ABCDE FGHIJKLMNOPQRSTUVWXYZ0123 BCDEFGHIJKLMNOPORSTUVWXYZABCD fill fill ABCDEFGHIJKLMNOPQRSTUVWXYZ0123 CDEFGHIJKLMNOPORSTUVWXYZABCD ABCDEFGHI.IK LMNOPOR~TUVIAI'l(YZ0123 DEFGHIJKI a.!!!.Qf.Q.R~INXY7j\D"r) - - fill Figure 49. Partitioned Data Set Members at Job Step Completion The control statements are discussed below: • PAROUTl DD defines the first member (MEMBA) of the partitioned output data set. This example assumes that the partitioned data set does not exist prior to this job step; that is, this DD statement allocates space for the data set. • PAROUT2 and PAROUT3 DD define the second and third members, respectively, of the output partitioned data set. Note that each DD statement specifies DISP=OLD and UNIT=AFF=PAROUT1. • SYSIN DD defines the control data set that follows in the input stream. • DSD marks the beginning of a set of utility control statements and refers to the DD statement defining the member applicable to that set of utility control statements. • FD defines the contents of a field that is used in the subsequent construction of output records. IEBDG Program 127 I'I'UTSTS JOB EXEC I'I'SYSPRINT DD I'I'PAROUTl DD 1'1' 1'1' 1'1' 1'1' I'I'PAROUT2 DD I'I'PAROUT3 DD 1'1' 1'1' 1'1' 1'1' 1'1' 1'1' I'I'SYSIN DD DSD FD FD FD FD CREATE END DSD CREATE END DSD CREATE END , ,MSGlEVEl=l PGM=IEBDG SYSOUT=A DSNAME=PARSETCMEMBA),UNIT=disk, DISP=(, KEEP), VOlUME=SER=111111,SPACE=CTRK,CI0,10,5», DCB=CRECFM=FB,lRECl=80,BlKSIZE=800,DSORG=PS) DSNAME=PARSETCMEMBB),UNIT=AFF=PAROUT1, DCB=(RECFM=FB,lRECl=80,BlKSIZE=800,DSORG=PS), DISP=OlD, VOlUME=SER=111111 DSNAME=PARSETCMEMBC),UNIT=AFF=PAROUT1, DCB=CRECFM=FB,lRECl=80,BlKSIZE=800,DSORG=PS), DISP=OlD, VOlUME=SER=111111 DATA OUTPUT=(PAROUTl) NAME=FIElDl,lENGTH=30,FORMAT=Al,ACTION=Sl NAME=FIElD2,lENGTH=20,FORMAT=ZD NAME=FIElD3,lENGTH=20,FORMAT=Al,ACTION=SR NAME=FIElD4,lENGTH=30,FORMAT=AN QUANTITY=4,NAME=(FIElD1,FIElD3,FIElD2) OUTPUT=(PAROUT2) QUANTITY=4,NAME=CFIElD2,(COPY=3,FIElD3» OUTPUT=(PAROUT3) QUANTITY=4,NAME=(FIElD4,FIElD1) • CREATE constructs four records from combinations of previously defined fields. • END signals the end of a set of utility control statements. IEBDG EXAMPLE 6 In this example, 10 fields containing user-supplied EBCDIC pictures are used in the construction of output records. After a record is written, each field is rolled or waved, as specified in the applicable FD statement. Figure 50 shows the contents of the output records at the end of the job step. FI ELD1 FIELD 2 FIELD3 FIELD4 AAAAA BBBBB A AA BB AAAAA BBBBB A AA BB AAAAA A AA BB BBBBB AAAAA BBBBB A AA BB AAAAA AA BBBBB A BB AAAAA BBBBB A AA BB AAAAA BBBBB A AA BB AAAAA BBBBB A AA BB AAAAA AA BBBBB A BB AAAAA AA BB BBBBB A FIELD5 FIELD6 B AAA CCCCC AAA B CCCCC B AAA CCCCC B AAA CCCCC B AAA CCCCC B AAA CCCCC AAA B CCCCC B AAA CCCCC B AAA CCCCC AAA B CCCCC FIELD7 DODD DODD DODD DODD DODD DODD DODD DODD DODD DODD FIELDS C CC C CC C CC C CC C CC C· CC C CC C CC C CC C CC Figure 50. Contents of Output Records at Job Step Completion 128 MVS/370 Utilities FIELD9 DO 0 DO 0 DO 0 DO 0 DO 0 DO 0 DO 0 DO 0 DO 0 DO 0 FIELD10 CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC //ROllWAVE JOB // EXEC //SYSPRINT DD //OUTSET DD // // //SYSIN DSD FD FD FD FD FD FD FD FD FD _ FD CREATE END "MSGlEVEl=l PGM=IEBDG SYSOUT=A DSNAME=SEQSET,UNIT=disk,DISP=(,KEEP), VOlUME=SER=SAMP,SPACE=CTRK,(lO,lO», DCB=(RECFM=FB,lRECl=80,BlKSIZE=800) 72 DD *OUTPUT=(OUTSET) NAME=FIElDl,lENGTH=8,PICTURE=8,' AAAAA',ACTION=RO NAME=FIElD2,lENGTH=8,PICTURE=8,'BBBBB ',ACTION=RO NAME=FIElD3,lENGTH=8,PICTURE=8,'A AA ',ACTION=RO NAME=FIElD4,lENGTH=8,PICTURE=8,' BB B',ACTION=RO NAME=FIElD5,lENGTH=8,PICTURE=8,' AAA ',ACTION=RO NAME=FIElD6,lENGTH=8,PICTURE=8,' CCCCC',ACTION=WV NAME=FIElD7,lENGTH=8,PICTURE=8,' DDDD ',ACTION=WV NAME=FIElD8,lENGTH=8,PICTURE=8,' C CC ',ACTION=WV NAME=FIElD9,lENGTH=8,PICTURE=8,' DD D',ACTION=WV NAME=FIElDIO,lENGTH=8,PICTURE=8,' CCC ',ACTION=WV QUANTITY=300,NAME=(FIElDl,FIElD2,FIElD3, C FIElD4,FIElD5,FIElD6,FIElD7,FIElD8, C FIElD9,FIElD10) /*- •The control statements are discussed below: • OUTSET DD defines the output sequential data set on a disk volume. Ten tracks of primary space and 10 tracks of secondary space are allocated to the data set. • SYSIN DD defines the control data set that follows in the input stream. • DSD marks the beginning of a set of utility control statements and refers to the DD statement defining the output data set. • FD defines a field to be used in the subsequent construction of output records. The direction and frequency of the initial roll or wave depends on the location of data in the field. • CREATE constructs 300 records from the contents of the previously defined fields. • END signals the end of a set of utility control statements. IEBDG EXAMPLE 7 In this example, the first 10 bytes of the output record contain data generated in zoned decimal format. This field serves as the key field for the output record in the output indexed sequential data set. The key field is increased (indexed) by one for each record. The input sequential data set provides an additional 80-byte field to complete the output record. IEBDG Program 129 72 //CREATEIS JOB MSGLEVEL=l //BEGIN EXEC PGM=IEBDG //TAPEIN DD DCB=(BLKSIZE=aO,LRECL=aO,RECFM=F), // DISP=(OlD,KEEP),UNIT=d;sk, // LABEL=(,SL), // DSNAME=TAPEIT,VOL=SER=MASTER //DISKOUT DO DCB=(BLKSIZE=270,LRECL=90,RECFM=FB,DSORG=IS, // NTM=2,OPTCD=MY,RKP=0,KEYLEN=10,CYLOFL=1), // UNIT=d;sk,SPACE=(CYL,1), // DISP=(NEW,KEEP), // VOL=SER=111111,DSNAME=CREATIS //SYSPRINT DO SYSOUT=A //SYSIN DO DSD OUTPUT=(DISKOUT),INPUT=(TAPEIN) FD NAME=DATAFD,LENGTH=aO,FROMLOC=l, C STARTLOC=ll,INPUT=TAPEIN FD NAME=KEYFD,LENGTH=IO,STARTLOC=I,FORMAT=ZD,INDEX=1 CREATE INPUT=TAPEIN,NAME=(KEYFD,DATAFD) END * /* The control statements are discussed below: 130 • TAPEIN DD defines the sequential input data set. • DISKOUT DO defines the indexed sequential output data set. • SYSIN DD defines the control data set, which follows in the input stream. • DSD marks the beginning of a set of utility control statements and refers to the DD statement defining the output data set. • FD defines a field that will be used in the subsequent construction of output records. The first FD statement in this example defines and locates an aO-byte field of input data. The data is field selected from one of the input logical records and placed at start location 11 of the output logical record. The second FD statement defines and locates the IO-byte key field. • CREATE constructs a 90-byte output record by referring to the previously defined fields. • END signals the end of a set of utility control statements. MVS/370 Utilities IEBEDIT PROGRAM lEBEDlT is a data set utility used to create an output data set containing a selection of jobs or job steps. At a later time, data sets defined on tape volumes and direct access devices can be used as input streams for job processing. lEBEDlT creates an output job stream by editing and selectively copying a job stream provided as input. The program can copy: • An entire job or jobs, including JOB statements and any associated JOBllB or JOBCAT statements, and JES2 or JES3 control statements. • Selected job steps, including the JOB statement, JES2 or JES3 control statements following the JOB statement, and any associated JOBllB or JOBCAT statements. All selected JOB statements, JES2 or JES3 control statements, JOBllB or JOBCAT statements, jobs, or job steps are placed in the output data set in the same order as they exist in the input data set. A JES2 or JES3 control statement or a JOBllB or JOBCAT statement is copied only if it follows a selected JOB statement. When IEBEDIT encounters a selected job step containing an input record having the characters " .. *" (period, period, asterisk) in columns 1 through 3, the program automaticallY con~erts that record to a termination statement (/* statement) and places it in the output data set. A "/*nonblank" indicates a JES2 or JES3 control statement. INPUT AND OUTPUT lEBEDlT uses the following input: • An input data set, which is a sequential data set consisting of a job stream. The input data set is used as source data in creating an output sequential data set. • A control data set, which contains utility control statements that are used to specify the organization of jobs and job steps in the output data set. lEBEDlT produces the following output: • An output data set, which is a sequential data set consisting of a resultant job stream. • A message data set, which is a sequential data set that contains applicable control statements, error messages, if applicable, and, optionally, the output data set. RETURN CODES IEBEDlT returns a code in register 15 to indicate the results of program execution. The return codes and their meanings are listed below. IEBEDlT Program 131 Codes Meaning 00 (00 hex) Successful completion. 04 (04) An error occurred. The output data set may not be usable as a job stream. Processing continues. 08 (08) An unrecoverable error occurred while attempting to process the input, output, or control data set. The job step is terminated. Figure 51. IEBEDIT Return Codes CONTROL IEBEDIT is controlled by job control statements and utility control statements. The job control statements are required to execute or invoke the program and to define the data sets used and produced by the program. The utility control statements are used to control the functions of the program. JOB CONTROL STATEMENTS Figure 52 shows the job control statements for IEBEDIT. Statement Use JOB Initiates the job. EXEC Specifies the program name (PGM=IEBEDIT) or, if the job control statements reside in a procedure library, the procedure name. SVSPRINT DD Defines a sequential message data set. The data set can be written to a system output device, a tape volume, or a direct access volume. SVSUTl DD Defines a sequential input data set on a card reader, tape volume, or direct access device. SVSUT2 DD Defines a sequential output data set on a card punch, printer, tape volume, or direct access device. SVSIN DD Defines the control data set. The data set normally is included in the input stream; however, it can be , defined as a member of a procedure library or as a sequential data set existing somewhere other than in the input stream. Figure 52. Job Control Statements for IEBEDIT Notes to Figure 52: 1. 132 MVS/370 Utilities The block size for the SYSPRINT data set must be a multiple of 121. If not, the job step is terminated with a return code of 8. The block size for the SYSIN, SYSUT1, and SYSUT2 data sets must be a multiple of 80. Any blocking factor can be specified for these record sizes. 2. Any JES2 or JES3 control statement or JOBlIB DD statement that follows a selected JOB statement is automatically copied to the output data set. JES2 or JES3 control statements preceding the JOB statement are assumed to belong to the previous job. JES2 or JES3 control statements preceding the first JOB statement are included only if a total copy is requested. JES2 or JES3 control statements within a DD DATA stream are included only if a delimiter other than "/*" is coded in the DD DATA card. For a description of coding another delimiter, see the publication JCl. If another delimiter is not coded, the first two characters of the JES2 or JES3 control statement will act as a delimiter to DD DATA. UTILITY CONTROL STATEMENT IEBEDIT uses only one utility control statement, EDIT. Continuation requirements for the statement are described in "Continuing Utility Control Statements" on page 5. EDIT Statement The EDIT statement indicates which step or steps of a specified job in the input data set are to be included in the output data set. Any number of EDIT statements can be included in an operation, thus including selected jobs 1n the output data set. EDIT statements must be included in the same order as the input jobs that they represent. If no EDIT statement is present in the control data set, the entire input data set is copied. The format of the EDIT statement is: [label] EDIT [START=jobname] [,TYPE=POSITIONIINCLUDEIEXCLUDE] [,STEPNAME=(~[,name-name]), ••• ] [, NOPRINT] Parameters APplicable Control statements NOPRINT EDIT Description of Parameters NOPRINT specifies that the message data set is not to include a listing of the output data set. Default: The resultant output is listed in the message data set. IEBEDIT Program 133 Parameters Applicable Control statements START EDIT Description of Parameters START=jobname specifies the name of the input job to which the EDIT statement applies. (Each EDIT statement must apply to a separate job.) If START is specified without TYPE and STEPNAME, the JOB statement and all job steps for the specified job are included in the output. Default: If START is omitted and only one EDIT statement is provided, the first job encountered in the input data set is processed. If START is omitted from an EDIT statement other than the first statement, processing continues with the next JOB statement found in the input data set. STEPNAME EDIT STEPNAME=(name[,name-name]), ••• specifies the first job step to be placed in the output data set when coded with TYPE=POSITION. Job steps preceding this step are not copied to the output data set. can be specified as a single job step name or a sequential range of names, separated by a hyphen: name-name. If more than one value is specified for ~, the entire STEPNAME field must be enclosed in parentheses. ~ When coded with TYPE=INCLUDE or TYPE=EXCLUDE, STEPNAME specifies the names of job steps that are to be included in or excluded from the operation. For example, STEPNAME=(STEPA,STEPF-STEPL,STEPZ) indicates that job steps STEPA, STEPF through STEPL, and STEPZ are to be included in or excluded from the operation. Default: If STEPHAME is omitted, the entire input job whose name is specified on the EDIT statement is copied. If no job name is specified, the first job encountered is processed. 134 MVS/370 Utilities Parameters APplicable Control statements TYPE EDIT Description of Parameters TYPE=POSITION I INCLUDE I EXCLUDE specifies the contents of the output data set. These values can be coded: POSITION specifies that the output is to consist of a JOB statement, the job step specified in the STEPNAME parameter, and all steps that follow it. All job steps preceding the specified step are omitted from the operation. POSITION is the default. INCLUDE specifies that the output data set is to contain a JOB statement and all job steps specified in the SrEPNAME parameter. EXCLUDE specifies that the output data set is to contain a JOB statement and all job steps belonging to the job except those steps specified in the STEPNAME parameter. IEBEDIT EXAMPLES The following examples show some of the uses of IEBEDIT. Figure 53 can be used as a quick-reference guide to IEBEDIT examples. The numbers in the "Example" column refer to examples that follow. Operation Devices Comments Example COpy 9-track Tape The input data set contains three jobs. One job is to be copied. 1 COpy 7-track Tape The output data set is the second data set on the volume. One job step is to be copied from each of three jobs. 2 COpy Disk and 9-track Tape Include a job step from one job and exclude a job step from another job. 3 COPY Disk latter portion of a job stream is to be copied. 4 Figure 53 (Part 1 of 2). IEBEDIT Example Directory IEBEDIT Program 135 operation Devices Comments Example COPY 9-track Tape All records in the input data set are to be copied. The " .. *" record is converted to a "/*" statement in the output data set. 5 COpy 9-track Tape The input contains a JES2 or JES3 control statement and a new delimiter. 6 Figure 53 (Part 2 of 2). IEBEDIT Example Directory Examples that use disk or tape in place of actual device numbers must be changed before use. See "DASD and Tape Device Support" on page 3 for valid devi~e number notation. IEBEDIT EXAMPLE 1 In this example, one job (JOBA), including all of its job steps (A, B, C, and D), is copied into the output data set. The input data set contains three jobs: JOBA, which has four job steps; JOBB, which has three job steps; and JOBC, which has two job steps. //EDITl JOB EXEC //SYSPRINT DD //SYSUTl 00 //SYSUT2 DD // // // //SYSIN DD EDIT 091440,SMITH PGM=IEBEDIT SYSOUT=A UNIT=tape,DISP=(OlD,KEEP),VOl=SER=001234 UNIT=tape,DISP=(NEW,KEEP),VOl=SER=001235, OCB=(RECFM=F,lRECl=80,BlKSIZE=80), DSNAME=OUTTAPE * START=JOBA The control statements are discussed below: • SYSUT1 DO defines the input data set. The data set resides on a standard labeled tape volume (001234). • SYSUT2 00 defines the output data set, called OUTTAPE. The data set is to reside as the first data set on a standard labeled tape volume (001235). • SYSIN DD defines the control data set, which follows in the input stream. • EDIT indicates that JOBA is to be copied in its entirety. IEBEDIT EXAMPLE 2 This example copies one job step from each of three jobs. The input data set contains three jobs: JOBA, which includes STEPA, STEPB, STEPC, and STEPO; JOBB, which includes STEPE, STEPF, and STEPG; and JOBC, which includes STEPH and STEPJ. 136 MVS/370 Utilities //EDIT2 JOB EXEC //SYSPRINT DD //SYSUT1 DD // // //SYSUT2 DD // // //SYSIN EDIT EDIT EDIT DD 09#440,SMITH PGM=IEBEDIT SYSOUT=A DISP=(OlD,KEEP),VOlUME=SER=001234, UNIT=tape DSN=OUTSTRM,UNIT=tape,DISP=(NEW,KEEP), DCB=(RECFM=F,lRECl=80,BlKSIZE=80), lABEl=(2,Sl) * START=JOBA,TYPE=INClUDE,STEPNAME=(STEPC,STEPD) START=JOBB,TYPE=INClUDE,STEPNAME=STEPE START=JOBC,TYPE=INClUDE,STEPNAME=STEPJ The control statements are discussed below: • SYSUT1 DD defines the input data set. The data set resides on a standard labeled tape volume (001234). • SYSUT2 DD defines the output data set, OUTSTRM. The data set is to reside as the second data set on a standard labeled tape volume (001235). • SYSIN DD defines the control data set, which follows in the input stream. • The EDIT statements copy the JOB statements and job steps described as follows: 1. The JOB statement and steps STEPC and STEPD for JOBA. 2. The JOB statement and STEPE for JOBB. 3. The JOB s.tatement and STEPJ for JOBC. IEBEDIT EXAMPLE J This example includes a job step from one job and excludes a job step from another job. The input data set contains three jobs: JOBA, which includes STEPA, STEPB, STEPC, and STEPD; JOBB, which includes STEPE, STEPF, and STEPG; and JOBC, which includes STEPH and STEPJ. //EDIT3 JOB EXEC //SYSPRINT DD //SYSUT1 DO // // //SYSUT2 DD // // //SYSIN EDIT EDIT DD 09#440,SMITH PGM=IEBEDIT SYSOUT=A DSNAME=INSET,UNIT=disk,DISP=(OlD,KEEP), VOlUME=SER=111111 DSNAME=OUTTAPE,UNIT=tape,lABEl(,Nl), DCB=(OEN=2,RECFM=F,lRECl=80,BlKSIZE=80), OISP=(,KEEP) * START=JOBB,TYPE=INClUDE,STEPNAME=(STEPF-STEPG) START=JOBC,TYPE=EXClUDE,STEPNAME=STEPJ The control statements are discussed below: • SYSUT1 DD defines the input data set, INSET. resides on a disk volume (111111). The data set IEBEDIT Program 137 • SYSUT2 DD defines the output data set, OUTTAPE. The data set is to reside as the first or only data set on an unlabeled (800 bits per inch) tape volume. • SYSIN DD defines the control data set, which follows in the input stream. • The EDIT statements copy JOB statements and job steps as described below: 1. The JOB statement and steps STEPF and STEPG for JOBB. 2. The JOB statement and STEPH, excluding STEPJ, for JOBC. IEBEDIT EXAMPLE 4 This example copies the JOBA JOB statement, the job step STEPF, and all the steps that follow it. The input data set contains one job (JOBA), which includes STEPA, STEPB, . . . STEPl. Job steps STEPA through STEPE are not included in the output data set. //EDIT4 JOB EXEC //SYSPRIHT DD //SYSUTI DO // // // //SYSUT2 DD // // // // //SYSIH DO EDIT 09#440,SMITH PGM=IEBEDIT SYSOUT=A DSHAME=IHSTREAM,UNIT=disk, DISP=(OlD,KEEP), VOlUME=SER=111111 DSHAME=OUTSTREM,UNIT=disk, DISP=(,KEEP), DCB=(RECFM=F,lRECl=80,BlKSIZE=80), VOlUME=SER=222222, SPACE=(TRK,2) *START=JOBA,TYPE=POSITION,STEPHAME=STEPF The control statements are discussed below: 138 • SYSUTI DO defines the input data set, called INSTREAM. data set resides on a disk volume (111111). • SYSUT2 DO defines the output data set, called OUTSTREAM. The data set is to reside on a disk volume (222222). Two tracks are allocated for the output data set. • SYSIH DD defines the control data set, which follows in the input stream. • EDIT copies the JOBA JOB statement and job steps STEPF through STEPL. MVS/370 Utilities The IEBEDIT EXAMPLE 5 This example copies the entire input (SYSUT1) data set. The record containing the characters " .. *" in columns 1 through 3 is converted to a "/* " statement in the output data set. //EDIT5 JOB EXEC //SYSPRINT DD //SYSUT2 DD // // // // //SYSIN DO //SYSUTI DD //BlDGDGIX JOB // EXEC //SYSPRINT DD //DDI DD //SYSIN DO BLDG 091440,SMITH PGM=IEBEOIT SYSOUT=A DSNAME=OUTTAPE,UNIT=tape, VOlUME=SER=001234, DCB=(RECFM=F,LRECl=80,BLKSIZE=80), DISP=(NEW,KEEP) DUMMY DATA PGM=IEHPROGM SYSOUT=A UNIT=disk,YOlUME=SER=111111,OISP=OLO *INDEX=A.B.C,ENTRIES=10,EMPTY The control statements are discussed below: • SYSUT2 DD defines the output data set, called OUTTAPE. The data set is to reside as the first data set on a tape volume (001234). • SYSIN DD defines a dummy control data set. • SYSUTI DD defines the input data set, which follows in the input stream. The job is terminated when the termination statement (/*b) is encountered. (SYSUTI therefore includes the BLDGDGIX JOB statement, EXEC statement, SYSPRINT, DDI and SYSIN DD statements.) IEBEDIT EXAMPLE 6 This example copies the entire input (SYSUT1) data set, including the JES2 control statement, since a new delimiter (JP) has been coded. Otherwise, the "/*" the JES2 control statement would have terminated the input. //EDIT6 JOB 091440,SMITH //STEPA EXEC PGM=IEBEOIT //SYSPRINT DD SYSOUT=A //SYSUT2 DO DSN=TAPEOUT,UNIT=tape, // YOL=SER=001234,LABEl=(,Sl), // DCB=(RECFM=FB,lRECL=80,BlKSIZE=800), // DISP=(NEW,KEEP) //SYSIN DD DUMMY //SYSUTI DD DATA,DlM=JP //lISTYTOC JOB 091550,BlUE /*MESSAGE JOB NEEDS VOLUME 338000 //FSTEP EXEC PGM=IEHlIST //SYSPRINT DD SYSOUT=A //DD2 DD UNIT=disk,VOL=SER=111111,OISP=OLO //SYSIN DD * lISTYTOC FORMAT,YOl=disk=111111 IEBEOIT Program 139 The control statements are discussed below: 140 • SYSUT2 DD defines the output data set, called TAPEOUT. The data set will be the first data set on a standard label tape volume (001234). • SYSIN DD defines a dummy control data set. • SYSUT1 DD defines the input data set, which follows in the input stream. The DLM parameter defines characters JP to act as a delimiter for the input data. • IEBEDIT copies the JOB statement through the "/*" statement (including the LISTVTOC and MESSAGE job statements, FSTEP EXEC statement, and SYSPRINT, DD2 and SYSIN DD statements). MVS/370 Utilities IEBGENER PROGRAM IEBGENER is a data set utility that can be used to: • Create a backup copy of a sequential data set or a partitioned member. • Produce a partitioned data set or member from a sequential input data set. • Expand an existing partitioned data set by creating partitioned members and merging them into the data set that is to be expanded. • Produce an edited sequential or partitioned data set. • Reblock or change the logical record length of a data set. • Copy user labels on sequential output data sets. (Refer to Appendix C, "Processing User labels" on page 446.) • Provide optional editing facilities and exits for user routines that process labels, manipulate input data, create keys, and handle permanent input/output errors. Refer to Appendix A, "Exit Routine linkage" on page 438 for a discussion of linkage conventions that are applicable when user routines are provided. CREATING A BACKUP COPY A backup copy of a sequential data set or partitioned member can be produced by copying the data set or member to any IBM-supported output device. For example, a copy can be made from tape to tape, from DASD to tape, etc. A data set that resides on a direct access volume can be copied to its own volume, provided that its data set name is changed. A partitioned data set cannot reside on a magnetic tape volume. PRODUCING A PARTITIONED DATA SET FROM SEQUENTIAL INPUT Through the use of utility control statements, the user can logically divide a sequential data set into record groups and assign member names to the record groups. IEBGENER places the newly created members in a partitioned output data set. A partitioned data set cannot be produced if an input or output data set contains spanned records. Figure 54 on page 142 shows how a partitioned data set is produced from a sequential data set used as input. The left side of the figure shows the sequential data set. Utility control statements are used to divide the sequential data set into record groups and to provide a member name for each record group. The right side of the figure shows the partitioned data set produced from the sequential input. IEBGENER Program 141 Sequential input Utility control statement names first member ~-----. Partitioned output Record group .. 1 Utility control statement identified last record Record group Utility control statement names new member LASTREC 1 LASTREC 2 ----~.·I LASTREC n 2 Utility control statement identified' last record Utility control statement names new member Record group n LASTREC n Figure 54. Creating a Partitioned Data Set from Sequential Input Using IEBGENER EXPANDING A PARTITIONED DATA SET An expanded data set is a data set into which an additional member or members have been merged. IEBGENER creates the members from sequential input and places them in the data set being expanded. The merge operation--the ordering of the partitioned directory--is automatically performed by the program. Figure 55 on page 143 shows how sequential input is converted into members that are merged into an existing partitioned data set. The left side of the figure shows the sequential input that is to be merged with the partitioned data set shown in the middle of the figure. Utility control statements are used to divide the sequential data set into record groups and to provide a member name for each record group. The right side of the figure shows the expanded partitioned data set. Note that members B, D, and F from the sequential data set were placed in available space and that they are sequentially ordered in the partitioned directory. 142 MVS/370 Utilities Sequential input Utility control statements define record groups, name members Expanded data set Existing data set Member B LASTREC .. Member D LASTREC Member F Figure 55. Expanding a Partitioned Data Set Using IEBGEHER PRODUCING AN EDITED DATA SET IEBGEHER can be used to produce an edited sequential or partitioned data set. Through the use of utility control statements, the user can specify editing information that applies to a record, a group of records, selected groups of records, or an entire data set. An edited data set can be produced by: • Rearranging or omitting defined data fields within a record. • Supplying literal information as replacement data. • Converting data from packed decimal to unpacked decimal mode, unpacked decimal to packed decimal mode, or BCD4 to EBCDIC mode. Refer to Data Management Services for more information on converting from BCD to EBCDIC. Figure 56 on page 144 shows part of an edited sequential data set. The left-hand side of the figure shows the data set before editing is performed. Utility control statements are used to identify the record groups to be edited and to supply editing information. In this figure, literal replacement information is supplied for information within a defined field. (Data is rearranged, omitted, or converted in the same manner.) The BBBB field in each record in the record group is to be replaced by CCCC. The right-hand side of the figure shows the data set after editing. 4 Used here to mean the standard H character set of Binary Coded Decimal. IEBGEHER Program 143 Utility control statement. Record " Defines record group, contains literal replacement data (CCCC). Applies to all records within the group. » » » » Record 2 Record group .. I » » ~ ,~ Record n » » » » I Figure 56. Editing a Sequential Data Set Using IEBGENER IEBGENER cannot be used to edit a data set if the input and output data sets consist of variable spanned (VS) or variable blocked spanned (VBS) records and have equal block sizes and logical record lengths. In these cases, any utility control statements that specify editing are ignored. That is, for each physical record read from the input data set, the utility writes an unedited physical record on the output data set. REBLOCKING OR CHANGING LOGICAL RECORD LENGTH IEBGENER can be used to produce a reblocked output data set containing either fixed-length or variable-length records. In addition, the program can produce an output data set having a logical record length that differs from the input logical record length. INPUT AND OUTPUT IEBGENER uses the following input: • An input data set, which contains the data that is to be copied, edited, converted into a partitioned data set, or converted into members to be merged into an existing data set. The input is either a sequential data set or a member of a partitioned data set. • A control data set, which contains utility control statements. The control data set is required if editing is to be performed or if the output data set is to be a partitioned data set. IEBGENER produces the following output:, • 144 MVS/370 Utilities An output data set, which can be either sequential or partitioned. The output data set can be either a new data set (created during the current job step) or an existing partitioned data set that was expanded. If a partitioned data set is created, it is a new member with a new directory entry. None of the information is copied from the previous directory entry. • A message data set, which contains informational messages (for example, the contents of utility control statements) and any error messages. • Message IEC507D will be issued twice when adding data or members to an existing data set which has an unexpired expiration date. This occurs because the input and output data sets are opened twice. RETURN CODES IEBGENER returns a code in register 15 to indicate the results of program execution. The return codes and their meanings are listed below. Codes Meaning 00 (00 hex) Successful completion. 04 (04) Probable successful completion. is written. 08 (08) Processing was terminated after the user requested processing of user header labels only. 12 (OC) An unrecoverable error exists. terminated. 16 (10) A user routine passed a return code of 16 to IEBGENER. The job step is terminated. A warning message The job step is Figure 57. IEBGENER Return Codes CONTROL IEBGENER is controlled by job control statements and utility control statements. The job control statements execute or invoke IEBGENER and define the data sets that are used and produced by the program. The utility control statements control the functions of IEBGENER. JOB CONTROL STATEMENTS Figure 58 on page 146 shows the job control statements for IEBGENER. IEBGENER always uses two buffers, regardless of what was specified in the DCB. SYSPRINT DD Statement The SYSPRINT DO statement is required for each use of IEBGENER. The block size for the SYSPRINT data set must be a multiple of 121. Any blocking factor can be specified for this record size. SYSUT1 DD Statement The input data set for IEBGENER, as specified in SYSUT1, can contain fixed, variable, undefined, or variable spanned records. IEBGENER Program 145 statement Use JOB Initiates the job. EXEC Specifies the program name (PGM=IEBGENER) or~ if the job control statements reside in a procedure library, the procedure name. SYSPRINT DD Defines a sequential message data set. The data set can be written to a system output device~ a tape volume, or a DASD volume. SYSUTI DD Defines the input data set. It can define a sequential data set or a member of a partitioned data set. SYSUT2 DD Defines the output data set. It can define a sequential data set, a member of a partitioned data set, or a partitioned data set. SYSIN DD Defines the control data set, or specifies DUMMY when the output is sequential and no editing is specified. The control data set normally resides in the input stream; however, it can be defined as a member in a partitioned data set. Figure 58. Job Control Statements for IEBGENER Concatenated data sets with unlike attributes are not allowed as input to IEBGENER. For information on concatenated data sets, see Data Management Services. // cards (JCL statements) cannot be included in the SYSUTI data set unless SYSUTI DD DATA is specified. Block size must be specified for the input data set in one of two ways: • with the BLKSIZE parameter in the DD statement' • in the DCB information on the tape label. The default RECFM is U for the input data set. RECFM must be specified if the data set is new, undefined, a dummy data set, or a data set from a card punch. The input LRECL must be specified when the record format is FB, VS, or VBS, or when the data set is new, a dummy data set, or a data set from a card punch. In all other cases, a default lRECl is generated by IEBGENER. A partitioned data set cannot be produced if an input data set contains spanned records. If both the SYSUTI and the SYSUT2 DD statements specify standard user labels (SUL), IEBGENER copies user labels from SYSUTI to SYSUT2. See Appendix C, "Processing User labels" on page 446 for a discussion of the available options for user label processing. SYSUT2 DD statement The output data set for IEBGENER, as specified in SYSUT2, can contain fixed, variable, undefined, or variable spanned records (except partitioned output data sets, which cannot contain variable spanned records). These records can be reblocked by the specification of a new maximum block length on the SYSUT2 DD 146 MVS/370 Utilities ·statement. During reblocking, if the output data set resides on a direct access volume: • For fixed-length or variable-length records, keys can be retained only by using the appropriate user exit. • For variable spanned records, keys can never be retained. If the output data set is on a card punch or a printer, the user must specify DCB information on the SYSUT2 DO statement. DCB parameters in a SYSUT2 DD statement defining an expanded partitioned data set must" be compatible with the specifications made when the data set was originally created. When RECFM, BlKSIZE, and lRECl are not specified in the JCl for the output data set, values for each are copied from the input data set's DSCB. The output block size must always be specified when the logical record length and record format (except for U) are specified. The default RECFM is U for the output data set. RECFM must be specified when a data set is new, a dummy data set, or a data set from a card punch or printer. The output lRECl must be specified when editing is to be performed and the record format is FB, VS, or VBS. lRECl must also be specified when the data set is new, a dummy data set, or a data set from a card punch or printer. In all other cases, a default lRECl value is generated by IEBGENER. If the logical record length of the output data set differs from that of the input data set, all positions in the output records must undergo editing to justify the new logical record length. A partitioned data set cannot be produced if an input or output data set contains spanned records. IEBGENER can not produce an output data set having a logical record length that differs from the input logical record length if both input and output RECFM are V or VB. IEBGENER will terminate with an unpredictable message or abend code if DISP=OLD is specified on a SYSUT2 DD statement making a specific volume request for a nonexistent data set. SYSIN DD statement The SYSIN DD statement is required for each use of IEBGENER. The block size for the SYSIN data set must be a multiple of 80. Any blocking factor can be specified for this block size. UTILITY CONTROL STATEMENTS IEBGENER is controlled by utility control statements. The statements and the order in which they must appear are listed in Figure 59 on page 148. The control statements are included in the control data set as required. If no utility control statements are included in the control data set, the entire input data set is copied sequentially. When the output is to be sequential and editing is to be performed, one GENERATE statement and as many RECORD statements as required are used. If user exits are provided, an EXITS statement is used. When the output is to be partitioned, one GENERATE statement, one MEMBER statement per output member, and RECORD statements, as required, are used. If user exits are provided, an EXITS statement is used. IEBGENER Program 147 statement Use GENERATE Indicates the number of member names and alias names, record identifiers, literals, and editing information contained in the control data set. EXITS Indicates that user routines are provided. LABELS Specifies user-label processing. MEMBER Specifies the member name and alias of a member of a partitioned data set to be created. RECORD Defines a record group to be processed and supplies editing information. Figure 59. IEBGENER Utility Control Statements Continuation requirements for utility control statements are described in "Continuing Utility Control Statements" on page 5. A nonblank character continuation mark in column 72 is optional for IEBGENER. GENERATE statement The GENERATE statement is required when: (1) output is to be partitioned, (2) editing is to be p~rformed, or (3) user routines are provided and/or label processing is specified. The GENERATE statement must appear before any other IEBGENER utility statements. If it contains errors or is inconsistent with other statements, IEBGENER is terminated. The format of the GENERATE statement is: [label] GENERATE [MAXNAME=n1 [,MAXFLDS=nl [,MAXGPS=nl [,MAXLITS=n1 EXITS Statement The EXITS statement is used to identify exit routines supplied by the user. Linkages to and from exit routines are discussed in Appendix A, "Exit Routine Linkage" on page 438. For a detailed discussion of the processing of user labels as data set descriptors, and for discussion of user label totaling, refer to Appendix C, "Processing User Labels" on page 446. 148 MVS/370 Utilities The format of the EXITS statement is: [label] EXITS [INHDR=routinename] [,OUTHDR=routinename] [,INTLR=routinename] [,OUTTLR=routinename] [,KEV=routinename] [,DATA=routinenamel [,IOERROR=routinename] [,TOTAL=(routinename,size)] LABELS Statement The LABELS statement specifies whether or not user labels are to be treated as data by IEBGENER. For a detailed discussion of this option, refer to Appendix C, "Processing User Labels" on page 446. The LABELS statement is used when the user wants to specify that: (1) no user labels are to be copied to the output data set, (2) user labels are to be copied to the output data set from records in the data portion of the SYSIN data set, or (3) user labels are to be copied to the output data set after they are modified by the user's label processing routines. If more than one valid LABELS statement is included, all but the last LABELS statement are ignored. The format of the LABELS statement is: I[label] LABELS [DATA=VESINOIALLloNLVIINPUT] LABELS DATA=NO must be specified to make standard user labels (SUL) exits inactive when input/output data sets with nonstandard labels (NSl) are to be processed. MEMBER Statement The MEMBER statement is used when the output data set is to be partitioned. One MEMBER statement must be included for each member to be created by IEBGENER. The MEMBER statement provides the name and alias names of a new member. All RECORD statements following a MEMBER statement pertain to the member named in that MEMBER statement. If no MEMBER statements are included, the output data set is organized sequentially. The format of the MEMBER statement is: MEMBER IEBGENER Program 149 RECORD statement The RECORD statement is used to define a record group and to supply editing information. A record group consists of records that are to be processed identically. The RECORD statement is used when: (1) the output is to be partitioned l (2) editing is to be performedl or (3) user labels for the output data set are to be created from records in the data portion of the SYSIH data set. The RECORD statement defines a record group by identifying the last record of the group with a literal name. If no RECORD statement is used, the entire input data set or member is processed without editing. More than one RECORD statement may appear in the control statement stream for IEBGEHER. Within a RECORD statement, one IDEHT parameter can be used to define the record group; one or more FIELD parameters can be used to supply the editing information applicable to the record group; and one LABELS parameter can be used to indicate that this statement is followed immediately by output label records. The format of the RECORD statement is: [label] RECORD [IDENT=(length,'name',input-location)] [,FIElD=([lengthJ [,input-locationl'literal'J [,conversion] [,output-location])] [,lABElS=nJ Hote that the variables on the FIELD parameter are positional; that is, if any of the options are not coded, the associated comma preceding that variable must be coded. 150 MVS/370 Utilities parameters Applicable Control statements DATA EXITS DATA=routinename specifies th~ name of the routine that modifies the physical record (logical record for VS or VBS type records) before it is processed by IEBGENER. LABELS DATA=YESINOIALLIONLYIINPUT specifies whether user labels are to be treated as data by IEBGENER. These values can be coded: Description of Parameters YES specifies that any user labels that are not rejected by a user's label processing routine are to be treated as data. Processing of labels as data ends in compliance with standard return codes. YES is the default. NO specifies that user labels are not to be treated as data. NO must be specified when processing input/output data sets with nonstandard labels (NSL) in order to make standard user label (SUL) exits inactive. ALL specifies that all user labels in the group currently being processed are to be treated as data. A return code of 16 causes IEBGENER to complete processing the remainder of the group of user labels and to terminate the job step. ONLY specifies that only user header labels are to be treated as data. User header labels are processed as data regardless of any return code. The job terminates upon return from the OPEN routine. INPUT specifies that user labels for the output data set are supplied as 80-byte input records in the data portion of SYSIN. The number of input records that should be treated as user labels must be identified by a RECORD statement. IEBGENER Program 151 Parameters APplicable Control statements FIELD RECORD Description of Parameters FIELD:([length],[input-locationl'literal'], [conversion],[output-locationJ) specifies field-processing and editing information. Only the contents of specified fields in the input record are copied to the output record; that is, any field in the output record that is not specified will contain meaningless information. Note that the variables on the FIELD parameter are positional; if any of the options are not coded, the associated comma preceding that variable must be coded. The values that can be coded are: length specifies the length (in bytes) of the input field or literal to be processed. If length is not specified, a length of 80 bytes is assumed. If a literal is to be processed, a length of 40 bytes or less must be specified. The length cannot exceed 8 decimal characters. input-location specifies the starting byte of the field to be processed. input-location should be coded as a decimal number. Default: Byte 1 is assumed. 'literal' specifies a literal (maximum length of 40 bytes) to be placed in the specified output location. If a literal contains apostrophes, each apostrophe must be written as two consecutive apostrophes. conversion specifies a 2-byte code that indicates the type of conversion to be performed on this field. If no conversion is specified, the field is moved to the output area without change. The values that can be coded are: PZ specifies that data (packed decimal) is to be converted to unpacked decimal data. Unpacking of the low-order digit and sign may result in an alphabetic character. ZP specifies that data (unpacked decimal) is to be converted to packed decimal data. HE 152 MVS/370 utilities specifies that data (H-set BCD) is to be converted to EBCDIC. Parameters Applicable Control statements Description of Parameters FIELD (continued) RECORD (continued) conversion (continued) If conversion is specified in FIELD, the following restrictions apply: • PZ-type (packed-to-unpacked) conversion is impossible for packed decimal records longer than 16K bytes. • For zP-type (unpacked-to-packed) conversion, the normal 32K-byte maximum applies. • When the ZP parameter is specified, the conversion is performed in place. The original unpacked field is replaced by the new packed field. Therefore, the ZP parameter must be omitted from subsequent references to that field. If the field is needed in its original unpacked form, it must be referenced prior to the use of the ZP parameter. If conversion is specified in the FIELD parameter, the length of the output record can be calculated for each conversion specification. When l is equal to the length of the input record, the calculation is made, as follows: • For a PZ (packed-to-unpacked) specification, 2l-1. • For a ZP (unpacked-to-packed) specification, (l/2) + C. If l is an odd number, C is 1/2; if l is an even number, C is 1. • For an (H-set BCD to EBCDIC) specification, L. output-location specifies the starting location of this field in the output records. output-location should be coded as a decimal number. The default location is byte 1. IEBGENER Program 153 Parameters APplicable Control statements FIELD (continued) RECORD (continued) Description of Parameters If both output header labels and output trailer labels are to be contained in the SYSIN data set, the user must include one RECORD statement (including the LABELS parameter), indicating the number of input records to be treated as user header labels and another RECORD statement (also including the LABELS parameter) for user trailer labels. The first such RECORD statement indicates the number of user header labels~ the second indicates the number of user trailer labels. If only output trailer labels are included in the SYSIN data set, a RECORD statement must be included to indicate that there are no output header labels in the SYSIN data set (LABELS=O). This statement must precede the RECORD LABElS=n statement which signals the start of trailer label input records. For a detailed discussion of the LABELS option, refer to Appendix C, "Processing User Labels" on page 446. IDENT RECORD IDENT=(length,'~',input-location) identifies the last record of the input group to which the FIELD parameters of MEMBER statement applies. If the RECORD statement is not followed by additional RECORD or MEMBER statements, IDENT also defines the last record to be processed. These values can be coded: length specifies the length (in bytes) of the identifying name. The length cannot exceed eight decimal characters. 'name' ----specifies the exact literal that identifies the last input record of a record group. 'nsmg' must be coded in single apostrophes. Default: If no match for '~' is found, the remainder of the input data is considered to be in one record group; subsequent RECORD and MEMBER statements are ignored. input-location specifies the starting byte of the field that contains the identifying name in the input records. input-location should be coded as a decimal number. Default: If IDENT is omitted, the remainder of the input data is considered to be in one record group; subsequent RECORD and MEMBER statements are ignored. INHDR 154 EXITS MVS/370 Utilities INHDR=routinename specifies the name of the routine that processes user input header labels. Parameters APpl;cable Control statements INTLR EXITS INTLR=routinename specifies the name of the routine that processes user input trailer labels. IOERROR EXITS IOERROR=routinename specifies the name of the routine that handles permanent input/output error conditions. KEY EXITS KEV=routinename specifies the name of the routine that creates the output record key. (This routine does not receive control when a data set consisting of variable spanned (VS) or variable blocked spanned (VBS) type records is processed because no processing of keys is permitted for this type of data.) LABELS RECORD LABELS=n is an optional parameter that indicates the number of records in the SYSIN data set to be treated as user labels. The number 0, which is a number from 0 to 8, must specify the exact number of label records that follow the RECORD statement. If this parameter is included, DATA=INPUT must be coded on a LABELS statement before it in the input stream. MAXFLDS GENERATE I1AXFLDS=n specifies a number that is no less than the total number of FIELD parameters appearing in subsequent RECORD statements. MAXFlDS;s required if there are any FIELD parameters in subsequent RECORD statements. MAXGPS GENERATE MAXGPS=n sp;cifies a number that is no less than the total number of IDENT parameters appearing in subsequent RECORD statements. MAXGPS is required if there are any IDENTparameters in subsequent RECORD statements. MAXLITS GENERATE I1AXLITS=n specifies a number that is no less than the total number of characters contained in the FIELD literals of subsequent RECORD statements. MAXLITS is required if the FIELD parameters of subsequent RECORD statements contain literals. MAXLITS does not apply to literals used in IDENT parameters. Descript;on of Parameters IEBGENER Program 155 Parameters APplicable Control statements MAXNAME GENERATE MAXNAME=n specifies a number that is no less than the total number of member names and aliases appearing in subsequent MEMBER statements. MAXNAME is required if there are one or more MEMBER statements. NAME MEMBER NAME=(name[,alias] ••• ) specifies-a-member name followed by a list of its aliases. Names of multiple members and their aliases should be coded as follows: ((name!,alias!),(name2,alias2), •.. ) If only one name appears in the statement, it need not be enclosed in parentheses. OUTHDR EXITS OUTHDR=routinename specifies the name of the routine that creates user output header labels. OUTHDR is ignored if the output data set is partitioned. OUTTLR EXITS OUTTLR=routinename specifies the name of the routine that processes user output trailer labels. OUTTLR is ignored if the output data set is partitioned. TOTAL EXITS TOTAL=(routinename,size) specifies that-a-user exit routine is to be provided prior to writing each record. The keyword OPTeD=T must be specified for the SYSUT2 DD statement. TOTAL is valid only when IEBGENER is used to process sequential data sets. These values must be coded: Description of Parameters routinename specifies the name of the user-supplied totaling routine. specifies the number of bytes needed to contain totals, counters, pointers, etc. size should be coded as a decimal number-.-- 156 MVS/370 Utilities IEBGENER EXAMPLES The examples that follow illustrate some of the uses of IEBGENER. Figure 60 can be used as a quick-reference guide to IEBGENER examples. The numbers in the "Example" column refer to the examples that follow. operation Data set organization Device Comments Example COpy Sequential Card Reader and Tape Blocked output. 1 COPY-with editing Sequential Card Reader and Tape Blocked output. 2 COPY-with editing Sequential Card Reader and Tape Blocked output. Input includes //cards. 3 COPY-with editing Sequential Card Reader and Disk Blocked output. Input includes // cards. 4 PRINT Sequential Card Reader and Printer Input includes // cards. System output device is a printer. 5 CONVERT Sequential input, Partitioned output Tape and Disk Blocked output. Three members are to be created. 6 COPY-with editing Sequential Disk Blocked output. Two members are to be merged into existing data set. 7 COPY-with editing Sequential Tape Blocked output. Data set edited as one record group. 8 COPY-with editing Sequential Disk Blocked output. New record length specified for output data set. Two record groups specified. 9 COPY-with editing Sequential Tape Blocked output. Data set edited as one record group. 10 Figure 60. IEBGENER Example Directory Examples that use disk or tape in place of actual device numbers must be changed before use. See "DASD and Tape Device Support" on page 3 for valid device number notation. IEBGENER Program 157 IEBGENER EXAMPLE 1 In this example, a card-input, sequential data set is copied to a 9-track tape volume. The example follows: //CDTOTAPE JOB // EXEC //SYSPRINT DD //SYSIN DD //SYSUT2 DD // // //SYSUTl DD 09#660,SMITH PGM=IEBGENER SYSOUT=A DUMMY DSNAME=OUTSET,UNIT=tape,LABEL=(,SL), DISP=(,KEEP),VOLUME=SER=001234, DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000) * (input card data set) /* The job control statements are discussed below: • SYSIN DD defines a dummy data set. No editing is performed; therefore, no utility control statements are needed. • SYSUT2 DD defines the output data set, OUTSET. The data set is written to a tape volume with IBM standard labels. The data set is to reside as the first (or only) data set on the volume. • SYSUT1 DD defines the card-input data set. contains no // or /* cards. The data set IEBGENER EXAMPLE 2 In this example, a card-input, sequential data set is to be copied to a tape volume. The control data set is a member of a partitioned data set. //CDTOTAPE JOB // EXEC //SYSPRINT DD //SYSIN DD // // //SYSUT2 DD // // //SYSUTl DD 09#660,SMITH PGM=IEBGENER SYSOUT=A DSNAME=CNTRLIBY(STMNTS),UNIT=d;sk, DISP=(OLD,KEEPi,vOLUME=SER=111112, DCB=(RECFM=F,LRECL=80,BLKSIZE=80) DSNAME=OUTSET,UNIT=tape,LABEL=(,SL), DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000), DISP=(,KEEP),VOLUME=SER=001234 * (input card data set) /* The job control statements are discussed below: 158 • SYSIN DD defines the control data set, which contains the utility control statements. The control statements reside as a member, STMNTS, in a partitioned data set called CNTRLIBY. • SYSUT2 DD defines the output data set, OUTSET. The data set is written as the first data set on the tape volume. MVS/370 Utilities • SYSUTI DD defines the card-input data set. The data set can contain no // cards, since SYSUTI has not been specified as DATA. IEBGENER EXAMPLE 3 In this example, a card-input, sequential data set is copied to a tape volume. The input contains cards that have slashes (//) in columns 1 and 2. The control data set is a member of a partitioned data set. //CDTOTAPE JOB // EXEC //SYSPRINT DO //SYSIN DO // //SYSUT2 DD // // //SYSUTI DO 091660,SMITH PGM=IEBGENER SYSOUT=A DSNAME=CNTRlIBY(STMNTS),UNIT=disk, OISP=(OlD,KEEP),VOlUME=SER=111112 DSNAME=OUTSET,UNIT=tape,lABEl=(2,SL), VOlUME=SER=001234,OCB=(RECFM=FB,LRECL=80, BlKSIZE=2000),OISP=(,KEEP) DATA (input card data set, including // cards) The job control statements are discussed below: IEBGENER EXAMPLE • SYSIN DO defines the data set containing the utility control statements. The statements reside as a member, STMNTS, in a partitioned data set called CNTRLIBY. • SYSUT2 OD defines the copied sequential data set (output), called OUTSET. The data set is written as the second data set on the specified tape volume. • SYSUTI DO defines the card-input data set. The data set is to be edited as specified in the utility control statements (not shown). The input data set contains // cards. ~ In this example, a card-input, sequential data set is copied to a disk volume. The input data set contains // cards. //COTOOISK JOB // EXEC //SYSPRINT OD //SYSIN OD // //SYSUT2 DD // // //SYSUTI DO 091660,SMITH PGM=IEBGENER SYSOUT=A DSNAME=CNTRLIBY(STMNTS),UNIT=disk, OISP=(OlO,KEEP),VOlUME=SER=111112 DSNAME=OUTSET,UNIT=disk,VOLUME=SER=111113, OISP=(,KEEP),SPACE=(TRK,(lO,10», OCB=(RECFM=FB,LRECL=80,BLKSIZE=2000) DATA (input card data set, including // cards) /* IEBGENER Program 159 The job control statements are discussed below: • SYSIN DD defines the control data set, which contains the utility control statements. The control statements reside as a member, STMNTS, in a partitioned data set. • SYSUT2 DD defines the output data set. Ten tracks of primary storage space and ten tracks of secondary space are allocated for the data set on a disk volume. • SYSUTI DD defines the card-input data set. The data set is to be edited as specified in the utility control statements (not shown). IEBGENER EXAMPLE 5 In this example, the content of a card data set is printed. printed output is left-aligned, with one SO-byte record appearing on each line of printed output. The //CDTOPTR JOB 09#660,SMITH // EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=A //SYSIN DO DUMMY //SYSUT2 DD SYSOUT=A,DCB=(RECFM=F,lRECl=SO,BlKSIZE=80) //SYSUTI DD DATA (input card data set, including // cards) /* The job control statements are discussed below: • SYSIN DO defines a dummy data set. No editing is performed; therefore, no utility control statements are required. • SYSUT2 DO indicates that the output is to be written on the system output device (printer). Carriage control can be specified by changing the RECFM=F subparameter to RECFM=FA. • SYSUTI DD defines the input card data set. set contains // cards. The input data IEBGENER EXAMPLE 6 In this example, a partitioned data set (consisting of three members) is created from sequential input. //TAPEDISK // //SYSPRINT //SYSUTI JOB EXEC DD DO // //SYSUT2 DO // // //SYSIN DO GENERATE MEMBER GROUP1 RECORD MEMBER GROUP2 RECORD MEMBER 160 MVS/370 Utilities 09#660,SMITH PGM=IEBGENER SYSOUT=A OSNAME=INSET,UNIT=tape,lABEl=(,Sl), DISP=(OlD,KEEP),VOlUME=SER=001234 DSNAME=NEWSET,UNIT=disk,DISP=(,KEEP), VOlUME=SER=111112,SPACE=(TRK,(lO,S,S», DCB=(RECFM=FB,lRECl=80,BlKSIZE=2000) * MAXNAME=3,MAXGPS=2 NAME=MEMBERI IOENT=(S,'FIRSTMEM',l) NAME=MEMBER2 IDENT=(8,'SECNDMEM',1) NAME=MEMBER3 The control statements are discussed below: • SYSUTI DD defines the input data set (INSET). is the first data set on a tape volume. The data set • SYSUT2 DD defines the output partitioned data set (NEWSET). The data set is to be placed on a disk volume. Ten tracks of primary space, five tracks of secondary space, and five blocks (256 bytes each) of directory space are allocated to allow for future expansion of the data set. The output records are blocked to reduce the space required by the data set. • SYSIN DD defines the control data set, which follows in the input stream. The utility control statements are used to create members from sequential input data; the statements do not specify any editing. • GENERATE indicates that: (1) three member names are included in subsequent MEMBER statements and (2) the IDENT parameter appears twice in subsequent RECORD statements. • The first MEMBER statement assigns a member name (MEMBER1) to the first member. • The first RECORD statement (GROUP1) iden~ifies the last record to be placed in the first member. The name of this record (FIRSTMEM) appears in bytes 1 through S of the input record. • The remaining MEMBER and RECORD statements and third members. Note that, as there is statement associated with the third MEMBER remainder of the input file will be loaded member. define the second no RECORD statement, the as the third IEBGENER EXAMPLE 7 In this example, sequential input is converted into two partitioned members. The newly created members are merged into an existing partitioned data set. User labels on the input data set are passed to the user exit routine. //DISKTODK // //SYSPRINT //SYSUTl JOB EXEC DD DD // // //SYSUT2 DD // //SYSIN DD GENERATE EXITS MEMBER GROUPl RECORD MEMBER 09#660,SMITH PGM=IEBGENER SYSQUT=A DSNAME=INSET,UNIT=disk,DISP=(OLD,KEEP), VOlUME=SER=111112, LABEL=(,SUL) DSNAME=EXISTSET,UNIT=disk,DISP=(MOD,KEEP), VOLUME=SER=111113 * MAXNAME=3,MAXGPS=1 INHDR=ROUTl,INTlR=ROUT2 NAME=(MEMX,ALIASX) IDENT=(S,'FIRSTMEM',I) NAME=MEMY The control statements are discussed below: • SYSUTI DD defines the input data set (INSET). The input data set, which resides on a disk volume, has standard and user labels. • SYSUT2 DD defines the output partitioned data set (EXISTSET). The members created during this job step are merged into the partitioned data set. IEBGENER Program 161 '. SYSIN DD defines the control data set, which follows in the input stream. The utility control statements are used to create members from sequential input data; the statements do not specify any editing. • GENERATE indicates that: (1) a maximum of three names and aliases are included in subsequent MEMBER statements and (2) one IDENT parameter appears in a subsequent RECORD statement. • EXITS defines the user routines that are to process user labels. • The first MEMBER statement assigns a member name (MEMX) and an alias (AlIASX) to the first member. • The first RECORD statement (GROUP1) identifies the last record to be placed in the first member. The name of this record (FIRSTMEM) appears in bytes 1 through 8 of the input record. • The second MEMBER statement assigns a member name (MEMY) to the second member. The remainder of the input data set is included in this member. IEBGENER EXAMPLE 8 In this example, a sequential input data set is edited and copied. //TAPETAPE // //SYSPRINT //SYSUTl JOB EXEC DD DD // //SYSUT2 DD // // //SYSIN DD GENERATE RECORD EXITS lABELS RECORD 09#660,SMITH PGM=IEBGENER SYSOUT=A DSNAME=OlDSET,UNIT=tape,DISP=(OlD,KEEP), VOlUME=SER=001234,lABEl=(3,Sl) DSNAME=NEWSET,UNIT=tape,DISP=(NEW,PASS), DCB=(RECFM=FB,lRECl=80,BlKSIZE=2000), VOlUME=SER=001235,lABEl=(,Sl) * MAXFlDS=3,MAXlITS=11 FIElD=(lO,'**********'"l), FIElD=(S,1,HE,11),FIElD=(1,'=',,16) INHDR=ROUT1,OUTTlR=ROUT2 DATA=INPUT lABElS=2 72 C (first header label record) (second header label record) RECORD lABElS=2 (first trailer label record) (second trailer label record) The control statements are discussed below: 162 • SYSUTl DD defines the sequential input data set (OlDSET). The data set was originally written as the third data set on a tape volume. • SYSUT2 DD defines the sequential output data set (NEWSET). The data set is written as the first data set on a tape volume. The output records are blocked to reduce the space required by the data set and to reduce the access time MVS/370 Utilities required when the data set is subsequently referred to. data set is passed to a subsequent job step. The • SYSIN DD defines the control data set, which follows in the input stream. • GENERATE indicates that: (1) a maximum of three FIELD parameters is included in subsequent RECORD statements and (2) a maximum of 11 literal characters are included in subsequent FIELD parameters. • The first RECORD statement controls the editing, as follows: (1) asterisks are placed in positions 1 through 10, (2) bytes 1 through 5 of the input record are converted from H-set BCD to EBCDIC mode and moved to positions 11 through 15, and (3) an equal sign is placed in byte 16. • EXITS indicates that the specified user routines require control when SYSUTI 1S opened and when SYSUT2 is closed. • LABELS'indicates that labels are included in the input stream. • The second RECORD statement indicates that the next two records from SYSIN should be written out as user header labels on SYSUT2. • The third RECORD statement indicates that the next two records from SYSIN should be written as user trailer labels on SYSUT2. This example shows the relationship between the RECORD LABELS statement, the LABELS statement, and the EXITS statement. IEBGENER attempts to write a first and second label trailer as user labels at close time of SYSUT2 before returning control to the system; the user routine, ROUT2, can review these records and change them, if necessary. IEBGENER EXAMPLE 9 In this example, a sequential input data set is edited and copied. //DISKDISK // //SYSPRINT //SYSUTI JOB EXEC DD DD // //SYSUT2 DD // // //SYSIN DD GENERATE EXITS GROUP1 RECORD GROUP2 RECORD 09#660,SMITH PGM=IEBGENER SYSOUT=A DSNAME=OLDSET,UNIT=disk,DISP=(OLD,KEEP), VOLUME=SER=111112 DSNAME=NEWSET,UNIT=d;sk,DISP=(HEW,KEEP), VOLUME=SER=111113,DCB=(RECFM=FB,LRECL=80, BLKSIZE=640),SPACE=(TRK,(20,10» * MAXFLDS=4,MAXGPS=1 IOERROR=ERRORRT IDENT=(8,'FIRSTGRP',1), FIElD=(21,80,,60),FIELD=(59,1,,1) FIELD=(11,90,,70),FIELD=(69,1,,1) 72 C /* The control statements are discussed below: • SYSUTI DD defines the input data set (OLDSET). • SYSUT2 DD defines the output data set (NEWSET). Twenty tracks of primary storage space and ten tracks of secondary storage space are allocated for the data set on a disk IEBGENER Program 163 volume. The logical record length of the output records is 80 bytes, and the output is blocked. • SYSIN DD defines the control data set, which follows in the input stream. • GENERATE indicates that: (1) a maximum of four FIELD parameters are included in subsequent RECORD statements and (2) one IDENT parameter appears in a subsequent RECORD statement. • EXITS identifies the user routine that handles input/output errors. • The first RECORD statement (GROUP1) controls the editing of the first record group, as follows: (1) FIRSTGRP, which appears in bytes' 1 through 8 of an input record, is defined as being the last record in the first group of records and (2) bytes 80 through 100 of each input record are moved into positions 60 through 80 of each corresponding output record. (This example implies that bytes 60 through 79 of the input records in the first record group are no longer required; thus, the logical record length is shortened by 20 bytes.) The remaining bytes within each input record are transferred directly to the output records, specified in the second FIELD parameter. • ~The second RECORD statement (GROUP2) indicates that the remainder of the input records are to be processed as the second record group. Bytes 90 through 100 of each input record are moved into positions 70 through 80 of the output records. (This example implies that bytes 70 through 89 of the input records from group 2 are no longer required; thus, the logical record length is shortened by 20 bytes.) The remaining bytes within each input record are transferred directly to the output records, specified in the second FIELD parameter. If the logical record length of the output data set differs from that of the input data set (as in this example), all positions in the output records must undergo editing to justify the new logical record length. 164 MVS/370 Utilities IEBGENER EXAMPLE 10 ) In the example, a sequential input data set is edited and copied. //TAPETAPE // //SYSPRINT //SYSUTI JOB EXEC PGM=IEBGENER DD SYSOUT=A . DD DSNAME=OLDSET,UNIT=tape,DISP=(OLD,KEEP), // VOLUME=SER=OOI234,LABEL=(3,SUL) //SYSUT2 DD DSNAME=NEWSET,UNIT=tape,DISP=(NEW,PASS), // VOLUME=SER=OOI235,LABEL=(,SUL), // DCB=(RECFM=FB,LRECL=aO,BLKSIZE=2000) //SYSIN DD *MAXFLDS=3,MAXLITS=11 GENERATE RECORD FIELD=(IO,'**********'"I), FIELD=(5,I,HE,II),FIELD=(I,'=',,16) LABELS DATA=INPUT RECORD LABELS=3 72 c (first header label record) (second header label record) (third header label record) RECORD LABELS=2 (first trailer label record) (second trailer label record) The control statements are discussed below. • SYSUTI DD defines the input data set (OLDSET). is the third data set on a tape volume. The data set • SYSUT2 DD defines the output data set (NEWSET). The data set is written as the first or only data set on a tape volume. The output records are blocked to reduce the space required by the data set and to reduce the access time required when the data set is subsequently referred to. The data set is passed to a subsequent job step. • SYSIN DD defines the control data set, which follows in the input stream. • GENERATE indicates thata (1) a maximum of three FIELD parameters are included in subsequent RECORD statements and (2) a maximum of 11 literal characters are included in subsequent FIELD para~eters. • The first RECORD statement controls the editing, as follows. (1) asterisks are placed in positions 1 through 10, (2) bytes 1 through 5 of the input record are converted from H-set BCD to EBCDIC mode and moved to positions 11 through 15, and (3) an equal sign is placed in byte 16. • LABELS indicates that label records are included in the input stream. • The second RECORD statement indicates that three aO-byte records (cards), to be written as user labels on the output data set, immediately follow. • The third RECORD statement indicates that the following cards are to be treated as trailer labels. IEBGENER Program 165 TNL GN26-1.133 (30 Mar 84) to GC26-406S-1 \ IEIIMAgl pROGRAH IEBIMAGE is a data set utility that creates and maintains the following types of IBM 3800 Printing Subsystem and IBM 4241 Printer modules and stores them in a library. • Forms control buffer modules for the 3800 and 4248 that specify controls for the vertical line spacing and anyone of 12 channel codes per line. • COpy modification modules for the 3800 that specify data that is to be printed on every page for specified copies of the output data set. • Character arrangement table modules for the 3800 that translate the input data into printable characters and identify the associated character set(s) and graphic character modification moduleCs). • Graphic character modification modules for the 3800 that contain the scan patterns of user-designed characters and/or characters from IBM-supplied modules. • Library character set modules for the 3800 that contain the scan patterns of IBM-supplied character sets and/or user-defined character sets. The IEBIMAGE program creates and maintains all modules required for use on the 3800 Model I and Model 3 printers. The program default is to build these modules in the 3800 Model 1 format; however, 3800 Model 3 compatibility can be specified with IEBIMAGE utility control statements. IEBIMAGE can also be used to create and maintain FCB modules for the 4248 printer. 3262 Model SPrinter ------------------The 4248 FCB modules c·reated by IEBIMAGE are compatible with the 3262 Model S Printer; however, the 3262 Modal S does not support variable printer speeds or the horizontal copy feature of the 4248. Unless otherwise stated, where a reference to the 4248 printer is used in this chapter, the 3262 Model S can be substituted. End of 3262 Model S Printer ----------------~ glNIRAL INFORMATION STORAGE REQUIREMENTS For III IMAGE The IEBIMAGE utility program is IBM-supplied and requires pageable virtual storage in which to operate. The storage needed by IEBIMAGE is given by the formula. Storage requirements (in bytes) I 166 MV$/370 Utilities = 44K+4B+H The largest block size in the job step, rounded to the next highest multiple of 2K. If the format specified for the data set is VS, and LRECL is less than 32K, then B is the maximum logical record length, rounded to the next highest multiple of 2K. TNL GN26-8133 (30 Mar 84) to GC26-4065-1 H The size of the largest member to be loaded from SYS1.IMAGELIB, rounded to the next highest multiple of 2K. K 1024 bytes. 'ar IVll.Z"AGELZI The auxiliary storage requirement in tracks for SYS1.IMAGELIB is: Number of tracks A = (A+B)/T The number of 1403 UCS images, 3211 UCS images, 3211 FCB images, 3525 data protection images, 3886 format records, 3890 SCI programs, 3800 FCB modules, 4248 FeB images, 3262 Model 5 FCB images, and 3800 character arrangement tables (both IBM-supplied and user-defined images or modules, as applicable). If the appropriate printer is in the system, IBM supplies twelve 1403 UCS images, five 3211 UCS images, four 3211 FCB images, one 3800 FCB image, one 4245 UCS image table, one 4248 UCS image table, and fourteen 3100 character arrangement tables. According to the TABLE parameter coded on the DATAMGT system generation macro, IBM supplies the following number of additional character arrangement tables: • • • • • 5 if T3211 is specified 13 if T1403 is specified 10 if TOCR is specified 3 if TKAT is specified 3 if TFMT is specified If TABLE = ALL is coded, add all the above numbers. If ALL, T3211, or T1403 is coded, add two more tables for the GRAFSPC1 and GRF2SPCl graphic character modification modules. Note that IBM supplies no 4245 or 4248 UCS images in SYS1.IMAGELIB. The 4245 and 4248 printers load their own UCS images into the UCS buffer at power-on time. IBM does supply 4245 and 4248 FCB images which may be used. For more information on printer-supplied UCS or FCB images, see System Programming Library: Dat, Manaaement. I (V+600)/1500 for each 3800 graphic character modification module and library character set module, each 3800 copy modification module, 4245 UCS image table, 4248 UCS image table, and each 3890 SCI program that is more than approximately 600 bytes. V is the virtual storage requirement in bytes for each module. The virtual storage requirements for the IBM-supplied 3800 graphic character modification module containing the World Trade National Use Graphics are 32420 bytes for Modell and 55952 bytes for Model 3. The virtual storage requirements for the IBM-supplied 3800 library character sets for the Model 1 are 4680 bytes and 1064 bytes for the Model 3. T The approximate number of members per track, depending on type of volume. Because of the overhead bytes and blocks in a load module, the difference in space requirements for an 80-byte module and a 400-byte module is small. These constants assume an average member of a blocks, including a file mark, with a total data length of 800 bytes. For example, on a 3330 with 135 bytes of IEBIMAGE Program 167 TNt GN26-8133 (30 Mar 84) to GC26-4065-1 block overhead, the assumed average is 1880 bytes. If a different average member data length and average number of blocks per member are anticipated, these constants should reflect the actual number of members per track. To determine the number of members per track, divide the average member length, including block overhead, into the track capacity for the device. (Track capacity for OASO is discussed in Data Management Macro Instructions.> T = 63 4 7 4 8 8 9 for for for for for for for for a a a a a a a Cit 2305-1 2305-2 2314/.2319 3330 or a 3330-11 3340 or 3344 3350 3375 3380 The result, (A+B)/T, is the track requirement. The number of directory blocks for SYS1.IMAGELIB is given by the formula: Number of directory blocks = (A+C+O)/6 A As calculated to determine the track requirement, above. C The number of modules used to calculate B, when calculating the track requirement. D The number of aliases. The IBM-supplied 1403 UCS images have four aliases and the IBM-supplied 3211 UCS images have six aliases. If they will not be used, these aliases can be scratched after system generation. "AINTAINING THE SYS1.IHAGELIB DATA SET You will normally maintain SYS1.IMAGELIB using several programs in conjunction with IEBIMAGE. For example, you may find it necessary to rename or delete modules or to compress or list the entire contents of the data set. Utility programs such as IEBCOPY, IEBPTPCH, IEHLIST, IEHMOVE, and IEHPROGM (as described in this book) and HMASPZAP or AMASPZAP (as described in Seryjce ~) should be used to help maintain SYS1.IMAGELIB. If you use programs other than IEBIMAGE for maintenance, you must specify the full module name. The module's full name consists of a 4-character prefix followed by its 1- to 4-character user-assigned name. It is thus a 5- to 8-character member name in the form: FCB2xxxx, which identifies an FCB module that may be used with a 3203, 3211, 3262 Model 5, 4248, or 4245 printer. Note that the 4248 accepts FCBs that will also work with a 3203, 3211, 3262 Model 5, or 4245 printer. FCB3xxxx, which identifies a 3800 FCB module FCB4~, which identifies an FCB module that may be used with a 4248 or 3262 Model 5 printer M001~, which identifies a 3800 copy modification module XTB1xxxx, which identifies a 3800 character arrangement table module GRAFxxxx, which identifies a graphic character modification module for a 3800 Model 1 GRF2~, which identifies a graphic character modification module for a 3800 Model 3 168 MVS/370 Utilities TNL GN26-8133 (30 Mar 84) to GC26-4065-1 LCSlnn, which identifies a library character set module for a 3800 Model I LCS2nn, which identifies a library character set ...odule for a 3800 Model 3 where I 2nQQS no is the 1- to 4-character user-assigned name of the Module. is the 2-character user-assigned ID of the module. Alias names are not supported by IEBIMAGE, so you should be careful if you use them. For example, if you change a ...odule by specifying its alias name, the alias name becomes the tnain na .... of the new module, and the old module is no longer accessible via the alias but is still accessible via its original main name. GENERAL MODULE STRUCTURE Each module contains eight bytes of header information preceding the data. For the 3800 printing subsystem, the general ...odule header is shown in Figure 61. Length (in hexadecimal) of module, excluding the 8 bytes of header information Reserved - (X'OOOO') A 1- to 4-character identification of the module, left-justified (excluding the system-assigned pre~) Figure 61. 3800 General Module Header Header information for the 4248 printer FeB module is shown, with the module format, in Figure 62.1 on page 172. The SETPRT SVC uses the name tal • Identify the module in the image library • store the name in the UCB extension The SETPRT SVC uses the length tal • Obtain sufficient storage for the module • Build channel programs to load the data into the printer' IEBIMAGE Program 16' -) TNL GN26-8l33 (30 Mar 84) to GC26-4065-l NAMING CONVENTIONS FOR MODULES Each module placed in a library by the IEBIMAGE utility has a 4-character system-assigned prefix as the first part of its name. These prefixes arel FCB3 for 3800 forms control buffer modules FCB4 for 3262 Model 5 and 4248 forms control buffer module. MODI for 3800 copy modification modules XTBI for 3800 character arrangement table modules GRAF for graphic character modification modules for a 3800 Model 1 GRF2 for graphic character modification modules for a 3800 Model 3 LCSI for ~ibrary character set modules for a 3800 Model 1 LCS2 for library character set modules for a 3800 Model 3 You can assign a 1- to 4-character identifier (name) to the module you create by using the NAME control statement in the operation group you use to build the module. If the module is a library character set, the ID assigned to it must be exactly two characters. Each of those characters must be within the range 0 through 9, and A through F; the second character must represent an odd hexadecimal digit. However, the combinations X'7F' and X'FF' are not allowed. Except for library character set modules, this identifier is used in the JCL, the SETPRT parameter, or the character arrangement table to identify the module to be loaded. While IEBIMAGE refers only to the 1- to 4-character name or the 2-character ID (the suffix) that is appended to the prefix, the full name must be used when using other utilities (such as IEBPTPCH or IEHPROGM). USING IEBIMAGE CREATING A FORMS CONTROL BUFFER MODULE The forms control buffer (FCB) module is of variable length and contains vertical line spacing information (6, 8, or 12 lines per inch for the 3800 Modell; 60r 8 lines per inch for the 4248; and 6, 8, 10, or 12 lines per inch for the 3800 Model 3). The FCB module can also identify one of 12 carriage-control channel codes for each line. For the 4248 printer, the module also contains information on the horizontal copy feature and the printer speed. The FCB module is created and stored in an image library, using the FCB and NAME utility control statements of the IEBIMAGE program. For the 4248 FCB module, the INCLUDE and OPTION statements can also be coded to indicate that an existing FCB module (prefix FCB2 or FCB4) is to be used as a model. For the 3800, IBM supplies one default FCB image in SYSl.IMAGELIB, called FCB3STDl. For the 4248, although the last FCB image loaded is reloaded by the printer at power-on time, IBM supplies two FCB images that may also be used by printers other than the 4248. For the 3262 Model 5, a default FCB image is also supplied. 170 MVS/370 Utilities TNL ON26-8l33 (30 Mar 84) to OC26-4065-l 3100 FCB Module structure The FCB data following the header information is a series of I-byte line control codes for each physical line of the form. There are 18 to 144 of these bytes, depending on the length of the form. Each byte is a bit for vertical forms codes for vertical module is shown in pattern describing one of 12 channel codes positioning and one of four lines-per-inch line spacing. The structure of the 3800 FCB Figure 62. Reserved Channel Code (00) Line Spacing (LPl) 00 =6 LPI 01 =8 LPI 10 =10 LPI 11 =12 LPI Binary Hex 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 0 I 2 3 4 S 6 7 8 9 A B C Channel -:(nUii) I 2 3 4 S 6 7 8 9 10 11 12 Figure 62. 3800 FeB Module Structure • The top and bottom 1/2 inch of each page are unprintable, and the bytes corresponding to these positions must be void of any channel codes. Three bytes of binary zeros are supplied by the IEBIMAOE utility for the top and bottom 1/2 inch. • The total number of lines defined in the module must be equal to the length of the form. The printable lines defined must start 1/2 inch below the top and stop 1/2 inch from the bottom of the form. 4248 FCB Module structure The FeB data following the header information consists of at least five bytes' a flag byte (X'7E'), a control byte (containing information about the horizontal copy feature and printer speed), an offset byte, one or more FeB data byte. (similar to the 3800 data byte for each physical line of the form), and an end-of-sheet byte (X'FE'). The format of the 4241 FeB module is shown in Figure 62.1 on page 172. ) IEBIMAOE Program 171 TNI GN26-8133 (30 Mar 84) to GC26-406S-l Header - - - - - - - Data Byte .....- - - - - - - Offset Byte .....- - - - - - - - - Control Byte ' - - - - - - - - - - - - Flag Byte (X'7E') ......- - - - - - - - - - - - - - Length (in hexadecimal) of module, excluding the 3 'bytes of header information ' - - - - - - - - - - - - - - - - - - - Flag Byte: X'OO' = Non-default imlle X'80' = Default imlle Figure 62.1. 4248 FCB Module Structure The control byte is a bit pattern describing whether the horizontal copy feature is active and what printer speed is to be set when the FCB is loaded into the buffer. The structure of the control byte is shown in Figure 62.2. Bit Pattern 1011213(45)671 ~ , t Stacker Drop Rate l ,2 Printer Speed (PSPEED)2 00 = Unchanged 01 = Low (2200 LPM) 10 = Medium (3000 LPM) 11 = High (3600 LPM) Horizontal Copy Feature2 o =Deactivate 1 = Activate Stacker Level Control I ,2 Reserved (X'O') Figure 62.2. 4248 FCB Module Control Byte Notes to Figure 62.2: 172 1 IEBIMAGE sets these bits to zero. For more information on the stacker drop rate and stacker level control bits, .ee the appropriate hardware manual for your printer. Z If the module is used by a 3262 Model S printer, these bit. are ignored. MVS/370 Utilities TNL GN26-8133 (30 Mar 84) to GC26-406S-1 The offset byte follows the control byte and is set either to zero or to the print position of the horizontal copy (2 through 168). ) The data byte is a bit pattern similar to that produced for the 3800 printing subsystem. Each data byte describes one of 12 channel codes for vertical forms positioning and one of the allowed lines-per-inch codes for vertical line spacing. The structure of the data byte is shown in Figure 62.3. :/ Bit Pattern Channel Code Line Spacing (LPI) 0000 =No change 0110 =6 LPI 1000 =8 LPI Binary 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 Hex 0 1 2 3 Channel - (null) 1 2 3 4 4 5 6 7 8 9 A B C 5 6 7 8 9 10 11 12 Figure 62.3. 4248 FCB Module nata Byte The total number of lines defined in the module must ba equal to the length of the form. FeB Module Listing Figure 63 on page 172.2 shows the IEBIMAGE listing of a 3800 FCB module. The notes that follow the figure describe the encircled numbers in the figure. For the 4248 FCB module, the IEBIMAGE listing also includes the horizontal copy feature, printer speed setting, and default settings. ~. ) IEBIMAGE Program 172.1 TNL ON26-1133 (30 Mar 84) to GC26-4065-1 PRJNT LINE PRINT PRINT PRINT PRINT 'RINT PRINT PRINT PR!NT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRIt.T PRINT PRINT PAINT PRINT PRINT ~ttn Llt.E LINE LINE LINE LINE LINE LINE LINE LINE LINE LINE LIt.E LINE LINE LINE LINE LINE LINE LINE LINE LINE LINE LIt.E LINE LINE LINE LIN' G? A~a 2 AT ] AT It AT 5 AT 6 AT 7 AT a AT 9 AT 10 AT 11 AT 12 AT 13 AT lit AT 15 AT 16 AT 17 AT la AT 19 AT 20 AT 21 AT 22 AT 23 AT 21t AT 25 AT 26 AT 27 a 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 • LINES PER JNCH - HAS CHANNEL LINES LINES LIt.ES LINES LINES LINES LINES LINES LINES LINES LINES LINES L1t.ES LINES LINES LINES LIt.ES LINES LIt'ES LINES LINES LINES LIt'ES , •. PER PER PER PER PER PER PER PER PER PER PER PER PER PER PER PER PER PER PER PER PER PER 1 COOE. INCH It«:H ItCH INCH INCH INCH lUCH It.CH It.CH INCH INCH ItICH ItCH I..cH INCH INCH INCH INCH It.CH IUCH INCH INCH 1'''. • • • .·tR INCH PER PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 PER 12 LIt~ES PER 12 LINES PER 12 LINES PER ... i. to. PRI ...·, PRINT PlItn PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT ""It.T PRINT PRINT Lit'! LINE LIt'E LIt.E LIN! LINE LINE LINE LINE LINE UNE LINE LINE LiNE LINE LINE LINf LI.NE LINE LINE 9a 99 100 101 102 10] 101t 105 106 107 loa 109 110 111 112 113 lilt i15 116 117 11& AT AT AT AT AT AT AT AT AT AT AT AT AT AT AT AT AT AT AT AT AT AT .... tlES LINE S LINES LIt.ES LIt.ES LIt.ES LINES LINES LIt.ES LINES LINES LIt'ES LINES LIt.ES LIt.ES LIt'ES LINES LINES LIt'ES LIt'ES LIt'ES It~CH !tICH INCH INCH ItICH INCH - HAS CHANNEL 12 COOE. !tICH It'CH !ttCH It.CH INCH INCH INCH !t~CH It.CH IUCH IUCH IUCH ItlCH It'CH It'CH ItlCH IUCH It'CH Figure 63. IEBIMAGE Listing of a Forms Control Buffer Mo.du.le 172.2 MVS/370 Utilities Notes to Figure 63: 1. The line number. fashion. Each line of the form is listed in this 2. The vertical spacing of the line, in lines per inch. 3. The channel code, printed for each line that includes a channel code. CREATING A COPY MODIFICATION MODULE The 3800 copy modification module contains predefined data for modifying some or all copies of an output data set. Segments of the module contain predefined text, its position on each page of the output data set, and the copy or copies the text applies to. The copy modification module is created and stored in an image library using the INCLUDE, OPTION, COPYMOD, and NAME utility control statements of IEBIMAGE. The INCLUDE statement identifies a module that is to be copied and used as a basis for the newly created module. The OPTION statement with the OVERRUN parameter allows the user to suppress the printing of line overrun condition messages for those vertical line spacings that are not applicable to the job. The OPTION statement with the DEVICE parameter specifies 3800 Model 3 compatibility mode processing. The COPYMOD statement is used to describe the contents of one of the new module's segments. The NAME statement is used to identify the new module and to indicate whether it is new or is to replace an existing module with the same name. COPVMOD Module structure The copy modification data following the header information is a series of segments. Each segment is of variable length and is composed of the components shown in Figure 64. Segment 2 Sesment I TEXT ~------Modifying text ' - - - - - - - - - - - N u m b e r of bytes of text L...---------Starting print position ~------Number of lines to be modified ' - - - - - - - Starting line number '------Number of copies to be modified '-----Starting copy number Figure 64. Copy Modification Module Structure A, B, C, D, E, and F are each 1-byte fields. • If the module contains more than one segment, the starting copy number must be equal to or greater than the starting copy number in the previous segment. • Any string of the same character within the text may be compressed into 3 bytes. The first such byte is X'FF', the IEBIMAGE Program 173 second byte is the number of compressed characters, and the third byte is the data code for the character. • The size of the module is limited to 8192 bytes of data and 8 bytes of header information. COPVMOD Module Listing Figure 65 shows the listing of three segments of a copy modification module. This listing shows only the positioning of the modifying text. To print out the text itself, you can use the IEBPTPCH utility program. The numbered notes that follow the figure describe the items marked with the circled numbers. ~MODIHANK SEGMENT INITIAL COPY NO. NUMBER OF COPIES INITI-AL LINE NO. NUMBER OF LINES INITIAL PRINT POSe NUMBER OF CHARACTERS 1 1 4 58 1 35 18 2 2 1 1 1 50 ?3 3 2 1 34 3 75 10 Each of the four translate table entries is to point to the '2A' (43rd character) position in the first WCGM, which contains the scan pattern for a lozenge. • The name of the character arrangement table is GFIO, and it is stored as a new module in the SYSl.IMAGELIB data set. The data set's directory is updated so that the name GFIO points to the new module; the old GFIO module can no longer be accessed through the data set's directory. BUILDING A NEW CHARACTER ARRANGEMENT TABLE MODULE FROM AN EXISTING COPY 3800 Model 3 In this example, an existing character arrangement table module is copied and used as a basis for a new -module. The new character arrangement table is identical to the old one, except that it uses the Gothic I5-pitch character set instead of Gothic 10-pitch. 216 MVS/370 Utilities //CHARMOD2 JOB // EXEC PGM=IEBIMAGE //SYSUTI DD DSNAME=SYSI.IMAGElIB,DISP=OlD /ISYSPRINT DD SYSOUT=A //SYSIN DD * INCLUDE All OPTION DEVICE=3800M3 TABLE CGMID=87 NAME AIlS The control statements are discussed below. EXAMPLE 11: • The SYSUTI DD statement includes DISP=OlD to ensure that no other job can modify the data set while this job is executing. • The INCLUDE statement specifies that a copy of the character arrangement table named All is to be used as a basis for the new module. The All character arrangement table translates 8-bit data codes to printable characters in the Gothic IO-pitch character set. • The OPTION statement with the DEVICE parameter specifies 3800 Model 3 compatibility mode processing. • The TABLE statement specifies a new character set identifier, X'87', which is the identifier for the Gothic IS-pitch character set. No other changes are made to the character arrangement table. The new table calls for characters in the Gothic IS-pitch character set. • The name of the new character arrangement table is AIlS, and it is stored as a member of the SYSl.IMAGElIB data set. BUILDING GRAPHIC CHARACTERS IN A CHARACTER ARRANGEMENT TABLE MODULE 3800 Model 1 In this example, an existing character arrangement table module is copied and used as the basis for a new module that will include user-designed characters of a graphic character modification module. The new module is then added to the SYSl.IMAGElIB data set. //CHARMOD3 JOB // EXEC PGM=IEBIMAGE //SYSUTI DD DSNAME=SYSI.IMAGElIB,DISP=OlD //SYSPRINT DD SYSOUT=A //SYSIN DD INCLUDE ONB TABLE GCMlIST=ONBI, lOC=CC6F,2F,1),(7C,3C,1),(6A,2A,0» NAME ONBZ 72 * x The control statements are discussed below. IEBIMAGE Program 217 • The SYSUTI DD statement includes DISP=OLD to ensure that no other job can modify the data set while this job is executing. • The INCLUDE statement specifies that a copy of the character arrangement table named ONB is to be used as a basis for the new module. ONa refers to two WCGMs. • The TABLE statement identifies a graphic character modification module and stipUlates the translate table entries for each of its segments: GCMLIST=ONBI identifies the graphic character modification module named ONBI. The LOC parameter specifies the translate table entry location, character position, and WCGM number for each segment of the module: The first segment corresponds to the 8-bit data code X'6F'. The segment's scan pattern is to be loaded at character position X'2F' (that is, the 48th character position) in the second WCGM. The second segment corresponds to the 8-bit data code X'7C'. The segment's scan pattern is to be loaded at character position X'3C' (that is, the 6Ist character position) in the second WCGM. The third segment corresponds to the 8-bit data code X'6A'. The segment's scan pattern is to be loaded at character position X'2A' (that is, the 43rd character position) in the first WCGM. • EXAMPLE 12: The name of the new character arrangement table is ONBZ, and it is stored as a new module in the SYSI.IMAGELIB data set. DELETING GRAPHIC REFERENCES FROM A CHARACTER ARRANGEMENT TABLE MODULE 3800 Model 3 In this example, an existing character arrangement table module is copied and used as a basis for a new one. The new character arrangement table deletes references to all graphic character modification modules and resets the translate table entries that were used to point to character positions for the segments of a graphic character modification module. //CHARMOD4 JOB // EXEC PGM=IEBIMAGE //SYSUTI DO DSNAME=SYSI.IMAGELIB,DISP=OLD //SYSPRINT DO SYSOUT=A //SYSIN DO INCLUDE ZYL OPTION DEVICE=3800M3 TABLE GCMlIST=DElETE,lOC=((6A),(6B» NAME ZYlA * The control statements are discussed below. 218 • The SYSUTI DO statement includes DISP=OLD to ensure that no other job can modify the data set while this job is executing. • The INCLUDE statement specifies that a copy of the character arrangement table named ZYL is to be used as a basis for the new module. MVS/370 Utilities • The OPTION statement with the DEVICE parameter specifies 3800 Model 3 compatibility mode processing. • The TABLE statement deletes references to graphic character modification modules and resets two translate table entries: GCMLIST=DELETE specifies that all names of graphic character modification modules included with the module when the ZYL character arrangement table was copied are to be reset to blanks (X'40'). The LOC parameter identifies two locations in the translate table, X'6A' and X'6B', that are to be set to X'FF' (the default value when no character position or WCGM values are specified). • The name of the new character arrangement table is ZYLA, and it is stored as a member of the SYS1.IMAGELIB data set. EXAMPLE 13: LISTING THE WORLD TRADE NATIONAL USE GRAPHICS GRAPHIC CHARACTER MODIFICATION MODULE 3800 Model 1 In this example, each segment of the IBM-supplied graphic character modification module containing the World Trade National Use Graphics is printed. Each segment is unique, although the scan patterns for some segments are identical to other segment's scan patterns with only the 8-bit data code being different. //GRAFMODl JOB // EXEC PGM=IEBIMAGE //SYSUTl DD DSNAME=SYS1.IMAGELIB,DISP=SHR //SYSPRINT DD SYSOUT=A //SYSIN DD * GRAPHIC NAME * The control statements are discussed below. EXAMPLE 14: GRAFMOD • DISP=SHR is coded because the library is not being updated. • The World Trade National Use Graphics graphic character modification module is identified with the pseudonym of "*". The scan pattern of each of the characters in the module is printed. BUILDING A GRAPHIC CHARACTER MODIFICATION MODULE FROM THE WORLD TRADE 3800 Model 3 In this example, a graphic character modification module is built. Its characters are segments copied from the World Trade National Use Graphics graphic character modification module. (See the IBM 3800 Printing Subsystem Programmer's Guide for the EBCDIC assignments for the characters.) The new module is stored in the SYS1.IMAGELIB system data set. IEBIMAGE Program 219 //GRAFMOD2 JOB // EXEC PGM=IEBIMAGE //SYSUTI DD DSNAME=SYSl.IMAGElIB,DISP=OlD //SYSPRINT DD SYSOUT=A //SYSIN DD * OPTION DEVICE=3800M3 GRAPHIC REF=«24),(2S),(26),(27),(28), (31),(33),(3S),(38),{40» NAME CSTW 72 X The control statements are discussed below. • The SYSUTI DD statement includes DISP=OlD to ensure that no other job can modify the data set while this job is executing. • DEVICE=3800M3 in the OPTION statement specifies 3800 Model 3 compatibility mode module format. • By not specifying the GCM keyword, the GRAPHIC statement identifies the World Trade National Use Graphics graphic character modification module. Ten of its segments are to be copied and used with the new module. • The name of the graphic character modification module is CSTW, and it is stored as a new module in the SYS1.IMAGElIB data set. EXAMPLE IS: BUILDING A NEW GRAPHIC CHARACTER MODIFICATION MODULE AND MODIFYING A CHARACTER ARRANGEMENT TABLE TO USE IT 3800 Model 3 In this example, a graphic character modification module is built. The module contains one user-designed character, a reverse 'E', whose 8-bit data code is designated as X'EO' and whose pitch is 10. An existing character arrangement table is then modified to include the reverse E. 220 MVS/370 Utilities //GRAFMOD3 JOB // EXEC PGM=IEBIMAGE //SYSUT! DO DSNAME=SYS!.IMAGElIB,DISP=OlD //SYSPRINT DO SYSOUT=A //SYSIH DD * OPTION DEVICE=3800M3 GRAPHIC ASSIGN=(EO,IO) XXXXXXXXXXXXXXX SEQ=IO XXXXXXXXXXXXXXX SEQ=!! XXXXXXXXXXXXXXX SEQ=12 XXXX SEQ=13 XXX X SEQ=14 XXXX SEQ=15 XXXX SEQ=16 XXXX SEQ=17 XXXX SEQ=18 XXXX SEQ=19 XXXXXXXXXXXXX SEQ=20 XXXXXXXXXXXXX SEQ=2! XXXXXXXXXXXXX SEQ=22 XXXX SEQ=23 XXXX SEQ=24 XXXX SEQ=25 XXXX SEQ=26 XXXX SEQ=27 XXXX SEQ=28 XXXX SEQ=29 XXXXXXXXXXXXXXX SEQ=30 XXXXXXXXXXXXXXX SEQ=3! XXXXXXXXXXXXXXX SEQ=32 NAME BODE INCLUDE GSIO OPTION DEVICE=3800M3 TABLE CGMID=(83,FF), GCMLIST=BODE, LOC=(EO,03,1) NAME REIO The control statements are discussed below. • The SYSUT1 DD statement includes DISP=OlD to ensure that no other job can modify the data set while this job is executing. • DEVICE=3800M3 in the OPTION statement preceding the GRAPHIC statement specifies 3800 Model 3 compatibility mode processing. • The GRAPHIC statement's ASSIGN parameter establishes the 8-bit data code, X'EO', and the width, 10-pitch, for the user-designed character. The data statements that follow the GRAPHIC statement describe The character's scan pattern. • The name of the graphic character modification module is BODE, and it is stored as a new module in the SYS!.IMAGElIB data set. • The INCLUDE statement specifies that a copy of the GS10 character arrangement table is to be used as the basis for the new table. • The TABLE statement specifies the addition of the reverse E to that copy of the GS10 table. CGMID=(83,FF) specifies the character set identifier X'83' for the Gothic-IO set (which is the set already used by the GSIO table) and specifies X'FF' as a character set IEBIMAGE Program 221 identifier to allow accessing of the second WCGM without loading it. GCMLIST=BODE identifies the graphic character modification module containing the reverse E for inclusion in the table. LOC=(EO,03,1) specifies that the reverse E, which has been assigned the 8-bit data code X'EO', is to be loaded into position X'03' in the second WCGM. Because this second WCGM is otherwise unused, any position in it could have been used for the reverse E. • EXAMPLE 16: The new character arrangement table is named REIO and stored as a new module in SYSl.IMAGELIB. BUILDING A GRAPHIC CHARACTER MODIFICATION MODULE FROM MULTIPLE SOURCES 3800 Model 1 In this example, a graphic character modification module is created. Its contents come from three different sources: nine segments are copied from an existing module with the INCLUDE statement; the GRAPHIC statement is used to select another segment to be copied; the GRAPHIC statement is also used to establish characteristics for a user-designed character. The new graphic character modification module, when built, is added to the SYSI.IMAGELIB. //GRAFMOD4 JOB // EXEC PGM=IEBIMAGE //SYSUTI DD DSNAME=SYSI.IMAGELIB,DISP=OLD //SYSPRINT DO SYSOUT=A //SYSIN DD * INCLUDE CSTW,DELSEG=3 GRAPHIC REF=(1,6A),GCM=BODE,ASSIGN=9A ******** SEQ=06 **~******* SEQ=07 **** **** SEQ=08 *** *** SEQ=09 *** **** SEQ=10 *** ****** SEQ=11 *** ****** SEQ=12 *** **** SEQ=13 *** **** SEQ=14 *** *** SEQ=15 *** *** SEQ=16 *** **** **** SEQ=17 *** ******* SEQ=18 *** ***** SEQ=19 NAME JPCK The control statements are discussed below. 222 • The SYSUTI DD statement includes DISP=OlD to ensure that no other job can modify the data set while this job is executing. • The INCLUDE statement specifies that a copy of the graphic character modification module named CSTW is to be included with the new module. All segments of CSTW, except the third segment (as a result of DELSEG=3), are to be copied into the new module and become the module's first through ninth modification segments. MVS/370 Utilities • The GRAPHIC statement specifies the module's tenth and eleventh segments: REF=(1,6A) and GCM=BODE specify that the tenth segment of the new module is to be obtained by copying the first segment from the graphic character modification module named BODE. In addition, the segment's 8-bit data code is to be changed so that its character is identified with the code X'6A'. ASSIGN=9A specifies that the new module's eleventh segment is a user-designed character whose 8-bit data code is X'9A' and whose width is lO-pitch (the default when no pitch value is specified). The GRAPHIC statement is followed by data statements that specify the character's scan pattern. • EXAMPLE 17: MODULE The name of the graphic character modification module is JPCK, and it is stored as a new module in the SYSl.IMAGElIB data set. DEFINING AND USING A CHARACTER IN A GRAPHIC CHARACTER MODIFICATION 3800 Model 3 In this example, a graphic character modification module containing a user-designed character is built. Next, a Format character arrangement table is modified to include that new character. Then, a copy modification module is created to print the new character enclosed in a box of Format characters. Finally, the result is tested to allow comparison of the output with the input. IEBIMAGE Program 223 //CHAR JOB //BUIlD EXEC PGM=IEBIMAGE //SYSUTl DD DSNAME=SYSl.IMAGElIB,DISP=OlD //SYSPRINT DD SYSOUT=A //SYSIN DD * OPTION DEVICE=3800M3 STEPl GRAPHIC ASSIGN=5C XXX XXX SEQ=Ol XXX XXX SEQ=02 XXX XXX SEQ=03 XXX XXX SEQ=04 XXXXXXXXXXXXXXXXXXXXXXX SEQ=05 XXXXXXXXXXXXXXXXXXXXXXX SEQ=06 XXXXXXXXXXXXXXXXXXXXXXX SEQ=07 XXX XXX SEQ=08 XXX XXX SEQ=09 XXX XXX SEQ=lO XXX XXX SEQ=!l SEQ=12 SEQ=l3 SEQ=!4 XXXXXXXXXXXXXXXXXXXXXXX SEQ=15 XXXXXXXXXXXXXXXXXXXXXXX SEQ=16 XXXXXXXXXXXXXXXXXXXXXXX SEQ=17 XXX XXX XXX SEQ=18 XXX XXX XXX SEQ=19 XXX XXX XXX SEQ=20 XXX XXX XXX SEQ=21 XXXX XXXXX XXXX SEQ=22 XXXX XXXXXXX XXXX SEQ=23 SEQ=24 XXXXXXXXXXXXXXXXXXX SEQ=25 XXXXX XXX XXX SEQ=26 SEQ=27 SEQ=28 XXXXXXXXXXXXXXXXXXXXXXX SEQ=29 XXXXXXXXXXXXXXXXXXXXXXX SEQ=30 XXXXXXXXXXXXXXXXXXXXXXX SEQ=3l XXXXXXX SEQ=32 XXXXXXXXXXXXXXXXXX SEQ=33 SEQ=34 XXXXXXXXXXXXXXXX SEQ=35 XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX SEQ=36 XXXXXXX SEQ=37 XXXXXXXXXXXXXXXXXXXXXXX SEQ=38 XXXXXXXXXXXXXXXXXXXXXXX SEQ=39 XXXXXXXXXXXXXXXXXXXXXXX SEQ=40 NAME AIBM 224 MVS/370 Utilities STEP2 STEP3 72 OPTION INCLUDE TABLE NAME OPTION COPYMOD DEVICE=3800M3 FMIO GCMlIST=AIBM,lOC=(5C,2C) BIBM DEVICE=3800M3 COPIES=1,lINES=58,POS=5, TEXT=(C,'W6X') COPYMOD COPIES=1,lINES=59,POS=5, TEXT=(C,'7*7') COPYMOD COPIES=1,lINES=60,POS=5, TEXT=(X,'E9F6E8') NAME CIBM X X X /* //TEST EXEC PGM=IEBIMAGE //SYSUTl DO DSNAME=SYSl.IMAGElIB,DISP=OlD //SYSPRINT DO SYSOUT=A,CHARS=(GFlO,BIBM), // MODIFY=(CIBM,l) //SYSIN DD * OPTION DEVICE=3800M3 GRAPHIC NAME AIBM /* The control statements are discussed below. • The SYSUTI DD statement includes DISP=OlD to ensure that no other job can modify the data set while this job is executing. • The GRAPHIC statement's ASSIGN parameter specifies that the 8-bit data code for the user-designed character is X'5C' and the width is lO-pitch (the default when no pitch is specified). The GRAPHIC statement is followed by data statements that specify the character's scan pattern for vertical line spacing of 6 lines per inch. • The name of the graphic character modification module is AIBM, and it is stored as a new module in SYSl.IMAGElIB. • At STEP2, the INCLUDE statement specifies that a copy of the FMIO character arrangement table is to be used as a basis for the new module. • The TABLE statement identifies the graphic character modification module named AIBM, created in the previous step. The TABLE statement's lOC parameter specifies the translate table entry location (the character's 8-bit data code) of X'5C' and the position (X'2C') where that character is to be loaded into the WCGM. • The name of the new character arrangement table, which is added to SYSl.IMAGElIB, is BIBM. • At STEP3, the three COPYMOD statements specify text that is to be placed on lines 58, 59, and 60 of the first copy of the output data set, starting at print position 5 on each line. When used with the BIBM character arrangement table, the characters W, 6, and X print as a top left corner, horizontal line segment, and top right corner, all in line weight 3. The characters 7, *~ and 7 print as a weight-3 vertical line segment on both sides of the user-designed character built at STEPl (the asterisk has the EBCDIC assignment 5C, which addresses that character). The hexadecimal E9, F6, and E8 complete the line-weight-3 Format box around the character. • The name of the copy modification module is CIBM, and it is stored as a new module on SYSl.IMAGElIB. IEBIMAGE Program 225 EXAMPLE 18: • At TEST, the the IEBIMAGE the SYSPRINT table is the modification character of EXEC statement calls for another execution of program to test the modules just created. On DD statement the BIBM character arrangement second of two specified, and the CIBM copy module is specified with a table reference 1, to use that BIBM table. • The GRAPHIC statement with no operand specified calls for' printing of the module, AIBM, specified with the NAME statement that follows it. Each page of the output listing for this IEBIMAGE run has the following modification printed in the lower left corner: • The OPTION statement with the DEVICE parameter at STEPl, STEP2, and STEP3 specifies 3800 Model 3 compatibility mode module format and processing considerations. LISTING A LIBRARY CHARACTER SET MODULE 3800 Model 1 In this example, each segment of a library character set is printed. The scan pattern of each of the characters in the module is printed. //lIBMODl JOB // EXEC PGM=IEBIMAGE //SYSUTI DD DSNAME=SYSl.IMAGElIB,DISP=SHR //SYSPRINT DD SYSOUT=A //SYSIN DD CHARSET NAME 83 * The control statements are discussed below. • EXAMPLE 19: NAME specifies the name of the library character set (83). BUILDING A LIBRARY CHARACTER SET MODULE 3800 Hodel 3 In this example, a library character set module is built. Its characters are segments copied from the World Trade National Use Graphics graphic character modification module. (See the IBM 3800 Printing Subsystem Programmer's Guide for the listing of all the segments of that module. The EBCDIC assignments for the characters are replaced by WCGM-Iocation codes.) The new module is stored in the SYSl.IMAGElIB syst~m data set. 226 MVS/370 Utilities 72 JOB // EXEC PGM=IEBIMAGE //SYSUTI DD DSNAME=SYSl.IMAGElIB,DISP=OlD //SYSPRINT DD SYSOUT=A //SYSIN DD OPTION DEVICE=3800M3 CHARSET REF=«24,01),(25,02),(26,03),(27,04),(28,05), X (31,06),(33,07),(35,08),(38,09),(40,OA» NAME 73 //lIBMOD2 * The control statements are discussed below. • The SYSUTl DD statement includes DISP=OlD to ensure that no other job can modify the data set while this job is executing. • DEVICE=3800M3 in the OPTION statement specifies 3800 Model 3 compatibility mode module format. • By not specifying the GCM keyword or a library character set ID, the CHARSET statement identifies the World Trade National Use Graphics graphic character modification module. Ten of its segments are to be copied and used with the new module. For example, the 24th segment is to be copied and assigned the WCGM location 01. See the REF parameter (24,01). • The name of the library character set module is 73, and it is stored as a new module in the SYS1.IMAGElIB data set. EXAMPLE 20: BUILDING A LIBRARY CHARACTER SET MODULE AND MODIFYING A CHARACTER ARRANGEMENT TABLE TO USE IT 3800 Model 3 In this example, a library character set module is built. The module contains one user-designed character, a reverse 'E', whose 6-bit WCGM-Iocation code is designated as X'03', and whose pitch is 10. An existing character arrangement table is then modified to include the reverse E. IEBIMAGE Program 227 //LIBMOD3 JOB // EXEC PGM=IEBIMAGE //SYSUTI DD DSNAME=SYSI.IMAGELIB,DISP=OLD //SYSPRINT DD SYSOUT=A //SYSIN DD OPTION DEVICE=3800M3 CHARSET ASSIGN=(03,IO) XXXXXXXXXXXXXXX SEQ=IO XXXXXXXXXXXXXXX SEQ=11 XXXXXXXXXXXXXXX SEQ=12 XXXX SEQ=13 XXXX SEQ=14 XXXX SEQ=15 XXXX SEQ=16 XXXX SEQ=!7 XXXX SEQ=18 XXXX SEQ=19 XXXXXXXXXXXXX SEQ=20 XXXXXXXXXXXXX SEQ=21 XXXXXXXXXXXXX SEQ=22 XXXX SEQ=23 XXXX SEQ=24 XXXX SEQ=25 XXXX SEQ=26 XXXX SEQ=27 XXXX SEQ=28 XXXX SEQ=29 XXXXXXXXXXXXXXX SEQ=30 XXXXXXXXXXXXXXX SEQ=31 XXXXXXXXXXXXXXX SEQ=32 NAME 73 INCLUDE GSIO OPTION DEVICE=3800M3 TABLE CGMID=(83,73),LOC=(EO,03,1) NAME REIO * The control statements are discussed below. • The SYSUTI DD statement includes DISP=OLD to ensure that no other job can modify the data set while this job is executing. • DEVICE=3800M3 in the OPTION statement specifies 3800 Model 3 compatibility mode module format and processing considerations. • The CHARSET statement's ASSIGN parameter establishes the 6-bit WCGM-location code, X'03', and the width, 10-pitch, for the user-designed character. The data statements that follow the CHARSET statement describe the character's scan pattern. • The name of the library character set module is 73, and it is stored as a new module in the SYSl.IMAGELIB data set. • The INCLUDE statement specifies that a copy of the GSIO character arrangement table is to be used as the basis for the new table. • The TABLE statement specifies the addition of the library character set containing the reverse E to that copy of the GSIO table. CGMID=t83,73) specifies the character set identifier X'83' for the Gothic-IO set (which is the set already used by the GSIO table) and specifies X'73' as a character set identifier to allow loading of the second WCGM with the library character set 73. 228 MVS/370 Utilities LOC=(EO,03,l) specifies that the reverse E, which has been assigned the WCGM location 03 in the second WCGM, is to be referenced by the EBCDIC code X'EO'. The new character arrangement table is named REIO and stored as a new module in SYSl.IMAGELIB. I EXAMPLE 21: BUILDING A LIBRARY CHARACTER SET MODULE FROM MULTIPLE SOURCES 3800 Model 1 In this example, a library character set module is created. Its contents come from three different sources: 62 segments are copied from an existing module with the INCLUDE statement; the CHARSET statement is used to select another segment to be copied; a second CHARSET statement is used to establish characteristics for a user-designed character. The new library character set module, when built, is added to the SYSI.IMAGELIB. //lIBMOD4 JOB // EXEC PGM=IEBIMAGE //SYSUTl DO DSNAME=SYSI.IMAGELIB,DISP=OLD //SYSPRINT DO SYSOUT=A //SYSIN DO * INCLUDE 33,DELSEG=(3,4) CHARSET REF=(I,02),GCM=BODE,ASSIGN=03 ******** SEQ=06 ********** SEQ=07 **** **** SEQ=08 *** *** SEQ=09 *** **** SEQ=lO *** ****** SEQ=1l *** ****** SEQ=12 *** **** SEQ=l3 *** **** SEQ=l4 *** *** SEQ=l5 *** *** SEQ=l6 *** **** **** SEQ=l7 *** ******* SEQ=l8 *** ***** SEQ=l9 NAME 53 The control statements are discussed below. • The SYSUTl DD statement includes DISP=OLD to ensure that no other job can modify the data set while this job is executing. • The INCLUDE statement specifies that a copy of the library character set module named 33 is to be included with the new module. All segments of 33, except the third and fourth segments (as a result of DELSEG=3,4), are to be copied into the new module and become the basis for the new module. • The CHARSET statement specifies the module's third and fourth segments: REF=(l,02) and GCM=BODE specify that the third segment of the new module is to be obtained by copying the first segment from the graphic character modification module named BODE. The segment's 6-bit WCGM-Iocation code is to be set so that its character is identified with the code X'02'. IEBIMAGE Program 229 ASSIGH=03 specifies that the new module's fourth segment is a user-designed character whose 6-bit WCGM-Iocation code is X'03' and whose width is IO-pitch (the default when no pitch value is specified). The CHARSET statement is followed by data statements that specify the character's scan pattern. • 230 MVS/370 Utilities The name of the library character set module is 53, and it is stored as a new module in the SYSl.IMAGELIB data set. IEBISAM PROGRAM IEBISAM can be used to: • COpy an indexed sequential (ISAM) data set directly from one DASD volume to another. • Create a backup (transportable) copy of an ISAM data set by copying (unloading) it into a sequential data set on a DASD or magnetic tape volume. • Create an ISAM data set from an unloaded data set. The sequential (unloaded) data set is in a form that can be subsequently loaded, that is, it can be converted back into an ISAM data set. • Print an ISAM data set. COPYING AN ISAM DATA SET IEBISAM can be used to copy an indexed sequential (ISAM) data set directly from one DASD volume to another. When the data set is copied, the records marked for deletion are only deleted if the DELETE parameter was specified in the OPTCD (optional control program service) field. Those records that are contained in the overflow area of the original data set are moved into the primary area of the copied data set. Control information characteristics such as BLKSIZE and OPTCD can be overridden by new specifications. Caution should be used, however, when overriding these characteristics (see "Overriding DCB Control Information" on page 232). CREATING A SEQUENTIAL BACKUP COPY An unloaded sequential data set can be created to serve as a backup or transportable copy of source data from an ISAM data set. Records marked for deletion within the ISAM data set are automatically deleted when the unloaded data set is created. When the data set is subsequently loaded--reconstructed into an ISAM data. set--records that were contained in the overflow area assigned to the original data set are moved sequentially into the primary area. An unloaded data set consists of SO-byte logical records. data set contains: The • Fixed records from an ISAM data set • Control information used in the subsequent loading of the data set Control information consists of characteristics that were assigned to the ISAM data set. These characteristics are: • • • • • • • • Optional control program service (OPTCD) Record format (RECFM) Logical record length (LRECL) Block size (BLKSIZE) Relative key position (RKP) Humber of tracks in master index (HTM) Key length (KEYLEH) Humber of overflow tracks on each cylinder (CYLOFL) IEBISAM Program 231 OVERRIDING DCB CONTROL INFORMATION When a load operation is specified, control information characteristics can be overridden by specifications in the DCB parameter of the SYSUT2 DO statement (refer to "Job Control Statements" on page 235 for a discussion of the SYSUT2 DO statement). Caution should be used, however, because checks are made to ensure that: 1. Record format is the same as that of the original indexed sequential data set (either fixed (F) or variable (V) length). 2. Logical record length is greater than or equal to that of the original ISAM data set when the RECFM is variable (V) or variable blocked (VB). 3. For fixed records, the block size is equal to or a multiple of the logical record length of the records in the original indexed sequential data set. For variable records, the block size is equal to or greater than the logical record length plus four. 4. Relative key position is equal to or less than the logical record length minus the key length. Following are relative key position considerations: • If the RECFM is V or VB, the relative key position should be at least 4. • If the DELETE parameter was specified in the OPTCD field and the RECFM is F or fixed blocked (FB), the relative key position should be at least 1. • If the DELETE parameter was specified in the OPTCD field and the RECFM is V or VB, the relative key position should be at least 5. 5. The key length is less than or equal to 255 bytes. 6. For a fixed unblocked data set with RKP=O, the LRECL value is the length of the data portion, not, as in all other cases, the data portion and key length. When changing an RKP=O data set RECFM from fixed unblocked and to fixed blocked, the new LRECL must be equal to the old LRECL plus the old key length. If either RKP or KEYLEN is overridden, it might not be possible to reconstruct the data set. The number of 80-byte logical records in an unloaded data set can be approximated by the following formula: x = n(y+2) 78 + 158 where x is the number of 80-byte logical records created, n is the number of records in the ISAM data set, and y is the length of a fixed record or the average length of variable records. Figure 77 on page 233 shows the format of an unloaded data set for the first three lOO-byte records of an ISAM data set. Each is preceded by 2 bytes ebb) that indicate the number of bytes in that record. (The last record is followed by 2 bytes containing binary zeros to identify the last logical record in the unloaded data set.) The characteristics of the ISAM data set are contained in the first two logical records of the unloaded data set. Data from the ISAM data set begins in the third logical record. Each logical record in the unloaded data set contains a binary sequence number (aa) in the first 2 bytes of the record. 232 MVS/370 Utilities 7. For variable records, all records in the data set must have a length equal to or greater than RKP plus KEYLEN • 1---------------80 .. a . a a a a a a blbl a a blbl a a a bytes----------------tl Characteristics Characteristics 76 bytes of data 24 bytes of data Iblbl 48 bytes of data 72 bytes of data 62 bytes of data 28 bytes of data Iblbl IbLbl Figure 77. An Unloaded Data Set Created Using IEBISAM CREATING AN ISAH DATA SET FROH AN UNLOADED DATA SET An ISAM data set can be created from an unloaded version of an ISAM data set. When the unloaded data set is loaded, those records that were contained in the overflow area assigned to the original ISAM data set are moved sequentiallY into the primary area of the loaded ISAM data set. PRINTING THE LOGICAL RECORDS OF AN ISAH DATA SET The records of an ISAM data set can be printed or stored as a sequential data set for subsequent printing. Each input record is placed in a buffer from which it is printed or placed in a sequential data set. When the DELETE parameter is specified in the OPTCD fjeld, each input record not marked for deletion is also placed in a buffer from which it is printed or placed in a sequential data set. Each printed record is converted to hexadecimal unless specified otherwise by the user. IEBISAM provides user exits so the user can include user-written routines to: • Modify records before printing. • Select records for printing or terminate the printing operation after a certain number of records have been printed. • Convert the format of a record to be printed. • Provide a record heading for each record if the record length is at least 18 bytes. If no user routines are provided, each record is identified in sequential order on the printout. Exit routines must be included in either the job library or ,the link library. When a user routine is supplied for a print operation, IEBISAM issues a LOAD macro instruction. A BALR 14,15 instruction is used to give control to the user's routine. When the user's routine receives control, register 0 contains a pointer to a record heading buffer; register 1 contains a pointer to an input record buffer. (The user must save registers 2 through 14 when control is given to the user routine.) IEBISAM Program 233 The input record buffer has a length equal to the length of the input logical record. Figure 79 shows the record heading buffer. The user returns control to IEBISAM by issuing a RETURN macro instruction (via register 14) or by using a BR 14 instruction after restoring registers 2 through 14. A user routine must place a return code in register 15 before returning control to IEBISAM. The possible return codes and their meanings are listed in Figure 78. Codes Meaning 00 (00 hex) Buffers are to be printed. continues. 04 (04) Buffers are to be printed. The operation is terminated. the operation is terminated. OS (OS) This input record is not to be printed. continues. Processing 12 (OC) This input record is not to be printed. operation is terminated. The The operation Figure 78. IEBISAM User Exit Return Codes Register 0 Available to the user ~ t-------Totallength = line length of applicable p r i n t e r - - - - -_ _ Register 1 tp",'~'d I------.-Totallength ... = input logical record length ( L R E C L ) - - - - - - Figure 79. Record Heading Buffer Used by IEBISAM INPUT AND OUTPUT IEBISAM uses an input data set (the organization of the input data set depends on the operation to be performed) as follows: 234 • If a data set is copied, unloaded, or printed in logical sequence, the input is an ISAM data set. • If a data set is loaded, the input is an unloaded version of an ISAM data set. MVS/370 Utilities IEBISAM produces as output: • An output data set, which is the result of the IEBISAM operation. • A message data set, which contains information messages and any error messages. RETURN CODES IEBISAM returns a code in register 15 to indicate the results of program execution. The return codes and their meanings are listed below. Codes Meaning 00 (00 hex) Successful completion. 04 (04) A return code of 04 or 12 was passed to IEBISAM by the user routine. 08 (08) An error condition occurred that caused termination of the operation. 12 (OC) A return code other than 00, 04, 08, or 12 was passed to IEBISAM from a user routine. The job step is terminated. 16 (10) An error condition caused termination of the operation. Figure 80. IEBISAM Return Codes CONTROL IEBISAM is controlled by job control statements only. utility control statements are required. No JOB CONTROL STATEMENTS Figure 81 shows the job control statements for IEBISAM. statement Use JOB Initiates the job. EXEC Specifies the program name (PGM=IEBISAM). Additional information is required on the EXEC statement to control the execution of IEBISAM; see "PARM Information on the EXEC statement" below. SYSUTI DD Defines the input data set. SYSUT2 DD Defines the output data set. SYSPRINT DD Defines a sequential message data set, which can be written to a system output device, a tape volume, or a direct access device. Figure 81. Job Control Statements for IEBISAM IEBISAM Program 235 If the block size of the SYSPRINT data set is not a multiple of 121, a default value of 121 is taken (no error message is issued, and no condition code is set). PARM Information on the EXEC statement The PARM parameter on the EXEC statement is used to control the execution of IEBISAM. The format of the PARM parameter is: EXEC PARM={COPYIUNLOADILOADIPRINTL[,Nl) [,EXIT=routinenamel Exit routines must be included in either the job library or the link library. For a COPY operation, the SYSUT2 DD statement must include a primary space allocation that is sufficient to accommodate records that were contained in overflow areas in the original ISAM data set. New overflow areas can be specified when the data set is copied. For an UNLOAD operation, specifications that are implied by default or included in the DCB parameter of the SYSUT2 DD statement (for example, tape density) must be considered when the data set is subsequently loaded. If a block size is specified in the DCB parameter of the SYSUT2 DD statement, it must be a multiple of 80 bytes. For a LOAD operation, if the input data set resides on an unlabeled tape, the SYSUT1 DD statement must specify a BLKSIZE that is a multiple of 80 bytes. Specifications that are implied by default or included in the DCB parameter of the SYSUTI DD statement must be consistent with specifications that were implied or included in the DCB parameter of the SYSUT2 DD statement used for the UNLOAD operation. The SYSUT2 DD statement must include a primary space allocation that is sufficient to accommodate records that were contained in overflow areas in the original ISAM data set. If new overflow areas are desired, they must be specified when the data set is loaded. For a PRINTL operation, if the device defined by the SYSUT2 DD statement is a printer, the specified ILKSIZE must be equal to or less than the physical printer size; that is 121, 133, or 145 bytes. If BLKSIZE is not specified, 121 bytes is assumed. lRECl (or BLKSIZE when no lRECL was specified) must be between 55 and 255 bytes. If a user routine is supplied for a PRINTL operation, IEBISAM issues a LOAD macro instruction to make the user routine available. A BALR 14,15 instruction is subsequently used to give control to the routine. When the user routine receives control, register 0 contains a pointer to a record heading buffer; register 1 contains a pointer to an input record buffer. 236 MVS/370 Utilities Parameters APplicable Control statements Description of Parameters PARM EXEC PARM={CopvIUNLOADILOADIPRINTL[,N1J [,EXIT=routTnename] The PARM values have the following meaning: • COPY specifies a copy operation. • UNLOAD specifies an unload operation. is the default. • LOAD specifies a load operation. • PRINTL specifies a print operation in which each record is converted to hexadecimal before printing. The N is an optional value that specifies that records are not to be converted to hexadecimal before printing. • EXIT is an optional value that specifies the name of the exit routine that is to receive control before each record is printed. This See "PARM Information on the EXEC Statement" on page 236 for values that must be coded with the PARM parameter. IEBISAM EXAMPLES The following examples illustrate some of the uses of IEBISAM. Figure 82 can be used as a quick-reference guide to IEBISAM examples. The numbers in the "Example" column point to the examples that follow. operation Data Set organization Device Comments Example COPY ISAM Disks Unblocked input; blocked output. Prime area and index separation. 1 UNLOAD ISAM, Sequential Disk and 9-track Tape Blocked output. 2 UNLOAD ISAM, Sequential Disk and 7-track Tape Blocked output. Data set written as second data set on input volume. 3 LOAD Sequential, ISAM 9-track Tape and Disk Input data set is second data set on tape volume. 4 PRINTL ISAM, Sequential Disk and System Printer Blocked input. converted. 5 Output not Figure 82. IEBISAM Example Directory Examples that use disk or tape in place of actual device numbers must be changed before use. See "DASD and Tape Device Support" on page 3 for valid device number notation. IEBISAM Program 237 In this example, an ISAM data set is copied from two DASD volumes. The output data is blocked. //CPY JOB EXEC //SYSPRINT DD //SYSUTI DD // // // // //SYSUT2 DD // // // // DD // // // /* 091770,SMITH PGM=IEBISAM,PARM=COPY SYSOUT=A DSNAME=ISAMOl,VOLUME=SER=(222222,333333), DISP=(OLD,DELETE),UNIT=Cdisk,2), DCB=CDSORG=IS,LRECL=500, BlKSIZE=500,RECFM=F,RKP=4) DSNAME=ISAM02(INDEX),UNIT=disk, DISP=(NEW,KEEP),VOLUME=SER=444444, DCB=(DSORG=IS,BlKSIZE=lOOO,RECFM=FB), SPACE=(CYl,(2» DSNAME=ISAM02(PRIME),UNIT=CdiSk,2), DCB=(DSORG=IS,BlKSIZE=1000,RECFM=FB), SPACE=(CYl,CIO», VOlUME=SER=(444444,555555),DISP=(NEW,KEEP) The job control statements are discussed below: • EXEC specifies the program name CIEBISAM) and the COPY operation. • SYSUTl DD defines an ISAM input data set, ISAMOl, which resides on two disk volumes. • SYSUT2 DD defines the output data set index area, ISAM02; the index and prime areas are separated. • The second SYSUT2 DD defines the output data set prime area. Ten cylinders are allocated for the prime area on each of the two disk volumes. In this example, an ISAM input data set is converted into a sequential data set; the output is placed on a 9-track tape volume. //STEPI JOB EXEC //SYSPRINT DD //SYSUTI DD // // //SYSUT2 // // DD 09#770,SMITH PGM=IEBISAM,PARM=UHlOAD SYSOUT=A DSNAME=INDSEQ,UNIT=disk,DISP=(OlD,KEEP), VOLUME=SER=111112 DSNAME=UNlDSET,UNIT=tape,LABEL=(,SL), DISP=C,KEEP),VOLUME=SER=001234, DCB=(RECFM=FB,lRECl=SO,BlKSIZE=640) /* The job control statements are discussed below: 238 • EXEC specifies the program name (IEBISAM) and the UNLOAD operation. • SYSUTI DD defines the ISAM input data set, INDSEQ, which resides on a disk volume. MVS/370 Utilities • SYSUT2 DD defines the unloaded output data set, UNlDSET. The data set consists of fixed blocked records, and is to reside as the first or only data set on a 9-track tape volume. IEBISAM EXAMPLE 3 In this example, ISAM input is converted into a sequential data set and placed on a 7-track, tape volume. //STEPA JOB EXEC //SYSPRINT DD //SYSUTI DD // // //SYSUT2 DD // // // 09#770,SMITH PGM=IEBISAM,PARM=UNlOAD SYSOUT=A DSNAME=INDSEQ,UNIT=disk,DISP=(OlD,KEEP), VOlUME=SER=111112 DSNAME=UNlDSET,UNIT=2400-2,lABEl=(2,Sl), VOlUME=SER=001234,DCB=(DEN=2, RECFM=FB,lRECL=80,BLKSIZE=1040,TRTCH=C), DISP=(,KEEP) /* The job control statements are discussed below: • EXEC specifies the program name (IEBISAM) and the UNLOAD operation. • SYSUTI DD defines the input data set, INDSEQ, which is an indexed sequential data set. The data set resides on a disk volume. • SYSUT2 DD defines the unloaded output data set, UNlDSET. The data set consists of fixed blocked records, and is to reside as the second data set on a 7-track tape. volume. The data set is written at a density of 800 bits per inch (DEN=2). IEBISAM EXAMPLE 4 In this example, an unloaded data set is converted to the form of the original ISAM data set. //STEPA JOB EXEC //SYSPRINT DD //SYSUTI DD // // //SYSUT2 // // DD 091770,SMITH PGM=IEBISAM,PARM=lOAD SYSOUT=A DSNAME=UNlDSET,UNIT=tape,LABEl=(2,SL), DISP=(OlD,KEEP),VOLUME=SER=001234 DSNAME=INDSEQ,DISP=(,KEEP),DCB=(DSORG=IS), SPACE=(CYl,(1»,VOlUME=SER=111112, UNIT=disk /* The job control statements are discussed below: • EXEC specifies the program name (IEBISAM) and the LOAD operation. • SYSUTI DD defines the input data set, UNLDSET, which is a sequential (unloaded) data set. The data set is the second data set on a tape volume. IEBISAM Program 239 • SYSUT2 DD defines the output data set, IHDSEQ which is an ISAM data set. One cylinder of space is allocated for the data set on a disk volume. IEBISAM EXAMPLE 5 In this example, the logical records of an ISAM data set are printed on a system output device. //PRIHT JOB EXEC //SYSPRIHT DD //SYSUTl DD // // //SYSUT2 DD 09#770,SMITH PGM=IEBISAM,PARM='PRIHTl,H' SYSOUT=A DSHAME=ISAM03,UHIT=disk,DISP=OLD, VOlUME=SER=222222 SYSOUT=A /* The job control statements are discussed below: 240 • EXEC specifies the program name (IEBISAM) and the PRINTl operation. The output records are not converted to hexadecimal prior to printing. (H is specified). • SYSUTI DD defines the input data set, ISAM03, which resides on a disk volume. • SYSUT2 DD defines the output data set (in this case, the system printer). A logical record length (lRECl) of 121 bytes is assumed. MVS/370 Utilities IEBPTPCH PROGRAM IEBPTPCH is a data set utility used to print or punch all, or selected portions, of a sequential or partitioned data set. Records can be printed or punched to meet either standard specifications or user specifications. The standard specifications are: • Each logical output record begins on a new printed line or punched card. • Each printed line consists of groups of 8 characters separated by 2 blanks. Each punched card contains up to 80 contiguous byte~ of information. • Characters that cannot be printed appear as blanks. • When the input is blocked, each logical output record is delimited by "*" and each block is delimited by "**." User formats can be specified, provided that no output record exceeds the capability of the output device. IEBPTPCH provides optional editing facilities and exits for user routines that can be used to process labels or manipulate input or output records. IEBPTPCH can be used to print or punch: • A sequential or partitioned data set in its entirety • Selected members from a partitioned data set • Selected records from a sequential or partitioned data set • The directory of a partitioned data set • An edited version of a sequential or partitioned data set PRINTING OR PUNCHING AN ENTIRE DATA SET IEBPTPCH can be used to print or punch a sequential data set or a partitioned data set in its entirety. Data to be printed or punched can be either hexadecimal or a character representation of valid alphameric bit configurations. For a print operation, packed decimal data should be converted to unpacked decimal or hexadecimal mode to ensure that all characters are printable. For a standard print operation, each logical record is printed in groups of eight characters. Each set of eight characters is separated from the next by two blanks. Up to 96 data characters can be included on a printed line. (An edited output can be produced to omit the blank delimiters and print up to 144 characters per line.) Data from a logical input record is punched in contiguous columns in the punched cardCs) representing that record. Sequence numbers can be created and placed in columns 73 through 80 of the punched cards. PRINTING OR PUNCHING SELECTED MEMBERS IEBPTPCH can be used to print or punch selected members of a partitioned data set. Utility control statements are used to specify members to be printed or punched. IEBPTPCH Program 241 PRINTING OR PUNCHING SELECTED RECORDS IEBPTPCH can be used to print or punch selected records from a sequential or partitioned data set. Utility control statements can be used to specify: • The termination of a print or punch operation after a specified number of records has been printed or punched. • The printing or punching of every nth record. • The starting of a print or punch operation after a specified number of records. PRINTING OR PUNCHING A PARTITIONED DIRECTORY IEBPTPCH can be used to print or punch the contents of a partitioned directory. Each directory block is printed in groups of eight characters. If the directory is printed in hexadecimal representation, the first four printed characters of each directory block indicate the total number of used bytes in that block. For details of the format of the ~irectory, see the Debugging Handbook. Data from a directory block is punched in contiguous columns in the punched cards representing that block. PRINTING OR PUNCHING AN EDITED DATA SET IEBPTPCH can be used to print or punch an edited version of a sequential or a partitioned data set. Utility control statements can be used to specify editing information that applies to a record, a group of records, selected groups of records, or an entire member or data set. An edited data set is produced by: • Rearranging or omitting defined data fields within a record • Converting data from packed decimal to unpacked decimal or from alphameric to hexadecimal representation INPUT AND OUTPUT IEBPTPCH uses the following input: • An input data set, which contains the data that is printed or punched. The input data set can be either sequential or partitioned. • A control data set, which contains utility control statements. The control data set is required for each use of IEBPTPCH. IEBPTPCH produces ~he following output: • An output data set, which is the printed or punched data set. • A message data set, which contains informational messages (for example, -the contents of the control statements) and any error messages. RETURN CODES IEBPTPCH returns a code in register 15 to indicate the results of program execution. The return codes and their meanings are listed below. 242 MVS/370 Utilities Codes Meaning 00 (00 hex) Successful completion. 04 (04) Either a physical sequential data set is empty or a partitioned data set has no members. 08 (08) A member specified for printing or punching does not exist in the input data set. Processing continues with the next member. 12 (OC) An unrecoverable error occurred or that a user routine passed a return code of 12 to IEBPTPCH. The job step is terminated. 16 (10) A user routine passed a return code of 16 to IEBPTPCH. The job step is terminated. Figure 83. IEBPTPCH Return Codes CONTROL IEBPTPCH is controlled by job control statements and utility control statements. The job control statements are required to execute or invoke the IEBPTPCH program and to define the data sets that are used and produced by the program. The utility control statements are used to control the functions of IEBPTPCH. JOB CONTROL STATEMENTS Figure 84 shows the job control statements for IEBPTPCH. statement Use JOB Initiates the job step. EXEC Specifies the program name (PGM=IEBPTPCH) or, if the job control statements reside in a procedure library, the procedure name. SYSPRINT DD Defines a sequential message data set. The data set can be written to a system output device, a tape volume, or a direct access device. SYSUT1 DD Defines a sequential or partitioned input data set. SYSUT2 DD Defines the output (print or punch) data set. SYSIN DD Defines the control data set. The control data set normally resides in the input stream; however, it can be defined as a member in a partitioned.data set. Figure 84. Job Control Statements for IEBPTPCH IEBPTPCH Program 243 SVSPRINT DD statement The SYSPRINT DD statement is required for each use of IEBPTPCH. The RECFM is always FBA, the lRECl is always 121. Output can be blocked by specifying a block size that is a multiple of 121 on the SYSPRINT DD statement. The default block size is 121. SVSUTI DD statement The SYSUT1 DD statement is required for each use of IEBPTPCH. The RECFM (except for undefined records), BlKSIZE, and lRECl (except for undefined and fixed unblocked records) must be present on the DD statement, in the DSCB, or on the tape label. The input data set can contain fixed, variable, undefined, or variable spanned records. Variable spanned records are permitted only when the input is sequential. A partitioned directory to be printed or punched must be defined as a sequential data set (TYPORG=PS). You must specify RECFM=U, BlKSIZE=256, and lRECl=256 on the SYSUT1 DD statement. SVSUT2 DD statement The SYSUT2 DD statement is required every time IEBPTPCH is used. The RECFM is always FBA or FBM. The lRECl parameter, or, if no logical record length is specified, the BlKSIZE parameter, specifies the number of characters to be written per printed line or per punched card (this count includes a control character). The number of characters specified must be in the range of 2 through 145. The default values for edited output lines are 121 characters per printed line and 81 characters per punched card. The SYSUT2 data set can be blocked by specifying both the lRECl and the BlKSIZE parameters, in which case, block size must be a multiple of logical record length. Both the output data set and the message data set can be written to the system output device if it is a printer. If the logical record length of the input records is such that the output would exceed the output record length, IEBPTPCH divides the record into multiple lines or cards in the case of standard printed output, standard punched output, or when the PREFORM parameter is specified. For nonstandard output, or if the PREFORM parameter is not specified, only part of the input record is printed or punched (maximums determined by the specific characteristics of your output device). SVSIN DD statement The SYSIN DD statement is required for each use of IEBPTPCH. The RECFM is always FB, the lRECl is always 80. Any blocking factor that is a multiple of 80 can be specified for the BlKSIZE. The default block size is 80. UTILITY CONTROL STATEMENTS IEBPTPCH is controlled by utility control statements. The control statements in figure 85 on page 245 are shown in the order in which they must appear. Control statements are included in the control data set, as required. Any number of MEMBER and RECORD statements can be included in a job step. 244 MVS/370 Utilities A nonblank character in column 72 is optional for IEBPTPCH continuation statements. Continuation requirements for utility control statements are described in "Continuing Utility Control Statements" on page 5. statement Use PRINT Specifies that the data is printed. PUNCH Specifies that the data is punched. TITLE Specifies that a title is to precede the printed or punched data. EXITS Specifies that user exit routines are provided. MEMBER Specifies that the input is a partitioned data set and that a selected member is printed or punched. RECORD Specifies whether editing is performed, that is, records are to be printed or punched to the user's specifications. LABELS Spe.cifies whether user labels are treated as data. Figure 85. IEBPTPCH Utility Control Statements PRINT statement The PRINT statement is used to initiate the IEBPTPCH PRINT operation. If used, PRINT must be the first statement in the control data set. The format of the PRINT statement is: [label] PRINT [PREFORM=AIM] [,TYPORG=pslpO] [,TOTCONV=XElpZ] [,CNTRL=nl!] [,STRTAFT=,n] [,STOPAFT=,n] [,SKIP=n] [,MAXNAME=,n] [,MAXFLDS=n] [,MAXGPS=,n] [,MAXLITS=n] [,INITPG=,n] [,MAXLINE=,n] IEBPTPCH Program 245 PUNCH statement The PUNCH statement is used to initiate the IEBPTPCH PUNCH operation. If used, PUNCH must be the first statement in the control data set. The format of the PUNCH statement is: [labell PUNCH [PREFORf1=AIf1l [,TYPORG=PSlpOl [,TOTCONY=XEIPZl [,CNTRL=nl!] [,STRTAFT=nl [,STOPAFT=nl [,SKIP=nl [,f1AXNAf1E=n] [,f1AXFLDS=nl [,f1AXGPS=n] [,f1AXLITS=n] [,CDSEQ=nl [,CDINCR=n l TITLE statement The TITLE statement is used to request title and subtitle records. Two TITLE statements can be included for each use of IEBPTPCH. A first TITLE statement defines the title, and a second defines the subtitle. The TITLE statement, if included, follows the PRINT or PUNCH statement in the control data set. The format of the TITLE statement is: TITLE ITEf1=('title'[,output-locationl) The literal coded for 'title' is not affected by the TOTCONV parameter. EXITS statement The EXITS statement is used to identify exit routines supplied by the user. Exits to label processing routines are ignored if the input data set is partitioned. Linkage to and from user routines are discussed in Appendix A, "Exit Routine Linkage" on page 438. The EXITS statement, if included, must immediately follow any TITLE statement or follow the PRINT or PUNCH statement. 246 MVS/370 Utilities The format of the EXITS statement is: [labell EXITS [INHDR=routinenamel [,INTLR=routinenamel [,INREC=routinenamel [,QUTREC=routinenamel MEMBER statement The MEMBER statement is used to identify members to be printed or punched. All RECORD statements that follow a MEMBER statement pertain to the member indicated in that MEMBER statement only. When RECORD and MEMBER statements are used, at least one MEMBER statement must precede the first RECORD statement. If no RECORD statement is used, the member is processed to standard specifications. If no MEMBER statement appears, and a partitioned data set is being processed, all members of the data set are printed or punched. Any number of MEMBER statements can be included in a job step. If a MEMBER statement is present in the input stream, MAXNAME must be specified in a PRINT or PUNCH statement. The format of the MEMBER statement is: MEMBER NAME=Cmembernamelaliasname) RECORD statement The RECORD statement is used to define a group of records, called a record group, that is printed or punched to the user's specifications. A record group consists of any number of records to be edited identically. If no RECORD statements appear, the entire data set, or named member, is printed or punched to standard specifications. If a RECORD statement is used, all data following the record group it defines (within a partitioned member or within an entire sequential data set) must be defined with other RECORD statements. Any number of RECORD statements can be included in a job step. A RECORD statement referring to a partitioned data set for which no members have been named need contain only FIELD parameters. These are applied to the records in all members of the data set. If a FIELD parameter is included in the RECORD statement, MAXFLDS must be specified in the PRINT or PUNCH statement. If an IDENT parameter is included in the RECORD statement, MAXGPS and MAXLITS must be specified in the PRINT or PUNCH statement. IEBPTPCH Program 247 The format of the RECORD statement is: [label] RECORD [IDENT=(length,'~',input-location}] [,FIELD=(length [,input-location] [,conversion] [,output-location])] LABELS statement The LABELS statement specifies whether user labels are treated as data. For a detailed discussion of this option, refer to Appendix C, "Processing User Labels" on page 446. LABELS DATA=NO must be specified to make standard user label (SUL) exits inactive when an input data set with nonstandard labels (NSL) is processed. If more than one valid LABELS statement is included, all but the last LABELS statement are ignored. The format of the LABELS statement is: [label] LABELS [CONv=pzIXE] [,DATA=VESINOIALLIONLV] 248 MVS/370 Utilities Parameters Applicable Control statements Description of Parameters CDINCR PUNCH CDINCR=n specifies the increment to be used in generating sequence numbers. Default: 10 is the increment value. CDSEQ PUNCH CDSEQ=n specifies the initial sequence number of a deck of punched cards. This value must be contained in columns 73 through 80. Sequence numbering is initialized for each member of a partitioned data set. If the value of n is zero, 00000000 is the starting sequence number. Default: Cards are not numbered. CNTRL PRINT PUNCH CONV LABELS CNTRL=nll spe~ifies a control character for the output device that indicates line spacing, as follows: 1 indicates single spacing (the default), 2 indicates double spacing, and 3 indicates triple spacing. specifies a control character for the output device that is used to select the stacker, as follows: 1 indicates the first stacker (the default), 2 indicates the second stacker, and 3 indicates the third stacker, if any. CONv=pzlxE specifies a 2-byte type of conversion field before it is values that can be PZ XE code that indicates the to be performed on this printed or punched. The coded are: specifies that data (packed decimal) is converted to unpacked decimal data. The converted portion of the input record (length L) occupies 2L - 1 output characters when punching, and 2L output characters when printing. specifies that data (alphameric) is converted to hexadecimal data. The converted portion of the input record (length L) occupies 2L output characters. Default: The field is moved to the output area without change. IEBPTPCH Program 249 Parameters APplicable Control statements Description 01 Parameters DATA LABELS DATA=YESINOIALLIONLY specifies whether user labels are treated as data. The values that can be coded are: YES NO specifies that any user labels that are not rejected by a user's label processing routine are treated as data. Processipg of labels as data stops in compliance with standard return codes. YES is t~e default. f specifies that user labels are not to be treated as data. NO must be specified when processing input/output data sets with nonstandard labels (NSL) in order to make standard user label (SUL) exits inactive. ALL ONLY 250 MVS/370 Utilities specifies that all user labels are treated as data. A return code of 16 causes the utility to complete the processing of the remainder of the group of user labels and to terminate the job step. specifies that only user header labels are treated as data. User header labels are processed as data regardless of any return code. The job terminates upon return from the OPEN routine. Parameters Applicable control statements FIELD RECORD Description of Parameters FIELD:(length,[input-location],[conversion], [output-locationl)[,FIELD: •••• ] specifies field-processing and editing information. Note that the variables on the FIELD parameter are positional; that is, if any of the options are not coded, the associated comma preceding that variable must be coded. These values can be coded: length specifies the length (in bytes) of the input field to be processed. The length must be equal to or less than the initial input LRECL. input-location specifies the starting byte of the input field to be processed. The sum of the length and the input location must be equal to or less than the input LRECL plus one. Default: Byte 1 is assumed. conversion specifies a 2-byte code that indicates the type of conversion to be performed on this field before it is printed or punched. The values that can be coded are: PZ XE specifies that data (packed decimal) is converted to unpacked decimal data. The converted portion of the input record (length L) occupies 2L - 1 output characters when punching, and 2L output characters when printing. specifies that data (alphameric) is converted to hexadecimal data. The converted portion of the input record (length L) occupies 2L output characters. Default: The field is moved to the output area without change. IEBPTPCH Program 251 Parameters FIELD (continued) Applicable Control statements RECORD Description of Parameters output-location specifies the starting location of this field in the output records. Unspecified fields in the output records appear as blanks in the printed or punched output. Data that exceeds the SYSUT2 printer or punch size is not printed or punched. The specified fields may not exceed the logical output record length minus one. When specifying one or more FIELDs, the sum of all lengths and all extra characters needed for conversions must be equal to or less than the output LRECL minus one. Default: Byte 1 is assumed. If a FIELD parameter is included in the RECORD statement, MAXFLDS must be specified in the PRINT or PUNCH statement. IDENT RECORD IDENT=(length,'name',input-location) identifies the last record of the record group to which the FIELD parameters apply. The values that can be coded are: length specifies the length (in bytes) of the field that contains the identifying name in the input records. The length cannot exceed 8 bytes. 'name' ----specifies the exact literal, enclosed in apostrophes, that identifies the last record of a record group. If the literal contains apostrophes, each must be written as two consecutive apostrophes. input-location specifies the starting location of the field that contains the identifying name in the input records. The sum of the length and the input location must be equal to or less than the input LRECL plus one. Default: If IDENT is omitted and STOPAFT is not included with the PRINT or PUNCH statement, record processing halts after the last record in the data set. If IDENT is omitted and STOPAFT is included with the PRINT or PUNCH statement, record processing halts when the STOPAFT count is satisfied or after the last record of the data set is processed, whichever occurs first. If an IDENT parameter is included in the RECORD statement, MAXGPS and MAXLITS must be specified in the PRINT or PUNCH statement. 252 MVS/370 Utilities Parameters Applicable Control statements INHDR EXITS INHDR=routinename specifies the name of the routine that processes user input header labels. INITPG PRINT INITPG=n specifies the initial page number; the pages are numbered sequentially thereafter. The INITPG parameter must not exceed a value of Description of Parameters 9999. Default: Page 1 INREC EXITS INREC=routinename specifies the name of the routine that manipulates each logical record (or physical block in the case of VS or vas records longer than 32K bytes) before it is processed. INTLR EXITS INTLR=routinename specifies the name of the routine that processes user input trailer labels. ITEM TITLE ITEH=('title'[,output-locationl)[,ITEM ••• l specifies title or subtitle information. The values that can be coded are: 'title' -----specifies the title or subtitle literal (maximum length of 40 bytes), enclosed in apostrophes. If the literal contains apostrophes, each apostrophe must be written as two consecutive apostrophes. output-location specifies the starting position at which the literal for this item is placed in the output record. When used with output-location, the specified title's length plus output-location may not exceed the output logical record length minus one. Default: Byte 1 is assumed. MAXFlDS PRINT PUNCH HAXFLDS=n spe~ifies a number no less than the total number of FIELD parameters appearing in subsequent RECORD statements. The value must not exceed 32767. If MAXFLDS is omitted when there is a FIELD parameter present, the print or punch request is terminated. IEBPTPCH Program 253 Parameters MAXGPS Applicable Control statements PRINT PUNCH Description of Parameters HAXGPS=n specifies a number no less than the total number of IDENT parameters appearing in subsequent RECORD statements. The value must not exceed 32767. If MAXGPS is omitted when there is an IDENT parameter present, the print or punch request is terminated. MAXLINE PRINT HAXLINE=n specifies the maximum number of lines'to a printed page. Spaces, titles, and subtitles are included in this number. Default: 60 lines per page. MAXLITS PRINT PUNCH MAXLITS=n specifies a number no less than the total number of characters contained in the IDENT literals of subsequent RECORD statements. The value must not exceed 32767. If MAXLITS is omitted when there is a literal present, the print or punch request is terminated. MAXNAME PRINT PUNCH MAXNAME=n specifies a number no less than the total number of member names and aliases appearing in subsequent MEMBER statements. The value must not exceed 32767. If MAXNAME is omitted when there is a MEMBER statement present, the print or punch request is terminated. NAME MEMBER NAHE=[membernamelaliasnameJ specifies a member to be printed or punched. The values that can be coded are: membername specifies a member by its member name. aliasname specifies a member by its alias name. If a MEMBER statement is present in the input stream, MAXNAME must be specified in a PRINT or PUNCH statement. OUTREC 254 EXITS MVS/370 utilities QUTREC=routinename specifies the name of the routine that manipulates each logical record (or physical block in the case of VS or VBS records longer than 32K bytes) before it. is printed or punched. Parameters PREFORM Applicable Control statements Description of Parameters PREFORM=AIM PRINT PUNCH , specifies that a control character is provided as the first character of each record to be printed or punched. The control characters are used to control the spacing, number of lines per page, page ejection, and selecting a stacker. That ls, the output has been previously formatted, and the "standard specifications" are superseded. If an error occurs, the print/punch operation is terminated. If PREFORM is coded, any additional PRINT or PUNCH operands and all other control statements, except for syntax checking, LABELS statements and TYPORG operands, are ignored. PREFORM must not be used for printing or punching data sets with VS or VBS records longer than 32K bytes. These values are coded as follows: A " SKIP PRINT PUNCH specifies that an ASA control character is provided as the first character of each record to be printed or punched. If the input record length exceeds the output record length, the utility uses the ASA character for printing the first line, with a single space character on all subsequent lines of the record (for PRINT), or duplicates the ASA character on each output card of the record (for PUNCH). specifies that a machine-code control character is provided as the first character of each record to be printed or punched. If the input record length exceeds the output record length, the utility prints all lines of the record with a print-skip-one-line character until the last line of the record, which will contain the actual character provided as input (for PRINT), or duplicates the machine control character on each output card of the record (for PUNCH). SKIP=n specifies that every nth record (or physical block in the case of VS or VBS records longer than 32K bytes) is printed or punched. Default: Successive logical records are printed or punched. IEBPTPCH Program 255 Parameters STOPAFT STRTAFT 256 APplicable Control statements Description of Parameters PRINT PUNCH STOPAFT=n PRINT PUNCH STRTAFT=n MVS/370 Utilities specifies, for sequential data sets, the number of logical records (or physical blocks in the case of VS or VBS records longer than 32K bytes) to be printed or punched. For partitioned data sets, this specifies the number of logical records (or physical blocks in the case of VS or VBS records longer than 32K bytes) to be printed or punched in each member to be processed. The n value must not exceed 32767. If STopiFT is specified and the IDENT parameter of the RECORD statement is also specified, the operation is terminated when the STOPAfT count is satisfied or at the end of the first record group, whichever occurs first. specifies, for sequential data sets, the number of logical records (physical blocks in the case of variable spanned (VS) or variable block spanned (VBS) type records longer than 32K bytes) to be skipped before printing or punching begins. For partitioned data sets, STRTAFT=n specifies the number of logical records to be skipped in each member before printing or punching begins. The n value must not exceed 32767. If STRTAFT is specified and RECORD statements are present, the first RECORD statement of a member describes the format of the first logical record to be printed or punched. Parameters TOTCONV Applicable Control statements PRINT PUNCH Description of Parameters TOTCONV=XElpz specifies the representation of data to be printed or punched. TOTCONV can be overridden by any user specifications (RECORD statements) that pertain to the same data. These values are coded as follows: XE specifies that data is punched in 2-character-per-byte hexadecimal representation (for example, C3 40 F4 F6). If XE is not specified, data is punched in l-character per byte alphameric representation. The above example would appear as C 46. The converted portion of the input record (length L) occupies 2L output characters. pz specifies that data (packed decimal mode) is converted to unpacked decimal mode. IEBPTPCH does not check for packed decimal mode. The converted portion of the input record (length L) occupies 2L-l output characters when punching, and 2L output characters Default: If TOTCONV is omitted, data is not converted. TYPORG PRINT PUNCH TYPORG=pslpo specifies the organization of the input data set. These values are coded as follows: PS PO specifies that the input data set is organized sequentially. This is the default. specifies that the input data set is partitioned. IEBPTPCH Program 257 IEBPTPCH EXAMPLES The following examples illustrate some of the uses of IEBPTPCH. Figure 86 can be used as a quick-reference guide to IEBPTPCH examples. The numbers in the "Example" column refer to the examples that follow: Operation Data set organization Devices Comments Example PRINT Sequential 9-track Tape and System Printer Standard format. Conversion to hexadecimal. 1 PUNCH Sequential 7-track Tape and Card Reader Standard format. Conversion to hexadecimal. 2 PRINT Partitioned Disk and System Printer Standard format. Conversion to hexadecimal. Ten records from each member are printed. 3 PRINT Partitioned Disk and System Printer Standard format. Conversion to hexadecimal. Two members are printed. 4 PRINT Sequential 9-track Tape and System Printer User-specified format. Input data set is the second data set on the volume. 5 PUNCH Sequential Disk and Card Reader Punch User-specified format. Sequence numbers are assigned and punched. 6 PRINT Sequential, Partitioned Disk and System Printer Standard format. Conversion to hexadec i rna I. 7 PUNCH Sequential Card Reader and Card Read Punch Standard format. Control data set is a member in a cataloged partitioned data set. 8 PRINT Sequential Disk and System Printer User-specified format. User routines are provided. Processing ends after the third record group is printed or STOPAFT is satisfied. 9 PRINT Sequential 9-track Tape and System Printer SYSOUT format. SYSOUT data set is on tape volume. 10 Figure 86. IEBPTPCH Example Directory Examples that use disk or tape in place of actual device numbers must be changed before use. See "DASD and Tape Device Support" on page 3 for valid device number notation. IEBPTPCH EXAMPLE I In this example, a sequential data set is printed according to standard specifications. The printed output is converted to hexadecimal. 258 MVS/370 Utilities //PRINT JOB EXEC //SYSPRINT DO //SYSUTl DO // // 09#660,SMITH PGM=IEBPTPCH SYSOUT=A UNIT=tape,lABEl=(,Nl),VOlUME=SER=001234, OISP=(OlD,KEEP),OCB=(RECFM=U,BlKSIZE=2000) SYSOUT=A //SYSUT2 DO .//SYSIN DO * PRINT TOTCONV=XE TITLE ITEM=('PRINT SEQ DATA SET WITH CONV TO HEX',lO) The control statements are discussed below. • SYSUTl DO defines the input data set on a tape volume. The data set contains undefined records; no record is larger than 2,000 bytes. • SYSUT2 DO defines the output data set. The data set is written to the system output device (printer ass~med). Each printed line contains groups (a characters each) of hexadecimal" information. Each input record begins a new line of printed output. The size of the input record and the carriage width determine how many lines of printed output are required per input record. • SYSIN DD defines the control data set, which follows in the input stream. The control data set contains the PRINT and TITLE statements. • PRINT initiates the print operation and specifies conversion from alphameric to hexadecimal representation. • TITLE specifies a title to be placed beginning in column 10 of the printed output. The title is not converted to hexadecimal. IEBPTPCH EXAMPLE 2 In this example, a sequential data set is punched according to standard specifications. The punched output is converted to hexadecimal. //PUNCHSET JOB // EXEC //SYSPRINT DO //SYSUTI DO // // 09#660,SMITH PGM=IEBPTPCH SYSOUT=A DSNAME=INSET,UNIT=tape,VOlUME=SER=001234, lABEl=(,Nl),DISP=(OlO,KEEP),OCB=(RECFM=FB, lRECl=aO,BlKSIZE=2000) SYSOUT=B DD //SYSUT2 //SYSIN DO * PUNCH TOTCONV=XE TITLE ITEM=('PUNCH SEQ DATA SET WITH CONV TO HEX',10) The control statements are discussed below: • SYSUTI DO defines the input data set, called INSET, on a tape volume. The data set contains aO-byte, fixed blocked records. • SYSUT2 DO defines the system output class (punch is assumed). Each record from the input data set is represented by two punched cards. IEBPTPCH Program 259 • SYSIN DD defines the control data set, which follows in the input stream. The control data set contains the PUNCH and TITLE statements. • PUNCH initiates the punch operation and specifies conversion from alphameric to hexadecimal representation. • TITLE specifies a title to be placed beginning in column 10. The title is not converted to hexadecimal. IEBPTPCH EXAMPLE 3 In this example, a partitioned data set (ten records from each member) is printed according to standard specifications. The printed output is converted to hexadecimal. //PRINTPDS JOB // EXEC //SYSPRINT DO //SYSUT1 DO // //SYSUT2 //SYSIN DD DO PRINT TITLE 09#660,SMITH PGM=IEBPTPCH SYSOUT=A DSNAME=PDS,UNIT=disk,DISP=(OLD,KEEP), VOLUME=SER=111112 SYSOUT=A *TOTCONV=XE,TYPORG=PO,STOPAFT=10 ITEM=('PRINT PDS - 10 RECS EACH MEM',20) The control statements are discussed below: • SYSUT1 DD defines the input data set, called PDS, on a disk volume. • SYSUT2 DO defines the output data set on the system output device (printer assumed). Each printed line contains groups (8 characters each) of hexadecimal information. Each input record begins a new line of printed output. The size of the input record and the carriage width determine how many lines of printed output are required per input record. • SYSIN DO defines the control data set, which follows in the input stream. The control data set contains the PRINT and TITLE statements. • PRINT initiates the print operation, specifies conversion from alphameric to hexadecimal representation, indicates that the input data set is partitioned, and specifies that 10 records from each member are to be printed. • TITLE specifies a title to be placed beginning in column 20 of the printed output. The title is not converted to hexadecimal. IEBPTPCH EXAMPLE 4 In this example, two partitioned members are printed according to standard specifications. The printed output is converted to hexadecimal. 260 MVS/370 Utilities //PRNTMEMS JOB EXEC //SYSPRINT DD //SYSUTl DD // // //SYSUT2 //SYSIN DD DD PRINT TITLE MEMBER MEMBER 09#660,SMITH PGM=IEBPTPCH SYSOUT=A DSNAME=PDS,DISP=(OLD,KEEP),VOLUME=SER=111112, UNIT=disk SYSOUT=A *TYPORG=PO,TOTCONV=XE,MAXNAME=2 ITEM=('PRINT TWO MEMBS WITH CON V TO HEX',lO) NAME=MEMBERl NAME=MEMBER2 The control statements are discussed below: • SYSUTl DD defines the input data set, called PDS, on a disk volume. • SYSUT2 DD defines the output data set on the system output device (printer assumed). Each printed line contains groups (8 characters each) of hexadecimal information. Each input record begins ~ ~ew Ifne of printed ~utput. The size of the input record and the carriage width determine how many lines of printed output are required per input record. • SYSIN DD defines the control data set, which follows in the input stream. The control data set contains PRINT, TITLE, and MEMBER statements. • PRINT initiates the print operation, indicates that the input data set is partitioned, specifies conversion from alphameric to hexadecimal representation, and indicates that two MEMBER statements appear in the control data set (MAXNAME=2). • TITLE specifies a title to be placed beginning in column 10 of the printed output. The title is not converted to hexadecimal. • MEMBER specifies the member names of the members to be printed (MEMBER1 and MEMBER2). IEBPTPCH EXAMPLE 5 In this example, a sequential data set is printed according to user specifications. //PTNONSTD JOB // EXEC //SYSPRINT DD //SYSUT1 DD // //SYSUT2 //SYSIN DD DD PRINT EXITS RECORD LABELS 09tt660,SMITH PGM=IEBPTPCH SYSOUT=A DSNAME=SEQSET,UNIT=tape,lABEL=(2,SUl), DISP=(OLD,KEEP),VOlUME=SER=001234 SYSOUT=A * MAXFLDS=l INHDR=HDRIN,INTLR=TRLIN FIELD=(80) DATA=YES IEBPTPCH Program 261 The control statements are discussed below: • SYSUTI DD defines the input data set, called SEQSET, which is the second data set on a tape volume. • SYSUT2 DD defines the output data set on the system output device (printer assumed). Each printed line contains 80 contiguous characters (one record) of information. • SYSIN DD defines the control data set, which follows in the input stream. The control data set contains the PRINT, EXITS, RECORD, and LABELS statements. • PRINT initiates the print operation and indicates that one FIELD parameter is included in a subsequent RECORD statement (MAXFLDS=l). • EXITS indicates that exits will be taken to user header label and trailer label processing routines when these labels are encountered on the SYSUTI data set. • RECORD indicates that each input record is processed in its entirety (80 bytes). Each input record is printed in columns 1 through 80 on the printer. • LABELS specifies that user header and trailer labels are printed according to the return code issued by the user exits. IEBPTPCH EXAMPLE 6 In this example, a sequential data set is punched according to user specifications. //PHSEQNO JOB EXEC //SYSPRINT DD //SYSUTl DD // // // //SYSUT2 //SYSIN DD DD PUNCH RECORD LABELS 09#660,SMITH PGM=IEBPTPCH SYSOUT=A DSNAME=SEQSET,UNIT=disk,LABEl=(,SUl), VOLUME=SER=111112,DISP=(OLD,KEEP), DCB=(RECFM=FB,LRECL=80,BlKSIZE=2000) SYSOUT=B * MAXFlDS=1,CDSEQ=00000000,CDINCR=20 FIELD=(72) DATA=YES The control statements are discussed below: 262 • SYSUTl DD defines the input data set, called SEQSET, which resides on a disk volume. The data set contains 80-byte, fixed blocked records. • SYSUT2 DD defines the system output class (punch is assumed). That portion of each record from the input data set defined by the FIELD parameter is represented by one punched card. • SYSIN DD defines the control data set, which follows in the input stream. The control data set contains the PUNCH, RECORD, and LABELS statements. • PUNCH initiates the punch operation, indicates that one FIELD parameter is included in a subsequent RECORD statement (MAXFLDS=l), and assigns a sequence number for the first punched card (00000000) and an increment value for successive sequence numbers (20). Sequence numbers are placed in columns 73 through 80 of the output records. MVS/370 Utilities • RECORD indicates that bytes 1 through 72 of the input records are to be punched. Bytes 73 through 80 of the input records are replaced by the new sequence numbers in the output card deck. • LABELS specifies that user header labels and user trailer labels are punched. Labels cannot be edited; they are always moved to the first 80 bytes of the output buffer. No sequence numbers are present on the cards containing user header and user trailer records. IEBPTPCH EXAMPLE 7 In this example, the directory of a partitioned data set i5 printed. The printed output is converted to hexadecimal. //PRINTDIR JOB // EXEC //SYSPRINT DD //SYSUTl DD // //SYSUT2 //SYSIN PRINT TITLE TITLE LABELS 091660,SMITH PGM=IEBPTPCH SYSOUT=A DSNAME=PDS,UNIT=disk,YOLUME=SER=111112, DISP=(OLD,KEEP),DCB=(RECFM=U,BLKSIZE=256) SYSOUT=A DD DD TYPORG=PS,TOTCONY=XE ITEM=('PRINT PARTITIONED DIRECTORY OF PDS',lO) ITEM=('FIRST TWO BYTES SHOW NUM OF USED BYTES',lO) DATA=NO * /* The control statements are discussed below: • SYSUTI DD defines the input data set (the partitioned directory), which resides on a disk volume. • SYSUT2 DD defines the output data set on the system output device (printer assumed). Each printed line contains groups (8 characters each) of hexadecimal information. Each input record begins a new line of printed output. The size of the input record and the carriage width determine how many lines of printed output are required per input record. • SYSIN DD defines the control data set, which follows in the input stream. The data set contains the PRINT, TITLE, and LABELS statements. • PRINT initiates the print operation, indicates that the partitioned directory is organized sequentially, and specifies conversion from alphameric to hexadecimal representation. • The first TITLE statement specifies a title, which is not converted to hexadecimal. • The second TITLE statement specifies a subtitle, which is also not converted to hexadecimal. • lABELS specifies that no user labels are printed. Note: Not all of the bytes in a directory block need contain data pertaining to the partitioned data set; unused bytes are sometimes used by the operating system as temporary work areas. With conversion to hexadecimal representation, the first four characters of printed output indicate how many bytes of the 256-byte block pertain to the partitioned data set. Any unused bytes occur in the latter portion of the directory block; they are not interspersed with the used bytes. IEBPTPCH Program 263 IEBPTPCH EXAMPLE 8 In this example, a card deck containing valid punch card code or BCD is duplicated. //PUNCH JOB EXEC //SYSPRINT DD //SYSIN DD //SYSUT2 DD //SYSUTl DD // 091660,SMITH PGM=IEBPTPCH SYSOUT=A DSNAME=PDSLIB(PNCHSTMT),DISP=(OLD,KEEP) SYSOUT=B DATA (input card data set including // cards) /* The control statements are discussed below: • SYSIN DO defines the control data set. The control data set contains a PUNCH statement and is defined as a member of the partitioned data set PDSLIB. (The data set is cataloged.> The RECFM must be FB and the LRECl must be 80. • SYSUT2 DD defines the system output class (punch is assumed) . • SYSUTl OD defines the input card data set, which follows in the input stream. IEBPTPCH EXAMPLE 9 In this example, three record groups are printed. A user routine is provided to manipulate output records before they are printed. //PRINT // //SYSPRINT //SYSUTl JOB EXEC DO DD // //SYSUT2 DD //SYSIN DD PRINT TITLE EXITS RECORD RECORD RECORD LABELS 72 091660,SMITH PGM=IEBPTPCH SYSOUT=A DSNAME=SEQDS,UNIT=disk,DISP=(OLD,KEEP), LABEL=(,SUL),VOLUME=SER=111112 SYSOUT=A * MAXFlDS=9,MAXGPS=9,MAXLITS=23,STOPAFT=32767 ITEM=('TIMECONV-DEPT D06'), ITEM=('JANIO-17',80) OUTREC=NEWTIME,INHDR=HDRS,INTLR=TLRS IDENT=(6,'498414',1), FIELD=(8,1"lO),FIELD=(30,9,XE,20) IDENT=(2,'**',39), FIELD=(8,1,,10),FIELD=(30,9,XE,20) IDENT=(6,'498414',1), FIELD=(8,1,,10),FIELD=(30,9,XE,20) CONV=XE,DATA=ALL The control statements are discussed below: 264 • SYSUTl DD defines the input data set, called SEQDS. data set resides on a disk volume. • SYSUT2 DO defines the output data set on the system output device (printer assumed). MVS/370 Utilities The C C C C ·SYSIN DD defines the control data set, which follows in the input stream. The centrol data set contains the PRINT, TITLE, EXITS, RECORD, and LABELS statements. • The PRINT statement: 1. Initializes the print operation. 2. Indicates that not more than nine FIELD parameters are included in subsequent RECORD statements (MAXFLDS=9). 3. Indicates that not more than nine IDENT parameters are included in subsequent RECORD statements (MAXGPS=9). 4. Indicates that not more than 23 literal characters are included in subsequent IDENT parameters (MAXLITS=23). 5. Indicates that processing is terminated after 32767 re~ords are processed or after the third record group is processed, whichever comes first. Because MAXLINE is omitted, 60 lines are printed on each page. • TITLE specifies two titles, to be printed on one line. titles are not converted to hexadecimal. The • EXITS specifies the name of a user routine (HEWTIME), which is used to manipulate output records before they are printed. • The first RECORD statement defines the first record group to be processed and indicates where information from the input records is placed in the output records. Bytes 1 through 8 of the input records appear in columns 10 through 17 of the printed output, and bytes 9 through 38 are printed in hexadecimal representation and placed in columns 20 through 79. • The second RECORD statement defines the second group to be processed. The parameter in the IDENT operand specifies that an input record containing the two characters in positions 39 and 40 is the last record edited according to the FIELD operand in this RECORD statement. The FIELD operand specifies that bytes 1 through 8 of the input records are placed in columns 10 through 17 of the printed output, and bytes 9 through 38 are printed in hexadecimal representation and appear in columns 20 through 79. ** • The third and last RECORD statement is equal to the first RECORD statement. An input record that meets the parameter in the IDENT operand ends processing, unless the STOPAFT parameter in the PRINT statement has not already done so. • LABELS specifies that all user header or trailer labels are to be printed regardless of any return code, except 16, issued by the user's exit routine. It also indicates that the labels are converted from alphameric to hexadecimal representation (CONV=XE). IEBPTPCH Program 265 IEBPTPCH EXAMPLE 10 In this example, the input is a SYSOUT (sequential) data set, which was previously written as the second data set of a standard label tape. It is printed in SYSOUT format. JOB EXEC //SYSPRINT DD //SYSUTl DD //PT~YSOUT // // //SYSUT2 //SYSIN PRINT 09#660,SMITH PGM=IEBPTPCH SYSOUT=A UNIT=tape,LABEL=(2,SL),DSNAME=LISTING, DISP=(OLD,KEEP),VOL=SER=001234 SYSOUT=A DD DD * PREFORM=A The control statements are discussed below: 266 • SYSUTl DD defines the input data set, which was previously written as the second data set of a standard label tape. The data set has been assigned the name LISTING. • SYSUT2 DD defines the output data set on the system output device (printer assumed). • SYSIN DD defines the control data set, which follows in the input stream. The control data set contains the PRINT statement. • The PRINT statement initiates the print operation and indicates that an ASA control character is provided as the first character of each record to be printed (PREFORM=A). MVS/370 Utilities IEBTCRIN PROGRAM IEBTCRIN is a data set utility used to read input from the IBM 2495 Tape Cartridge Reader (TCR), edit the data as specified by the user, and produce a sequentially organized output data set. IEBTCRIN can be used to construct records from the stream of data bytes read sequentially from the Tape Cartridge Reader. The user has the option of gaining temporary control (via a user-supplied exit routine) to process each logical record. The input to IEBTCRIH is in the form of cartridges written by either the IBM Magnetic Tape Selectric Typewriter (MTST) or the IBM 50 Magnetic Data Inscriber (MTDI). An input data set (one or more cartridges) must consist of either all MTST cartridges or all MTDI cartri.dges. (For more information concerning the MTDI use and an explanation of terminology used in this chapter, refer to IBM 50 Magnetic Data Inscriber Component Description.) MTDI input is edited, IEBTCRIN maintains information about each record as it is being edited. This information is summarized in "Error Description Word (EDW)" on page 274. When the EDW contains a value other than zero in either the level status (byte 0) or the type status (byte 1), the record is considered an error record by the program and the EDW is added to the start of the record to aid the user in analyzing the error. Wh~n "TDI EDITING CRITERIA The cartridges created on the IBM 50 Magnetic Data Inscriber contain a continuous stream of data bytes (that is, there are no interblock gaps). Therefore, when editing is specified, IEBTCRIN extracts records one at a time from the data stream. To accomplish this, IEBTCRIN scans for control codes written by MTDI. IEBTCRIN uses start-of-record (SOR) and end-of-record (EOR) locations to extract MTDI records from the input stream. The (SOR) location is defined as: • The location of the first character on a cartridge. • The location of the first character after the previous record's (EOR) location. • The location of an SOR code. • The location of a group separator (GS) code. The character in the SOR location is checked to determine if it is a valid start-of-record character. A P1 through PS, a cancel code, or a GS code are valid start-of-record characters; all others are invalid. The EOR location by priority sequence is: 1. The same location as the SOR location, if the SOR character was a valid GS code. 2. The location of the first encountered record mark (RM) or verify okay (VOK) code if that location is within the length of the maximum user-specified record size. 3. The location of any code preceding either a valid SOR code or the end-of-media (EOM) code, if that location is within the length of the maximum user-specified record size. IEBTCRIN Program 267 4. The location determined in 2 or 3, regardless of the maximum user-specified record size if the SOR location contains a cancel code. 5. If one of the previous EOR locations cannot be defined, an EOR condition will be forced at the location where the record length equals the maximum user-specified record size. The character in the EOR location is checked to determine if it is a valid end-of-record character. Valid EOR characters are the GS character (if the SOR character was a GS code) and VOK or RM codes; all others are invalid. Each GS code is considered a valid SOR code or EOR code and will be bypassed. "TDI Editing Restrictions Following are the restrictions that apply when editing MTDI records: • All canceled records are bypassed; they are not passed to any exit routines or written on any data sets. The level status is set to O. • All input records less than three bytes in length (SOR location, one data byte, and EOR location) are treated as c~nceled records. The remaining portion of a record th~t was longer than the user-specified maximum record size can result in an input record of this size. • Data duplication is accomplished by replacing the DUP (duplication) code with the character from the corresponding location of the previous record. • The record used for data duplication is the record returned from any user exits. • GS codes will not affect the level status or duplication of following records. • Data duplication does not occur for any of the following conditions: 1. The DUP code is encountered in the first record of a cartridge. 2. The DUP code is encountered in a record immediately following a canceled record. A canceled record is one that contains a cancel code in the SOR location or an input record of less than three bytes as described above. 3. The DUP code is encountered in a position that would cause duplication of a position beyond the last data byte of the previous record. 4. The DUP code is encountered in a position that would cause duplication of an error-replace character. In each case, the DUP code is replaced with the user specified error-replace character, and a field error is indicated. • 268 MVS/370 Utilities left-zero code (ll) character following justification does not occur; the left-zero fill is replaced with the user-specified error-replace and a field error is indicated for either of the conditions: 1. The left-zero fill code (ll) is encountered without first having encountered its corresponding left-zero start code (llS). 2. The user-specified maximum record size is exceeded before encountering the valid end of a left-zero field. If MTDI is QditQd, an EDW which is four bytQS long is apPQndQd to thQ front of each error record describing the error condition. For furthQr definition of the EOW, seQ "Error Description Word (EOW)" on page 274. If the SYSUT3 DD statement specified variable length records, an ROW which ;s four bytes long is also appended to the front of the record. For further description of the ROW, see Supervisor Services and Macro Instructions. The user-supplied routines specified in ERROR and OUTREC can be used to examine and modify any byte in the record or EOW. The record length can be changed, subject to the following restrictions: • A work area used to construct the records is allocated by the program equal in size to the largest of (1) MAXlN, (2) lRECl on SYSUT2, or (3) lRECl on SYSUT3. • The record length must not be increased beyond this size. Overlaying of other work areas may then occur, causing unpredictable results. The new record length must be placed in the location pointed to by the second parameter word as received at entry to the routine. This length must include the EOW and ROW (if applicable). It is not necessary to modify the ROW because it is re-created if the record is to be written by IEBTCRIN. However, if the user does his own output from this routine, he must ensure that the ROW is correct for the record. If IEBTCRIN is to write the record, the length of the output record depends on the RECFM specification, as follows: • Fixed and variable records may have a maximum length equal to lRECl. Records larger than this are truncated. • Undefined records may have a maximum length equal to BlKSIZE. Records larger than this are truncated. These record lengths include the EDW and ROW, where applicable. The record length returned from the error exit is used to establish the location of the last data byte in the record. The location is used to control data duplication in the following record. However, it is not used for checking the record length of subsequent records. Modifications to the EDW, record, or record length may affect the editing of subsequent records. If the input is not edited, the user can examine and modify any byte in the record. The record length can also be changed, subject to the MTDI-editing rQstrictions. SPECIAL CODES Figure 87 on page 270 shows the hexadecimal characters representing special purpose codes that must not be used as replacement bytes. IEBTCRIN Program 269 MTDI Codes X' 00" X' 11 ' X'12' X'lS' X'lO' (lZ) (OUP) (lZS) (CAN) (GS) (P4) (P5) (P6) (P7) CPS) X'lE' X'3C' X'71' X'72' X'73' (VOK) (RM) (Pl) (P2) (P3) X'74' X'75' X'76' X'77' X'7S' X'l4' X'l5' X'17' (CR) (SW) (FO) (as) X'51' (AS) X'55' (src) X'80' X'81' through X'FF' MTST Codes X'lO' X'll' X'l3' (cr) (sw) (fd) Figure 87. Special Purpose Codes The special purpose codes listed in Figure 87 are used by IEBTCRIN when constructing records. Use of these codes causes a message to be issued and the utility to be terminated. Figure 88 on page 271 shows the values that can be chosen to replace error bytes for MTDI input. Figure 89 on page 272 shows the values that can be chosen to replace error bytes for MTST input. Figure 90 on page 273 shows MTST codes after they have been translat.ed by IEBTCRIN when TRANS=STDlC is specified. 270 MVS/370 Utilities It) vell C .g 'u -8 01 00 ~ 10 Bit Positions 0, 1 11 CIJ % .. "c 00 01 10 11 00 01 10 11 00 01 10 11 00 01 10 11 Bit Positions 2, 3 ~ 0 1 2 3 4 5 S 7 8 9 A B C 0 E F First Hexadecimal Digit 0000 0 LZ SP & 0 082 0 0001 1 DUP 0010 2 LZS 0011 'iii ~ CD 8 I 1 P1 A J P2 B K S 2 3 P3 C L T 3 0100 4 P4 0 M U 4 0101 5 P5 E N V 5 0110 S pS F 0 W S 0111 7 P7 G P X 7 1000 8 CAN P8 H a y 8 1001 9 ED I R Z 9 1010 A 1011 B 1100 C 1101 0 1110 E 1111 F , ! : $ # < * GS ( ) rvOK + ; RM I % ...., @ I > = ? .. Special Control: LZ DUP LZS ED GS = = = = = Left zero fill Duplicate Left zero start End data Group Separator Start of Record (SOR): Pl = P2 = P3 = P4 = P5 = PS = P7 = P8 = CAN Program level Program level Program level Program level Program level Program level Program level Program level = Cancel 1 2 3 4 5 S 7 8 End of Record (EOR): RM = Record mark VOK = Verify OK This figure represents the character set and control codes as read from an MTDI created cartridge. Figure 88. MTDI Codes from TCR IEBTCRIN Program 271 .- ·u ID -! C 01 00 ~ VI Bit Positions 0, 1 ~ "t:J e. c 8 00 01 10 11 00 01 10 11 00 01 10 11 00 01 10 11 Bit Positions 2, 3 6 7 8 9 A B C 0 E F First Hexadecimal Digit s src &i ~ 0 1 2 3 4 5 0000 0 z cr 5 0 I tab 0001 1 2 sw 6 9 0010 2 t e h j 0011 3 n fd k b = 0100 4 Z CR % ) 0101 5 @ SW t ( • AS I W 0110 6 T E H J SP P Y 0111 7 N K B + 1000 8 1 7 4 m 1001 9 3 1010 A x d 1011 B u c 1100 C ± & 1101 D # 1110 E X D 1111 F U C a and CR FD st ST 8 I $ * L 0 , as i w sp p y q TAB " bsp r v a g : f stx , M BSP R V A G : F STX , = Carrier return code = Switch code fd and F 0 = Feed code =.top code st and ST tab and TAB = Tab code = Automatic search as and AS = Space sp and SP bspand BSP = Backspace stxand STX = Stop transfer srcand SRC = Search This figure represents the character set and control codes as read from an MTST created cartridge. Figure 89. MTST Codes from TCR MVS/370 Utilities S a sw and SW 272 11 10 ~ 0 .t; .iii 0 / 0 ? SRC ~ ~. til c: .g .;;; i. i 'u -! 'tJ c: 8 ~ 0000 0 0001 1 0010 2 0011 01 00 ~ QI J: 11 10 Bit Positions 0,1 00 01 10 11 00 01 10 11 00 01 10 11 00 01 10 11 Bit Positions 2, 3 0 1 2 3 4 5 6 7 8 9 A B C D E F First Hexadecimal Digit SP & 0 a j 0 b k 3 c 0100 4· 0101 5 0110 6 0111 I 1 A J s B K S 2 I t C L T 3 d m u D M U 4 e n v E N V 5 f 0 w F 0 W 6 7 g P x G P X 7 1000 8 h q Y H a y 8 1001 9 i r z I R Z 9 1010 A 1011 STX ~ TAB BSP t ! : B $ # 1100 C * % 1101 0 ) - 1110 E 1111 F ( CR SRC + ; @ = ? .. :t TAB CR SSP SRC STX SP = Tab code = Carrier return = Backspace = Search = Stop transfer = Space Note: The STDUC option permits translating both lowercase and uppercase alphabetic characters to uppercase. Figure 90. MTST Codes after Translation by IEBTCRIN with TRANS=STDlC END-Of-CARTRIDGE Unique codes, written by the MTST or the MTDI device, signal the program when all data on a cartridge has been read. For MTST cartridges, this end-of-cartridge code is a lowercase stop code (st) or an uppercase stop code (ST). For MTDI cartridges, the end-of-cartridge code is the end-data code (ED). IEBTCRIN Program 273 IEBTCRIN terminates input from a cartridge upon encountering the end-of-cartridge code and rewinds the cartridge. IEBTCRIN continues to process cartridges until end-of-file is encountered. End-of-file is signaled following a rewind operation when there are no more cartridges in the feed hopper, the END OF FILE button is pressed, and end-of-cartridge for the last cartridge is recognized. An end-of-file indication will be passed to the OUTREC and/or ERRO~ exits if specified by setting register 1 equal to O. A stop code, whether uppercase (ST) or lowercase (st), indicates that all data on a cartridge has been read. Therefore, when an MTST cartridge to be processed by IEBTCRIN is created, the user must not use a stop code for any purpose other than signaling' end-of-data on the cartridge. stop codes within meaningful data cause any subsequent data on the cartridge to be lost because the cartridge is rewound and unloaded when a stop code is encountered. ERROR RECORDS If a record is found to be in error, the 'record is passed to the user error exit routine if one is specified. If an error exit is not specified, the action to be taken is determined by the option specified in a utility control statement. When either MTST input or MTDI input without editing is specified, the only error that can be recognized is a record containing one or more permanent data checks. The data check bytes are replaced as described in a utility control statement. The record is considered an error record, but because a data check is the only error that can occur, no EDW is appended to the error record. ERROR DESCRIPTION WORD (EDW) The Error Description Word (EDW) consists of four bytes that are appended to the start of an error record. The error description word is in EBCDIC format; for example, a 2 is represented as X'F2' and a C is represented as X'C3'. The information provided in each of the four bytes of the EDW is discussed in the following table. 274 MVS/370 Utilities Byte Indicator Meaning Level status (Byte 0) Identifies error records ~hat result from interrecord dependency that cannot be identified in the type status byte. Value Meaning o Indicates any error record that will not cause questionable data in the following records. A ~ status other than zero accompanies this byte. 1 Indicates any error record that may cause questionable data in the following records, and for which the level status of the previous record was O. 2 Indicates any error that contains questionable data because the error level of the preceding record was 1 or 2, or for any error record that may cause questionable data in the following records and for which the level status of the previous record was 1 or 2. . A level status of 1 or 2 is presented with error records resulting from the following: • The start-of-record (SOR) location has a character defined as an error. • The record contains two or more data check bytes side by side. These may have been an SOR and EOR (end-of-record). • The record is longer than the user-specified maximum length record. • The length of the record is not equal to the length of the first valid record of the same program level encountered on this cartridge. For ·this purpose, a valid record is one that contains no errors as identified in the type status, with the possible exception of being shorter than the user-specified minimum length. • The record hass data-duplication dependency on a previous record with one of the above errors. The level status is set to ~ when IEBTCRIN encounters: (1) a record without one of the previous errors, (2) a canceled record, or (3) the first record of a cartridge. IEBTCRIN Program 275 Byte Indicato~ Meaning Type status (Byte 1) Identifies records in error because of SOR, EOR, length, field, or data check error conditions. Value Meaning o Indicates any record that contains none of the following identifiable errors, but contains questionable data due to a level status other than zero. (See Level status above.) 1 Indicates any record that has: (1) an SOR character of other than PI through P8 or a GS code, (2) an EOR character of other than a VOK code for records when the user specified a record verification check, or (3) an EOR character of other record-verification check. 2 Indicates any record that has an incorrect length because it is: (1) longer than the user-specified maximum, (2) shorter than the user-specified minimum, or (3) not encountered on this cartridge. Indicates any record that has a field error. A field error occurs when duplication or left-zero justification functions did not occur in a field because of an error condition. See "MTDI Editing Criteria" below. 8 Indicates any record that has a permanent data check error. The type-status indicator can also have values of 3, 5, 6, 7, 9, A, B, C, D, E, and F. These values indicate a combination of SOR, EOR, length, field, and data check errors. For example, a value of A indicates a record with a data check error (8), as well as, an incorrect length (2). start-of-Record (Byte 2) Indicates the start-of-record (SOR) character associated with this record. The SOR character can be 1 through 8, where 1 indicates PI, 2 indicates P2, etc., or E, which indicates the SOR character is in error. End-of-Record (Byte 3) Indicates the end-of-record (EOR) character associates with this record. The EOR character can be: U (unverified record); V (verified record); or E (EOR character is in error). 276 MVS/370 Utilities SAMPLE ERROR RECORDS Figure 91 shows a stream of data bytes read sequentially from the tape cartridge reader. 111372 RECORD NUMBER lAO * DDDDDDDDDDDDDDD DV *111378UUUUUUUUUUUUUUU2UO 1 K * PPPPPPPPPPPPPPP PK P DDDDDDDDDDDDDDD DV 357987UUUUUUUUUUUUUUU3UO P 1 PPPPPPPPPPPPPPP PK 1 P V P V K R P DDDDDDDDDDDDDDD DV 358436UUUUUUUUUUUUUUU6UO M 1 PPPPPPPPPPPPPPP PK 358436 RECORD NUMBER 5 1 * * 358977 REC*RD NUMBER 4AO P V 998865 RECORD NUMBER 7A MAXIMUM 00001430 IN WAREHOUSEO 3 K P * VE 367*82 RECORD NUMBER 8AO 1 KD Figure 91. Tape Cartridge Reader Data stream Figure 92 on page 278 shows the records constructed by IEBTCRIN from the input records shown in Figure 91. These records show some of the errors that can occur durlng processing and their effect on the Error Description Word. The following parameters were specified for these records: 72 TCRGEN TYPE=MTDI,EDIT=EDITR,VERCHK=VOKCHK, MAXlN=50,REPLACE=X'5B' C IEBTCRIN Program 277 (Record 2) (Record 1) v v P o 0 1111372 RECORD NUMBER 1AK 19EV $111378 RECORD NUMBER 2AK (Record 4) (Record 3) v v P 201V P 0 1357987 RECORD NUMBER 3AK 081V 0 1358977 REC$RD NUMBER 4AK (Record 6) (Record 5) v P 131U 1358436 RECORD NUMBER P R 5M 241V 0 1358436 RECORD NUMBER 6$K (Record 8) (Record 7) v P 233E 3998865 RECORD NUMBER 7A MAXIMUM 00001430 IN WAREH v P o OUSEK t (Record 9) 081V 21EV MAXLN ends here (EOR Forced) 0 1367$82 RECORD NUMBER 8AK Resulting Error Description Word Figure 92. Record Construction IEBTCRIN classifies records 2 through 9 in Figure 92 as error records. The records are classified as follows: 278 • Record 1 is a valid record. It contains a program-level 1 code, and thus establishes the valid length for all program-level 1 records in this cartridge to be 25 bytes. • Record 2 has a data check in the SOR location. level status is set to 1 because the SOR location might have contained a cancel code that would cause any data duplicated on the following record to be questionable. The type status (9) indicates the record has an incorrect SOR/EOR character (1) and a data check error (8). • Record 3 contains no identifiable error, but contains questionable data because it requires duplication from the previous record, which had a level status of 1. • Record 4 has a data check. Because it contained no DUP codes, the level status is set to O. • Record 5 is shorter than the first program-level 1 record on this cartridge (length error). This record also contains an RM code rather than a VOK code in the EOR location (VOKCHK was specified on the TCRGEN statement. Because IEBTCRIN cannot determine why the record is short, all data duplicated from this record is questionable; the level status is set to 1. The type status is set to 3 indicating an SOR/EOR error (1) and length error (2). MVS/370 Utilities • Record 6 contains a DUP code that is beyond the last position of the preceding record. • The seventh input record is longer than the maximum user-specified record length. Note that it is passed as two records. The first record (record 7) indicates an EOR error and a length error; the second (record 8) indicates an SOR error. Because record 7 is an error record, its length (50 bytes) is not established as the valid length for all program-level 3 records on this cartridge. • Record 9 has a data check. Because it contained no DUP codes, the level status is set to O. INPUT AND OUTPUT IEBTCRIH uses the following input: • An input data set, which contains data on tape cartridges to be read from the Tape Cartridge Reader (TCR). The input data set was created on either MTST or MTDI. • A control data set, which contains utility control statements that are used to control the functions of IEBTCRIN. . IEBTCRIH produces the following output: • An output data set, which contains the sequential output produced by the utility as a result of processing the cartridge input according to the utility control statements. • An error output data set, which contains records that do not conform to the specifications for a valid record. • A message data set, which contains diagnostic messages. RETURN CODES IEBTCRIH returns a code in register 15 to indicate the results of program execution. The return codes and their meanings are listed below. IEBTCRIH Program 279 Codes Meaning 00 (00 hex) Normal termination. 04 (04) Warning message issued; execution permitted. Conditions leading to issuance of this code are: 12 (OC) 16 (10) • SYSPRINT, SYSIN, SYSUT2, or SYSUT3 DD statements missing and • DCB parameters missing SYSUT2 or SYSUT3 DD statements. Diagnostic error message issued; execution terminated. Conditions leading to issuance of this code are: • SYSUT1 DD statement missing, • Conflicting DCB parameters in DD statements, and • Invalid or conflicting utility control statements. Terminal error message issued; execution terminated. Conditions leading to issuance of this code are: • Permanent input/output errors (not including data checks on the TCR), • Unsuccessful opening of data sets, • Requests for termination by user exit routine, • Insufficient storage available for execution, and • User exit routine not found. Figure 93. IEBTCRIN Return Codes CONTROL IEBTCRIN is controlled by job control statements and utility control statements. The job control statements are required to execute or invoke IEBTCRIN and to define the data sets that are used and produced by the program. The utility control statements are used to indicate the source of the input data cartridges (MTST or MTDI) and to specify the type of processing to be done. JOB CONTROL STATEMENTS Figure 94 on page 281 shows the job control statements for IEBTCRIN. 280 MVS/370 Utilities statement Use JOB Initiates the job. EXEC Specifies the program name (PGM=IEBTCRIN) or, if the job control statements reside in a procedure library, the procedure name. SYSPRINT DO Defines a sequential message data set, which can written to any QSAM-supported output device. SYSUTl DO Defines the input data set. SYSUT2 DD Defines a sequential output data set for valid records. SYSUT3 OD Defines a sequential output data set for error records. SYSIN DD Defines the control data set. The control data set normally resides in the input stream; however, it can be defined as a sequential data set or as a member of a partitioned data set. If this statement is not included, all utility control statement defaults are assumed and a message is issued to SYSPRINT. If DUMMY is specified, all utility control statement defaults are assumed. b~ Figure 94. IEBTCRIN Job Control Statements SYSPRINT DD statement If the SYSPRINT DD statement is missing, a message is written on the operator console and processing continues. If some parameters are specified but others are omitted, IEBTCRIN attempts to set defaults for the missing parameters that are consistent with those supplied. For example, if RECFM=VBA is specified, IEBTCRIN assumes BlKSIZE=129 and lRECl=125. If lRECl, BlKSIZE, and RECFM are not specified, the defaults are lRECl=121, BlKSIZE=121, and RECFM=FBA. Because IEBTCRIN always constructs the SYSPRINT records with USASI (type A) cont~ol characters, type A control characters should be indicated when RECFM is specified. The DCB parameters defining the SYSPRINT data set can be supplied from any valid source (for example, DO statements). If a parameter that is not consistent with the other parameters is specified on SYSPRINT DD, a message is issued and processing is ended. If a permanent input/output error occurs on SYSPRINT, both the failing message and a SYNADAF message indicating the error are written on the programmer's console and processing is terminated. SYSUTl DO statement The SYSUTI DD statement is required for each use of IEBTCRIN. For the SYSUTI DD statement, only the UNIT keyword is required. The value specified in UNIT=xxxx can be '2495', the device address, or any other name that was generated in the system as a unit device name. The VOlUME=SER=keyword may be specified to identify the tape cartridges to be mounted. The volume serial IEBTCRIN Program 281 number must be an externally recognizable name associated with the cartridges to be processed. A message is issued to the operator instructing that the cartridges identified by that name be mounted. If VOLUME is not specified, the name TCRINP is assumed and used in the mount message. The BUFL DCB parameter can be specified to indicate the size of input buffers; if BUFL is not specified, a value of 2000 is assumed. If a permanent error occurs on SYSUTI (not including a data check), a message is issued on SYSPRINT and the program is terminated. . SYSUT2 and SYSUT3 DD statements The SYSUT2 DD and SYSUT3 DD statements must identify sequential data sets; the data sets can have fixed, variable, variable spanned, or undefined records. These data sets can be written on any QSAM-supported device. Fixed and variable records on the SYSUT2 or SYSUT3 data set can be blocked through the specification of the BLKSIZE and RECFM DCB parameters. SYSUT2 DD and SYSUT3 DD statements may be omitted or specified as DUMMY for other than sequential data sets. A message is issued on SYSPRINT and processing continues. The DCB parameters defining the SYSUT2 and SYSUT3 data sets can be supplied from any valid source (for example, DD statements or a data set label). Because the output (SYSUT2 and/or SYSUT3) data sets are not opened until the first record is ready for output (after any OUTREC and/or ERROR exits), DCB parameters to be supplied from an existing data set label are not available for records constructed before the data set is opened. Therefore, the DCB parameters should always be provided in the DD statement even though they may already exist in the label. Otherwise, defaults are used to construct records until the data set is opened. If editing of MTDI input is specified on the utility control statements, the SYSUT3 lRECl parameter should be four bytes greater than the SYSUT2 lRECL parameter to include a four bytes long Error Description Word appended to the front of the record by IEBTCRIN. (See "Error Description Word (EDW)" on page 274.> For variable records on either SYSUT2 or SYSUT3, the LRECL and BlKSIZE DCB parameters must be large enough to include the four bytes long record descriptor word. If inconsistent parameters are specified on SYSUT2 DD or SYSUT3 DD, a message is issued and processing is ended. If a permanent error occurs on SYSUT2 or SYSUT3, a message is issued on SYSPRINT and the program is terminated. SYSIN DD statement The DCB parameters defining the SYSIH data set can be supplied from any valid source (for example, DD statements or a data set label). Because the output (SYSUT2 and/or SYSUT3) data sets are not opened until the first record is ready for output (after any OUTREC and/or ERROR exits), DCB parameters to be supplied from an existing data set label are not available for records ·constructed before the data set is opened. Therefore, the DCB parameters should always be provided in the DD statement even though they may already exist in the label. Otherwise, defaults are used to construct records until the data set is opened. If a permanent error occurs on SYSIN, a message is issued on SYSPRIHT and the program is terminated. 282 MVS/370 Utilities UTILITY CONTROL STATEMENTS Figure 95 shows the utility control statements for IEBTCRIN. statement Use TCRGEN Specifies whether MTDI or MTST input is to be processed and the type of processing to be performed. EXITS Specifies any exit routines provided by the user. Figure 95. IEBTCRIN Utility Control Statements Continuation requirements for utility control statements are described in "Continuing Utility Control Statements" on page 5. If these statements contain errors or inconsistencies, the program is terminated and the appropriate diagnostics are sent to the message data set. If TCRGEN is not specified, standard defaults are used. TCRGEN Statement The TCRGEN statement is used to indicate the device (MTDI or MTST) on which the input data was created and the type of processing to be performed on the input data. The format of the TCRGEN statement is: [label] TCRGEN [TYPE=MTDIIMTST] [,TRANS=STDUCISTDLClngmgINOTRAN] [,EDIT=EDITDIEDITRINOEDIT] [,VERCHK=NOCHKIVOKCHK] [,I1INLN=n] [,MAXLN=n] [ , REPLACE=X' 2Q1' ] [,ERROPT=NORHALINOERR] EXITS Statement The EXITS statement is used to identify user-supplied exit routines, which must exist in either the user job library or the link library. Upon entry, a parameter list is supplied to the exit routine. Upon returning from the exit routine, the user must provide an acceptable return code. See Appendix A, "Exit Routin~ Linkage" on page 438. IEBTCRIN Program 283 The format of the EXITS statement is: [labell [ERROR=routinenamel EXITS [,OUTREC=routinenamel [,DUTHDR2=routlnenamel [,DUTHDR3=routinenamel [,OUTTLR2=routinenamel [,QUTTLR3=routinenamel Parameters Applicable Control Statements Description of Parameters EDIT TCRGEN EDIT=EDIT~IEDITRINOEDIT specifies the type of processing to be performed on MTDI input. These values can be coded: EDITD EDITR specifies that the input is to be edited and that SOR and EOR codes are to be deleted and not included as part of the output record. This is the default. specifies that the input is to be edited and SOR and EOR codes are to be kept as part of the output record. NOEDIT specifies that no editing is to be performed. Data1 including any group separator (GS) codes, is passed exactly as read from the cartridge. If EDlTD or EDITR is specified, the edit consists of the following functions: 284 MVS/370 Utillties • Records are extracted one at a time from the input buffers by scanning for the record-delimiting codes (SOR and EOR). • DUP codes are replaced with the character from the corresponding location in the preceding record. • Left-zero fields are right aligned and leading zeros are inserted where necessary. • Left-zero start codes are deleted from the records. • Group separator codes and records that start with cancel record codes are bypassed. Parameters APplicable Control statements ERROPT TCRGEN Description of Parameters ERROPT=HORNALIHOERR specifies the-disposition of all error records. ERROPT is ignored if a user error routine is specified in the EXITS statement. These values can be coded: NORMAL specifies that all error records are to be placed in the error data set (SYSUT3). HOERR ERROR EXITS specifies that all records (including error records) are placed in the normal output data set (SYSUT2). No records are placed in the error data set (SYSUT3). This is the default. ERROR=routinename specifies the name of the routine that receives control before an error record is passed to the error output data set (SYSUT3). This exit routine can be used to analyze and, if possible, correct the error record. This parameter nullifies any ERROPT value. IEBTCRIN Program 285 Parameters APplicable Control statements MAXlH TCRGEN Description of Parameters MAXLN=n specifies the number of bytes, n, plus four for the record descriptor word when variable records are specified, to be contained in all but the last record passed to the output routine when editing is not performed. IEBTCRIN does not indicate the end of data from one cartridge and the beginning of data from the next. Usually this transition from one cartridge to another occurs within an output record. The last record passed to the output routine contains only the number of bytes remaining (plus four if the record format is variable) and is the only record that can be shorter than the length specified by MAXlN. The size of the records actually written depends on the record length (lRECl) specified for the output data set. For MTDI input with editing specified, MAXLN is used to specify in bytes the length of the longest valid record after editing. If the program encounters a record in which a valid end-of-record cannot be determined within this length, an end-of-record condition is forced and the record is considered an error record. The values that can be specified for MAXlN are: • For MTST processing or MTDI processing without editing, MAXLN should equal the number of bytes to be passed as a record. • For MTDI processing when EDIT=EDITD, MAXlN should equal the number of bytes in the longest valid record after editing, excluding SOR and EOR codes. • For MTDI processing when EDIT=EDITR, MAXlN should equal the number of bytes in the longest valid record after editing, including SOR and EOR codes. Note: The values for MAXlN should not include the 4-byte-long record descriptor word added to a variable length record. Default: 120 bytes 286 MVS/370 Utilities Parameters Applicable Control statements MINLN TCRGEN Description of Parameters MINLN=n specifies in bytes the length, n, of the shortest valid edited record. This parameter is valid only when TYPE=MTDI and either EDIT=EDITD or EDIT=EDITR are specified. If IEBTCRIN encounters a record shorter than this specified length, the record is considered an error record. The values that can be specified for MINLN are: • For MTST processing or MTDI processing without editing, MINLN is not specified. • For MTDI processing when EDIT=EDITD, MINlN should equal the number of bytes in the shortest valid record after editing, excluding SOR and EOR codes. • For MTDI processing when EDIT=EDITR, MINlN should equal the number of bytes in the shortest valid record after editing, including SOR and EOR codes. Note: The values for MINlN should not include the four bytes long record descriptor word added to a variable length record. Default: No minimum length checking is performed. OUTREC EXITS OUTREC=routinename specifies the name of the routine that receives control before the record is passed to the normal output data set (SYSUT2). In this exit routine, the user can process the record and perform hi-s own output if output other than the SYSUT2 data set is desired. Any modification of an edited MTDI record may affect the editing of following records. The record returned from this exit is used to accomplish data duplication in the record that follows. If the SYSUT2 data set has specified variable length records, an RDW which is four bytes long is append~d to the front of the record. OUTHDR2 EXITS OUTHDR2=routinename specifies the name of the routine that receives control during the opening of the SYSUT2 data set; this exit routine can be used to create user output header labels for the normal output data set (SYSUT2). OUTHDR3 EXITS OUTHDR3=routinename specifies the name of the routine that receives control during the opening of the SYSUT3 data set; this exit routine can be used to create user output header labels for the error data set (SYSUT2). IEBTCRIN Program 287 Parameters APplicable Control statements OUTTLR2 EXITS OUTTLR2=routinename specifies the name of the routine that receives control during the closing of the SYSUT2 data set; this exit routine can be used to create user output trailer labels for the normal output data set (SYSUT2). OUTTLR3 EXITS OUTTLR3=routinename specifies the name of the routine that receives control during the closing of the SYSUT3 data set; this exit routine can be used to create user output trailer labels for the error data set (SYSUT3). REPLACE TCRGEN REPLACE=X'xx' specifies the hexadecimal representation of the character to be used by IEBTCRIN to replace error bytes. REPLACE allows the user to identify and possibly correct error bytes on the error exit routine or in subsequent processing. The specified REPLACE character should be one that does not normally appear in the data. To replace error bytes on MTDI data, select a value for xx from Figure 88 on page 271 To replace error bytes on MTST data, select a value for xx from Figure 89 on page 272 The replacement of error bytes is accomplished before any specified MTST translation. Description of Parameters Default: X'19', end-of-data 288 MVS/370 Utilities Parameters Applicable Control statements Description of Parameters TRANS TCRGEN TRAHS=STDUCISTDlCI~INOTRAH specifies the type of processing to be performed on MTST input. These values can be coded: STDUC STDle specifies that the MTST code is to be translated to standard EBCDIC; alphabetic characters are translated to uppercase. This is the default. specifies that the MTST code is to be translated to standard EBCDIC; alphabetic characters are not translated to uppercase. specifies a user translate table to be used by IEBTCRIN. The translate table must exist as a load module named in a user job library or the link library. This load module must consist of a translate table which begins at the entry point and conforms to the specifications for the translate instruction (TR) found in IBM System/370 Principles of Operation. HOTRAH specifies that no translation and no special processing are to be performed. Data is passed exactly as read from the cartridge. If STDUC, STDlC, or ~ is specified, certain of the MTST codes are processed in a special way before translation. Feed codes (FD), switch codes (SW), and autosearch codes (AS), both uppercase and lowercase, are deleted from the data. Each 61-character reference code is reduced to a single search code (SRC). See "Special Codes" on page 269 for an explanation of these codes. TYPE TCRGEN TYPE=MTDIIMTST specifies the device on which the magnetic tape cartridge(s) was written. These values are coded: MTDI MTST specifies that the input was created on a Magnetic Data Inscriber. This is the default. specifies that the input was created on a Magnetic Tape Selectric typewriter. IEBTCRIN Program 289 Parameters Applicable Control statements Description of Parameters VERCHK TCRGEH VERCHK=NOCHKlvOCHK specifies whether a record-verification check is to be made on MTDI input that is to be edited. This parameter is valid only when TYPE=MTDI and either EDIT=EDITD or EDIT=EDITR are specified~ These values can be coded: NOCHK specifies that no record-verification check is to be made. Either a record mark (RM) or a verify OK (VOK) code is considered a valid end-of-record code. This is the default. VOKCHK specifies that a record-verification check is td be made. A record that does not contain a verify OK code is to be considered an error record. IEBTCRIN EXAMPLES The following examples illustrate some of the uses of IEBTCRIN. Figure 96 can be used as a quick reference guide to IEBTCRIN examples. The numbers in the "Example" column point to examples that follow. operation Data Set organization Device Comments Example Edit MDTI input Sequential Disk and 9-track Tape Fixed blocked output. Error exit routine specified 1 Invoke IEBTCRIN with LINK macro instruction - - Assembler language interface instructions 2 Figure 96. IEBTCRIH Example Directory Examples that use disk or tape in place of actual device numbers must be changed before use. See "DASD and Tape Device Support" on page 3 for valid device number notation. IEBTCRIN EXAMPLE 1 In this example, input from a tape cartridge is to be edited with normal records written to a disk volume and error records written to a tape volume. 290 MVS/370 Utilities //JOBNAME //STPNAME //SYSPRIHT //SYSUTI //SYSUT2 JOB EXEC DD DD DD // // //SYSUT3 // //SYSIN DD O,SMITH,MSGLEVEL=1 PGM=IEBTCRIN SYSOUT=A UNIT=TCR,VOlUME=SER=MYTAPE,DCB=(BUFl=3000) DSNAME=GOODSET,DISP=(NEW,CATLG),UNIT=disk VOLUME=SER=111222,SPACE=(TRK(10,10», DCB=(LRECL=100,BLKSIZE=1000,RECFM=FB) DSNAME=ERRSET,UNIT=tape,VOLUME=SER=000001, DISP=(NEW,KEEP),DCB=(BlKSIZE=104,RECFM=U) DD * TCRGEN TYPE=MTDI,EDIT=EDITD,MAXlN=100,REPlACE=X'5B' EXITS ERROR=MYERR The control statements are discussed below: • SYSUTI DD defines the input tape cartridge data set. A console message instructs the operator to mount a set of cartridges named MYTAPE. The two input buffers are each 3000 bytes long (BUFl). The UNIT parameter assumes that TCR has been system generated as an esoteric name for the Tape Cartridge Reader. • SYSUT2 DD defines a sequential data set for the normal output records. The data will be written to a disk volume. • SYSUT3 DD defines a sequential data set for the error records. The records are undefined with a maximum block size of 104 bytes, including a 4-byte error description word. • SYSIN DD defines the control data set, which follows in the input stream. • TCRGEN indicates MTDI input. The input is to be edited with SOR and EOR codes deleted, the maximum valid record length is to be 100 bytes, and the replace character is a hexadecimal "5B." VERCHK is defaulted to NOCHK. Minimum record length checking is not requested. • EXITS indicates that a user has provided an exit routine to handle error records. Because no job library has been specified, the exit routine (MYERR) must reside in the link library. IEBTCRIN EXAMPLE 2 In this example, IEBTCRIN is invoked via the LINK macro instruction in an Assembler language program. An alternate name has been assigned to each of the DD statements used by IEBTCRIN. The job control for this step must include DD statements with the alternate DD names. IEBTCRIN Program 291 LINK CNOP OPTLIST DC CNOP DDNAME DC DC DC DC DC DC DC DC 292 MVS/370 Utilities EP=IEBTCRIN,PARAM=(OPTLIST,DDNAME),VL=l 2,4 (OPTlIST must be on halfword boundary) H'O' (Length must be zero for IEBTCRIN) 2,4 (DDNAME list must be on halfword boundary) H'82' (Length of DDNAME list) 8F'O' , (Alternate DDNAME for SYSIN) C'NEWIN C'NEWPRINT' (Alternate DDNAME for SYSPRINT) 2F'O' C'NEWUTI ,, (Alternate DDNAME for SYSUTl) C'NEWUT2 , (Alternate DDNAME for SYSUT2) (Alternate DDNAME for SYSUT3) C'NEWUT3 IEBUPDTE PROGRAM IEBUPDTE is a data set utility used to incorporate IBM and user-generated source language modifications into sequential or partitioned data sets. Exits are provided for user routines that process user header and trailer labels. IEBUPDTE can be used to: • Create and update data set libraries • Modify existing partitioned members or sequential data sets • Change the organization of a data set from sequential to partitioned or vice versa CREATING AND UPDATING DATA SET LIBRARIES IEBUPDTE can be used to create a library of partitioned members consisting of (at the most) aD-byte logical records. In addition, members can be added directly to an existing library, provided that the original space allocations are sufficient to incorporate the new members. In this manner, a cataloged procedure can be placed in a procedure library, or a set of job or utility control statements can be placed as a member in a partitioned library. MODlFYING AN EXISTING DATA SET IEBUPDTE can be used to modify an existing partitioned or sequential data set. logical records can be replaced, deleted, renumbered, or added to the member or data set. A sequential data set residing on a tape volume can be used to create a new master (that is, a modified copy) of the data set. A sequential data set residing on a direct access device can be modified either by creating a new master or by modifying the data set directly on the volume on which it resides. A partitioned data set can be modified either by creating a new master or by modifying the data set directly on the volume on which it resides. CHANGING DATA SET ORGANIZATION IEBUPDTE can be used to change the organization of a data set from sequential to partitioned, or to change a single member of a partitioned data set to a sequential data set. If only a member is changed, the remainder of the original data set remains unchanged. In addition, logical records can be replaced, deleted, renumbered, or added to the member or data set. INPUT AND OUTPUT IEBUPDTE uses the following input: • An input data set (also called the old master data set), which is modified or used as source data for a new master. The input data set is either a sequential data set or a member of a partitioned data set. • A control data set, which contains utility control statements and, if applicable, input data. The data set is required for each use of IEBUPDTE. IEBUPDTE Program 293 IEBUPDTE produces the following output: • An output data set, which is the result of the IEBUPDTE operation. The data set can be either sequential or partitioned. It can be either a new data set (that is, created during the present job step) or an existing data set, modified during the present job step. • A message data set, which contains the utility program identification, control statements used in the job step, modification made to the input data set, and diagnostic messages, if applicable. The message data set is sequential. RETURN CODES IEBUPDTE returns a code in register 15 to indicate the results of program execution. The return codes and their meanings are listed below. Codes Meaning 00 (00 hex) Successful completion. 04 (04) A control statement is coded incorrectly or used erroneously. If either the input or output is sequential, the job step is terminated. If both are partitioned, the program continues processing with the next function to be performed. 12 (OC) An unrecoverable error exists. terminated. 16 (10) A label processing code of 16 was received from a user's label processing routine. The job step is terminated. The job step is Figure 97. IEBUPDTE Return Codes CONTROL IEBUPDTE is controlled by job control statements and utility control statements. The job control statements are required to execute or invoke IEBUPDTE and to define the data sets that are used and produced by the program. The utility control statements are used to control the functions of IEBUPDTE and, in certain cases, to supply new or replacement data. JOB CONTROL STATEMENTS Figure 98 on page 295 shows the job control statements for IEBUPDTE. 294 MVS/370 Utilities statement Use JOB Initiates the job. EXEC Specifies the program name (PGM=IEBUPDTE), or, if the job control statements reside in a procedure library, the procedure name. Additional information can be specified in the PARM parameter of the EXEC statement. SYSPRINT DD Defines a sequential message data set. The data set can be written to a system output device, a tape volume, or a direct access volume. SYSUTl DD Defines the input Cold master) data set. It can define a sequential data set on a card reader, a tape volume, or a direct access volume. Or, it can define a partitioned data set on a direct access volume. SYSUT2 DD Defines the output data set. It can define a sequential data set on a card punch, a printer, a tape volume, or a direct access device. It can define a partitioned data set on a direct access device. SYSIN DD Defines the control data set. The control data set normally resides in the input stream; however, it can be defined as a member of a partitioned data set. Figure 98. Job Control Statements for IEBUPDTE PARM Information on the EXEC statement Additional information can be coded in the PARM parameter of the EXEC statement, as follows: Following are the PARM values: • NEW, which specifies that the input consists solely of the control data set. An input data set does not exist and is not defined if NEW is specified. • MOD, which specifies that the input consists of both the control data set and the input data set. If neither NEW nor MOD is coded, MOD is assumed. • inhdr, which specifies the name of the routine that processes the user header label on the volume containing the control data set. • intlr, which specifies the name of the routine that processes the user trailer label on the volume containing the control data set. SYSPRINT DD statement The message data set has a logical record length of 121 bytes, and consists of fixed length, blocked or unblocked records with an American National Standards Institute (ANSI) control character in the first byte of each record. The input and IEBUPDTE Program 295 output data sets have a logical record length of 80 bytes or less, and consist of standard fixed-blocked (RECFM=FB) or unblocked records. The control data set contains 80-byte, blocked or unblocked records. SYSUTl DD statement If the SYSUTI and SYSUT2 DO statements define the same sequential data set (BDAM only), only those operations that add data to the end of the existing data set can be made. In these cases: 1. The PARM parameter of the EXEC statement must imply or specify MOD. (See "PARM Information on the EXEC Statement" on page 295.) 2. The DISP parameter of the SYSUTI DD statement must specify OLD. If SYSUTI and SYSUT2 define the same partitioned data set, new extents resulting from updates on SYSUT2 are not retrievable in SYSUTI. The input and output data sets contain blocked or unblocked logical records with record lengths of up to 80 bytes. The input and output data sets may have different block sizes as long as they are multiples of the logical record length. If an ADD operation is specified with PARM=NEW in the EXEC statement, the SYSUTI DD statement need not be coded. If the SYSUTI DD statement defines a sequential data set on tape, the file sequence number of that data set must be included in the LABEL keyword (unless the data set is the first or only data set on the volume). SYSUT2 DD statement Space must be allocated for an output data set (SYSUT2 DD statement) that is to reside on a direct access device, unless the data set is an existing data set. The SYSUT2 DD statement must not specify a DUMMY data set. When adding a member to an existing partitioned data set using an ADD function statement, any DCB parameters specified on the SYSUTI and SYSUT2 DD statements (or the SYSUT2 DD statement if that is the only one specified) must be the same as the DCB parameters already existing for the data set. If the SYSUTI and SYSUT2 DD statements define the same sequential data set (BDAM only), only those operations that add data to the end of the existing data set can be made. In these cases: 1. The PARM parameter of the EXEC statement must imply or specify MOD. (See "PARM Information on the EXEC Statement" on page 295.) 2. The DISP parameter of the SYSUT2 DD statement must specify MOD. If SYSUTI and SYSUT2 define the same partitioned data set, new extents resulting from updates on SYSUT2 are not retrievable in SYSUTI. The output data set can have a blocking factor that is different from the input data set; however, if insufficient space is allocated for reblocked records, the update request is terminated. 296 MVS/370 Utilities The input and output data sets contain blocked or unblocked logical records with record lengths of up to 80 bytes. The input and output data sets may have different block sizes as long as they are multiples of the logical record length. If an UPDATE=INPLACE operation is specified, the SYSUT2 DD statement should not be coded. If both the SYSUTI and SYSUT2 DD statements specify standard user labels (SUL), IEBUPDTE copies user labels from SYSUTI to SYSUT2. If the SYSUTI and SYSUT2 DD statements define the same partitioned data set, the old master data set can be updated without creating a new master data set; in this case, a copy of the updated member or members is written within the extent of the space originally allocated to the old master data set. Subsequent referrals to the updated member(s) will point to the newly written member(s). The member names themselves should not appear on the DD statements; they should be referred to only through IEBUPDTE control statements. The old directory entry for each member is not copied. SYSIN DD statement The SYSIN DD statement is required for each use of IEBUPDTE. UTILITY CONTROL STATEMENTS Figure 99 shows the utility control statements used to control IEBUPDTE. statement Use Function Initiates an IEBUPDTE operation (ADD, CHANGE, REPL, REPRO). Detail Used with the function statement for special applications. Data A logical record of data to be used as a new or replacement record in the output data set. LABEL Indicates that the following data statements are to be treated as user labels. ALIAS Assigns aliases. ENDUP Terminates IEBUPDTE. Figure 99. IEBUPDTE Utility Control Statements Note: Unlike other utility control statements, all IEBUPDTE utility control statements (including the NUMBER and DELETE detail statements, but not including data statements) must begin with a "./" (period, slash) in columns 1 and 2. Continuation requirements for utility control statements are described in "Continuing Utility Control Statements" on page 5. IEBUPDTE Program 297 Function sta~ement The function statement (ADD, CHANGE, REPl, or REPRO) is used to initiate an IEBUPDTE operation. At least one function statement must be provided for each member or data set to be processed. A member or a data set can be added directly to an old master data set if the space originally allocated to the old master is sufficient to incorporate that new member or data set. ADD specifies that a member or a data set is added to an old master data set. If a member is added and the member name already exists in the old master data set, processing is terminated. If, however, PARM=NEW is specified on the EXEC statement, the member is replaced. For a sequential output master data set, PARM=NEW must always be specified on the EXEC statement. At least one blank must precede and follow ADD. When a member replaces an identically named member on the old master data set or a member is changed and rewritten on the old master, the alias (if any) of the original member still refers to the original member. However, if an identical alias is specified for the newly written member, the original alias entry in the directory is changed to refer to the newly written member. REPL specifies that a member of a data set is being entered in its entirety as a replacement for a sequential data set or for a member of the old master data set. The member name must already exist in the old master data set. At least one blank must precede and follow REPL. CHANGE specifies that modifications are to be made to an existing member or data set. Use of the CHANGE function statement without a NUMBER or DELETE detail statement, or a data statement causes an error condition. At least one blank space must precede and follow CHANGE. REPRO specifies that a member or a data set is copied in its entirety to a new master data set. At least one blank must precede and follow REPRO. Members are logically deleted from a copy of a library by being omitted from a series of REPRO function statements within the same job step. One sequential data set can be copied in a given job step. A sequential data set is logically deleted from a new volume by being omitted from a series of job steps which copy only the desired data sets to the new volume. If the NEW subparameter is coded in the EXEC statement, only the ADD function statement is permitted. 298 MVS/370 utilities The format of the function statement is: • .I[labelJ CADDICHANGEIREPLIREPROl [LIST=ALL] [,SEQFLD=(ddlltddl,ddl)] [,NEW=POIPS] [,HEHBER=cccccccc] [,COLUMN=nnl!] [,UPDATE=INPLACE] [,INHDR=cccccccc] [,INTLR=cccccccc] [,OUTHDR=cccccccc] [,OUTTLR=cccccccc] [,TOTAL=troutinename,sizell [,NAHE=ccccccccl [,LEVEL=hh] [,SOURCE=2!] [,SSI=hhhhhhhhl Function Restrictions When UPDATE=INPLACE is specified: • The SYSUT2 DD statement is not coded. • The PARM parameter of the EXEC statement must imply or specify MOD. • The NUMBER detail statement can be used to specify a renumbering operation. • Data statements can be used to specify replacement information only. • One CHANGE function statement and one UPDATE=INPLACE parameter are permitted per job step. • No functions other than replacement, renumbering, and header label modification (via the LABEL statement) can be specified. • Only replaced records are listed unless the entire data set is renumbered. • System status information cannot be changed. IEBUPDTE Program 299 Within an existing logical record, the data in the field defined by the COLUMN parameter is replaced by data from a subsequent data statement, as follows: 1. IEBUPDTE matches a sequence number of a data statement with a sequence number of an existing logical record. In this manner, the COLUMN specification is applied to a specific logical record. 2. The information in the field within the data statement replaces the information in the field within the existing logical record. For example, COLUMN=40 indicates that columns 40 through 80 (assuming 80-byte logical records) of a subsequent data statement are to be used as replacement data for columns 40 through 80 of a logical record identified by a matching sequence number. (A sequence number in an existing logical record or data statement need not be within the defined field.) The COLUMN specification applies to the entire function, with the exception of: • Logical records deleted by a subsequent DELETE detail statement. • Subsequent data statements not having a matching sequence number for an existing logical record. • Data statements containing information to be inserted in the place of a deleted logical record or records. Figure 100 shows the use of NEW, MEMBER, and NAME parameters for different input and output data set organizations. Input Data set organization output Data set organization Partitioned Partitioned Parameter Combinations With an ADD function statement, use NAME to specify the name of the member to be placed in the partitioned data set defined by the SYSUT2 DD statement. If an additional name is required, an ALIAS statement can also be used. With a CHANGE, REPL, or REPRO function statement, use NAME to specify the name of the member within the partitioned data set defined by the SYSUTl DD statement. If a different or additional name is desired for the member in the partitioned data set defined by the SYSUT2 DD statement, use an ALIAS statement also. None Partitioned (New) With each ADD function statement, use NAME to assign a name for each member to be placed in the partitioned data set. Figure 100 (Part 1 of 2). NEW, MEMBER, and NAME Parameter 300 MVS/370 Utilities Input Data set organization output Data set Organization Partitioned Sequential With any function statement, use NAME to specify the name of the member in the partitioned data set defined by the SYSUT1 DD statement. Use NEW=PS to specify the change in organization from partitioned to sequential. (The name and file sequence number, if any, assigned to the output master data set are specified in the SYSUT2 DD statement.) Sequential Partitioned With any function statement, use MEMBER to assign a name to the member to be placed in the partitioned data set defined by the SYSUT2 DD statement. Use NEW=PO to specify the change in organization from sequential to partitioned. Parameter Combinations Figure 100 (Part 2 of 2). NEW, MEMBER, and NAME Parameter Detail statement A detail statement is used with a function statement for certain applications, such as deleting or renumbering selected logical records. The NUMBER detail statement specifies, when coded with a CHANGE function statement, that the sequence number of one or more logical records is changed. It specifies, when coded with an ADD or REPL function statement, the sequence numbers to be assigned to the records within new or replacement members or data sets. When used with an ADD or REPL function statement, no more than one NUMBER detail statement is permitted for each ADD or REPL function statement. If NUMBER is coded, it must be preceded and followed by at least one blank. The DELETE detail statement specifies, when coded with a CHANGE function statement, that one or more logical records are to be deleted from a member or data set. If DELETE is coded, it must be preceded and followed by at least one blank. Logical records cannot be deleted in part; that is, a COLUMN parameter specification in a function statement is not applicable to records that are to be deleted. Each specific sequence number is handled only once in any single operation. IEBUPDTE Program 301 The format of a detail statement is: ./[label CNUMBERIDELETE1[SEQI=ccccccccIALLJ [,SEQ2=ccccccccJ [,NEW1=cccccccc] [,INCR=cccccccc] [,INSERT=YESJ Detail Restrictions When INSERT=YES is coded: 302 • The SEQ! parameter specifies the existing logical record after which the insertion is made. SEQ1=All cannot be coded. • The SEQ2 parameter need not be coded. • The NEW! parameter assigns a sequence number to the first logical record to be inserted. If the parameter is alphameric, the SEQFlD=(ddl,ddl) parameter should be coded on the function statement. • The INCR parameter is used to renumber as much as is necessary of the member or data set from the point of the first insertion; the member or data set is renumbered until an existing logical record is found whose sequence number is equal to or greater than the next sequence number to be assigned. If no such logical record is found, the entire member or data set is renumbered. • Additional NUMBER detail statements, if any, must specify INSERT=YES. If a prior numbering operation renumbers the logical record specified in the SEQ1 parameter of a subsequent NUMBER detail statement, any NEWl or INCR parameter specifications in the latter NUMBER detail statement are overridden. The prior increment value is used to assign the next successive sequence numbers. If a prior numbering operation does not renumber the logical record specified in the SEQ1 parameter of a subsequent NUMBER detail statement, the latter statement must contain NEW1 and INCR specifications. • The block of data statements to be inserted must contain blank sequence numbers. • The insert operation is terminated when a function statement, a detail statement, an end-of-file indication, or a data statement containing a sequence number is encountered. • The SEQ1, SEQ2, and NEWl parameters (with the exception of SEQ1=All) specify eight (maximum) alphameric characters. The INCR parameter specifies eight (maximum) numeric characters. Only the significant part of a numeric sequence number need be coded; for example, SEQl=OOOOOOlO can be shortened to SEQl=10. If, however, the numbers are alphameric, the alphabetic characters must be specified; for example, SEQl=00ABC010 can be shortened to SEQ1=ABCOlO. MVS/370 Utilities Data statement A data statement is used with a function statement, or with a function statement and a detail statement. It contains a logical record used as replacement data for an existing logical record, or new data to be incorporated in the output master data set. Each data statement contains one logical record, which begins in the first column of the data statement. The length of the logical record is equal to the logical record length (LRECL) specified for the output master data set. Each logical record contains a sequence number to determine where the data is placed in the output master data set (except when INSERT=YES is specified). When used with a CHANGE function statement, a data statement contains new or replacement data, as follows: • If the sequence number in the data statement is identical to a sequence number in an existing logical record, the data statement replaces the existing logical record in the output master data set. • If no corresponding sequence number is found within the existing records, the data statement is inserted in the proper collating sequence within the output master data set. (For proper execution of this function, all records in the old master data set must have a sequence number.) • If a data statement with a sequence number is used and INSERT=YES was specified, the insert operation is terminated. IEBUPDTE will continue processing if this sequence number is at least equal to the next old master record (record following the referred to sequence record). When used with an ADD or REPL function statement, a data statement contains new data to be placed in the output master data set. Sequence numbers within the old master data set are assumed to be in ascending order. No validity checking of sequence numbers is performed for data statements or existing records. Sequence numbers in data statements must be in the same relative position as sequence numbers in existing logical records. (Sequence numbers include leading zeros and are assumed to be in columns 73 through 80; if the numbers are in columns other than these, the length and relative position must be specified in a SEQFLD parameter within a preceding function statement.) LABEL statement The LABEL statement indicates that the following data statements (called label data statements) are to be treated as user labels. These new user labels are placed on the output data set. The next function statement indicates to IEBUPDTE that the last label data statement of the group has been read. IEBUPDTE Program 303 The format of the LABEL statement is: LABEL There can be no more than two LABEL statements per execution of IEBUPDTE. There can be no more than eight label data statements following any LABEL statement. The first 4 bytes of each 80-byte label data statement must contain "UHLn" or "UTLn," where n is 1 through 8, for input header or input trailer labels respectively, to conform to IBM standards for user labels. Otherwise, data management will overlay the data with the proper four characters. When IEBUPDTE encounters a LABEL statement, it reads up to eight data statements and saves them for processing by user output label routines. If there are no such routines, the saved records are written by OPEN or CLOSE as user labels on the output data set. If there are user output label processing routines, IEBUPDTE passes a parameter list to the output label routines. (This parameter list is described fully in Appendix A, "Exit Routine Linkage" on page 438.) The label buffer contains a label data record which the user routine can process before the record is written as a label. If the user routine specifies (via return codes to IEBUPDTE) more entries than there are label data records, the label buffer will contain meaningless information for the remaining entries to the user routine. The position of the LABEL statement in the SYSIN data set, relative to any function statements, indicates the type of user label that follows the LABEL statement: • To create output header labels, place the LABEL statement and its associated label data statements before any function statements in the input stream. A function statement, other than LABEL, must follow the last label data statement of the group. • To create output trailer labels, place the LABEL statement and its associated label data statements after any function statements in the input stream, but before the ENDUP statement. The ENDUP statement is not optional in this case. It must follow the last label data statement of the group if IEBUPDTE is to create output trailer labels. When UPDATE=INPLACE is specified in a function statement, user input header labels can be updated by user routines, but input trailer and output labels cannot be updated by user routines. User labels cannot be added or deleted. User input header labels are made available to user routines by the label buffer address in the parameter list. (See Appendix C, "Processing User Labels" on page 446 for a complete discussion of the linkage between utility programs and user label processing routines.) The return codes when UPDATE=INPLACE is used differ slightly from the standard codes discussed in Appendix C as follows. 304 MVS/370 Utilities Codes Meaning 00 (00 hex) The system resumes normal processing; any additional user labels are ignored. 04 (04) The system does not write the label. The next user label is read into the label buffer area and control is returned to the user's routine. If there are no more user labels, the system resumes normal processing. 08 (08) The system writes the user labels from the label buffer area and resumes normal processing. 12 (OC) The system writes the user label from the label buffer area, then reads the next input label into the label buffer area and returns control to the label processing routine. If there are no more user labels, the system resumes normal processing. Figure 101. UPDATE=INPLACE Return Codes If the user wants to examine the replaced labels from the old master data set, he must: 1. Specify an update of the old master by coding the UPDATE=INPLACE parameter in a function statement. 2. Include a LABEL statement in the input data set for either header or trailer labels. 3. Specify a corresponding user label routine. If the above conditions are met, fourth and fifth parameter words will be added to the standard parameter list. The fourth parameter word is not now used; the fifth contains a pointer to the replaced label from the old master. In this case, the number of labels supplied in the SYSIN data set must not exceed the number of labels on the old master data set. If the user specifies, via return codes, more entries to the user's header label routine than there are labels in the input stream, the first parameter will point to the current header label on the old master data set for the remaining entries. In this case, the fifth parameter is meaningless. ALIAS Statement The ALIAS statement is used to create or retain an alias in an output (partitioned) directory. The ALIAS statement can be used with any of the function statements. Multiple aliases can be assigned to each member, up to a maximum of 16 aliases. If an ALIAS statement specifies a name that already exists on the data set, the original TTR (track record) of that directory entry will be destroyed. ALIAS must be preceded and followed by at least one blank. If ALIAS statements are used, they must follow the data statements, if any, in the input stream. The format of the ALIAS statement is: I·/[labell ALIAS NAME=cccccccc IEBUPDTE Program 305 ENDUP statement An ENDUP statement is used to indicate the end of SYSIN input to this job step. It serves as an end-of-data indication if there is no other preceding delimiter statement. The ENDUP statement follows the last group of SYSIN control statements. ENDUP must be preceded and followed by at least one blank. The ENDUP statement must follow the last label data statement if IEBUPDTE is used to create output trailer labels. The format of the ENDUP statement is: ENDUP Parameters Applicable Control statements ADD REPL CHANGE REPRO NUMBER DELETE LABEL ALIAS ENDUP ./ Description of Parameters is required for each utility control statement and must appear in columns 1 and 2. COLUMN CHANGE COLUMN=nnll INCR NUMBER INCR=cccccccc specifies an increment value used for assigning successive sequence numbers to new or replacement logical records, or specifies an increment value used for renumbering existing logical records. INHDR ADD REPL CHANGE REPRO INHDR=cccccccc specifies the name of the user routine that handles any user input (SYSUT1) header labels. This parameter is valid only when a sequential data set is being processed. 306 MVS/370 Utilities specifies, in decimal, the starting column of a data field within a logical record image. The field extends to the end of the image. Within an existing logical record, the data in the defined field is replaced by data from a subsequent data statement. See "Function Restrictions" on page 299 for restrictions on COLUMN. Parameters APplicable Control statements Description of Parameters INSERT CHANGE NUMBER INSERT=YES INTLR ADD REPL CHANGE REPRO INTLR=cccccccc label ADD REPL CHANGE REPRO label NU~1BER specifies the insertion of a block of logical records. The records, which are data statements containing blank sequence numbers, are numbered and inserted in the output master data set. INSERT is valid only when coded with both a CHANGE function statement and a NUMBER detail statement. SEQ1, NEW1, and INCR are required on the first NUMBER detail statement. See "Detail Restrictions" on page 302 for more information on INSERT=YES. specifies the name of the user routine that handles any user input (SYSUT1) trailer labels. INTLR is valid only when a sequential data set is being processed, but not when UPDATE=INPLACE is coded. specifies an optional label for the statement that begins in column 3 and extends no further than column 10. DELETE LABEL ALIAS ENDUP LEVEL ADD REPL CHANGE REPRO LEVEL=hh LIST ADD REPL CHANGE REPRO LIST=ALL specifies the change (update) level in hexadecimal (OO-FF). The level number is recorded in the directory entry of the output member. This parameter is valid only when a member of a partitioned data set is being processed. LEVEL has no effect when SSI is specified. . specifies that the SYSPRINT data set is to contain the entire updated member or data set and the control statements used in its creation. Default: For old data sets, if LIST is omitted, the SYSPRINT data set contains modifications and control statements only. If UPDATE was specified, the entire updated member is listed only when renumbering has been done. For new data sets, the entire member or data set and the control statements used in its creation are always written to the SYSPRINT data set. IEBUPDTE Program 307 Parameters Applicable Control statements Description of Parameters MEMBER ADD REPL CHANGE REPRO MEMBER=cccccccc specifies a name to be assigned to the member placed in the partitioned data set defined by the SYSUT2 DD statement. MEMBER is used only when SYSUT1 defines a sequential data set, SYSUT2 defines a partitioned data set, and NEW=PO is specified. Refer to Figure 100 on page 300 for the use of MEMBER with NEW. NAME ADD REPL CHANGE REPRO ALIAS For the ALIAS statement: NAME=cccccccc specifies a 1- to 8-character alias name. For all other statements: NAME=cccccccc indicates the name of the member placed into the partitioned data set. The member name need not be specified in the DD statement itself. NAME must be provided to identify each input member. Refer to Figure 100 on page 300 for the use of NAME with NEW. This parameter is valid only when a member of a partitioned data set is being processed. NEW ADD REPL CHANGE REPRO NEU=POIPS specifies the organization of the old master data set and the organization of the updated output. NEW should not be specified unless the organization of the new master data set is different from the organization of the old master. Refer to Figure 100 on page 300 for the use of NEW with NAME and MEMBER. These values can be coded: PO PS NEW1 308 NUMBER MVS/370 Utilities specifies that the old master data set is a sequential data set, and that the updated output is to become a member of a partitioned data set. specifies that the old master data set is a partitioned data set, and that a member of that data set is to be converted into a sequential data set. NEUl=cccccccc specifies the first sequence number assigned to new or replacement data, or specifies the first sequence number assigned in a renumbering operation. A value specified in NEWl must be greater than a value specified in SEQ1 (unless SEQ1=ALL is specified, in which case this rule does not apply). Parameters Applicable Control statements Description of Parameters OUTHOR ADD REPL CHANGE REPRO OUTHDR=cccccccc specifies the name of the user routine that handles any user output (SYSUT2) header labels. OUTHOR is valid only when a sequential data set is being processed, but not when UPDATE=INPLACE is coded. OUTTLR ADD REPL CHANGE REPRO OUTTLR=cccccccc specifies the name of the user routine that handles any user output (SYSUT2) trailer labels. OUTTLR is valid only when a sequential data set is being processed, but not when UPDATE=INPLACE is coded. SEQ1 NUMBER DELETE SEQl=cccccccclALL specifies records to be renumbered, deleted, or assigned sequence numbers. These values can be coded: cccccccc specifies the sequence number of the first logical record to be renumbered or deleted. This value is not coded in a NUMBER detail statement that is used with an ADD or REPL function statement. When this value is used in an insert operation, it specifies the existing logical record after which an insert is to be made. It must not equal the number of a statement just replaced or added. Refer to the INSERT parameter for additional discussion. ALL SEQ2 NUMBER DELETE specifies a renumbering operation for the entire member or data set. ALL is used only when a CHANGE function statement and a NUMBER detail statement are used. ALL must be coded if sequence numbers are to be assigned to existing logical records having blank sequence numbers. If ALL is not coded, all existing logical records having blank sequence numbers. copied directly to the output master data set. When ALL is coded: (1) SEQ2 need not be coded and (2) one NUMBER detail statement is permitted per function statement. Refer to the INSERT parameter for additional discussion. SEQ2=cccccccc specifies the sequence number of the last logical record to be renumbered or deleted. SEQ2 is required on all DELETE detail statements. If only one record is to be deleted, the SEQ1 and SEQ2 specifications must be identical. SEQ2 is not coded in a NUMBER detail statement that is used with an ADD or REPL function statement. IEBUPDTE Program 309 Parameters SEQFlD Applicable Control statements ADD REPl CHANGE REPRO Description of Parameters SEQFLD=ddll(ddl,ddl) ddl specifies, in decimal, the starting column (up to column 80) and length (8 or less) of sequence numbers within existing logical records and subsequent data statements. Note that the starting column specification (dd) plus the length (1) cannot exceed the logical record length (lRECL) plus 1. Sequence numbers on incoming data statements and existing logical records must be padded to the left with enough zeros to fill the length of the sequence field. (ddl,ddl) may be used when an alphameric sequence number generation is required. The first ddl specifies the sequence number columns as above. The second ddl specifies, in decimal, the starting column (up to column 80) and length (8 or less) of the numeric portion of the sequence numbers in subsequent NUMBER statements. This information is used to determine which portion of the sequence number specified by the NEWl parameter may be increased and which portiones) should be copied to generate a new sequence number for inserted or renumbered records. The numeric columns must fall within the sequence number columns specified (or defaulted) by the first ddl. Default: 738 is assumed, that is, an 8-byte sequence number beginning in column 73. Therefore, if existing logical records and subsequent data statements have sequence numbers in columns 73 through 80, this keyword need not be coded. SOURCE 310 ADD REPl CHANGE REPRO MVS/370 utilities SOURCE=x specifies user modifications when the ~ value is 0, or IBM modifications when the x value is 1. The source is recorded in thedirectory entry of the output member. This parameter is valid only when a member of a partitioned data set is being processed. SOURCE has no effect when 551 is specified. Parameters APplicable Control statements Description of Parameters 551 ADD REPl CHANGE REPRO SSI=hhhhhhhh TOTAL ADD REPl CHANGE REPRO TOTAL=(routinename2size) specifies that exits to a user's routine are to be provided prior to writing each record. This parameter is valid only when a sequential data set is being processed. These values are coded: specifies eight hexadecimal characters of system status information (SSI) to be placed in the directory of the new master data set as four packed decimal bytes of user data. This parameter is valid only when a member of a partitioned data set is being processed. SSI overrides any lEVEL or SOURCE parameter given on the same function statement. routinename specifies the name of the user's totaling routine. specifies the number of bytes required for the user's data. The size should not exceed 32K, nor be less than 2 bytes. In addition, the keyword OPTCD=T must be specified for the SYSUT2 (output) DD statement. Refer to Appendix A, "Exit Routine linkage" on page 438 for a discussion of linkage conventions for user routines. UPDATE CHANGE UPDATE=INPLACE specifies that the old master data set is to be updated within the space it actually occupies. The ~ld master data set must reside on a direct access device. UPDATE=INPLACE is valid only when coded with CHANGE~ No other function statements (ADD, REPl, REPRO) may be in the same job step. See "Function Restrictions" on page 299 for restrictions on using UPDATE=INPlACE. See "LABEL Statement" on page 303 for information on updating user input header labels. IEBUPDTE EXAMPLES The following examples illustrate some of the uses of IEBUPDTE. Figure 102 can be used as a quick-reference guide to IEBUPDTE examples. The numbers in the "Example" column point to examples that follow. IEBUPDTE Program 311 Operation Data set Organization Device comments Example ADD and REPL Partitioned Disk SYSUTI and SYSUT2 DD statements define the same data set. A JCL procedure residing in the control data set is stored as a new member of a procedure library (PROCLIB). Another JCL procedure, also in the IEBUPDTE control data set, is to replace an existing member in PROCLIB. 1 CREATE a partitioned library Partitioned Disk Input data is in the control data set. Output partitioned data set is to contain three members. 2 CREATE a partitioned data set Partitioned Disk Input from control data set and from existing partitioned data set. Output partitioned data set is to contain three members. 3 UPDATE INPLACE and renumber Partitioned Disk Input data set is considered to be the output data set as well; therefore, no SYSUT2 DD statement is required. 4 CREATE and DELETE Partitioned, Sequential Disk and Tape Sequential master is created from partitioned disk input. Selected records are to be deleted. Blocked output. 5 CREATE, DELETE, and UPDATE Sequential, Partitioned Tape and Disk Partitioned data set is created from sequential input. Records are to be deleted and updated. Sequence numbers in columns other than 73 through 80. One member is placed in the output data set. 6 INSERT Partitioned Disk Block of logical records is inserted into an existing member. SYSUTI and SYSUT2 DD statements define the same data set. 7 INSERT Partitioned Disk Two blocks of logical records are to be inserted into an existing member. SYSUTI and SYSUT2 DD statements define the same data set. Sequence numbers are alphameric. 8 CREATE Sequential Card Reader and Disk Sequential data set with user labels is to be created from card input. 9 Figure 102 (Part 1 of 2). IEBUPDTE Example Directory 312 MVS/370 Utilities Operation Data set Organization --Device Comments Example ,-, COPY Sequential Disk Sequential data set is copied from one direct access volume to another; user labels can be processed by exit routines. 10 CREATE Partitioned Disk Create a new generation. 11 Figure 102 (Part 2 of 2). IEBUPDTE Example Directory Examples that use disk or tape in place of actual device numbers must be changed before use. See "DASD and Tape Device Support" on page 3 for valid device number notation. IEBUPDTE EXAMPLE I In this example, two procedures are to be placed in the cataloged procedure library, SYS1.PROCLIB. The example assumes that the two procedures can be accommodated within the space originally allocated to the procedure library. //UPDATE JOB 09#660,SMITH // EXEC PGM=IEBUPDTE,PARM=MOD //SYSPRINT DO SYSOUT=A //SYSUTl DD DSNAME=SYS1.PROCLIB,DISP=OLD //SYSUT2 DD DSNAME=SYS1.PROCLIB,DISP=OLD //SYSIN DD DATA ./ ADD LIST=ALL,NAME=ERASE,LEVEL=01,SOURCE=O ./ NUMBER NEW1=10,INCR=10 //ERASE EXEC PGM=IEBUPDTE //DD1 DO UNIT=disk,DISP=(OlD,KEEP),VOlUME=SER=111111 //SYSPRINT DD SYSOUT=A ./ REPL LIST=ALL,NAME=LISTPROC ./ NUMBER NEW1=10,INCR=lO //LIST EXEC PGM=IEBGENER //SYSPRINT OD SYSOUT=A //SYSUTl DD DISP=SHR, // DSN=SYSl.PROCLIB(&MEMBER) //SYSUT2 DD SYSOUT=A, // DCB=(RECFM=F,BLKSIZE=aO) //SYSIN DD DATA (Data statements) ./ ENDUP /* The control statements are discussed below: • SYSUTl and SYSUT2 DD define the SYSl.PROClIB data set, which is assumed to be cataloged. • SYSIN DD defines the control data set, which follows in the input stream. The data set contains the utility control statements and the data to be placed in the procedure library. • The ADD function statement indicates that records (data statements) in the control data set are to be placed in the output. The newly created procedure, ERASE, is listed in the message data set. IEBUPDTE Program 313 The ADD function will not take place if a member named ERASE already exists in the new master data set referenced by SYSUT2. • The first NUMBER detail statement indicates that the new and replacement procedures are to be assigned sequence numbers. The first record of each procedure is assigned sequence number 10; the next record is assigned sequence number 20, and so on. • The REPL function statement indicates that records (data statements) in the control data set are to replace an already existing member. The member is stored in the new master data set referenced by SYSUT2. The REPL function will only take place if a member named LISTPROC already exists in the old master data set referenced by SYSUTI. • The ERASE EXEC statement marks the beginning of the first new procedure. • The REPL function statement indicates that records (data statements) in the control data set are to replace an already existing member. The member is stored in the new master data set referenced by SYSUT2. The REPL function will only take place if a member named LISTPROC already exists in the old master data set referenced by SYSUTI. • The second NUMBER detail statement is a duplicate of the first. • The LIST EXEC statement marks the beginning of the second new procedure. • The ENDUP statement marks the end of the SYSIN DD input data. IEBUPDTE EXAMPLE 2 In this example, a three-member partitioned library is created. The input data is contained solely in the control data set. //UPDATE JOB EXEC //SYSPRINT DD //SYSUT2 DD // // // //SYSIN ./ DD ADD 09#770,SMITH PGM=IEBUPDTE,PARM=NEW SYSOUT=A DSNAME=OUTLIB,UNIT=disk,DISP=(NEW,KEEP), VOLUME=SER=111112,SPACE=(TRK,(SO,,10», DCB=(RECFM=F,LRECL=80,BLKSIZE=80) DATA NAME=MEMB1,LEVEL=00,SOURCE=0,LIST=ALL (Data statements, sequence numbers in columns 73 through 80) ./ ADD NAME=MEMB2,LEVEL=00,SOURCE=0,LIST=All (Data statements, sequence numbers in columns 73 through 80) ./ ADD NAME=MEMB3,lEVEl=00,SOURCE=0,LIST=All (Data statements, sequence numbers in columns 73 through 80) ./ ENDUP /* The control statements are discussed below: • 314 MVS/370 utilities SYSUT2 DD defines the new partitioned master, QUTlIS. Enough space is allocated to allow for subsequent modifications without creating a new master data set. • SYSIH DD defines the control data set, which follows in the input stream. The data set contains the utility control statements and the data to be placed as three members in the output partitioned data set. • The ADD function statements indicate that subsequent data statements are to be placed as members in the output partitioned data set. Each ADD function statement specifies a member name for subsequent data and indicates that the member and control statement is listed in the message data set. • The data statements contain the data to be placed in each output partitioned data set. • ENDUP signals the end of control data set input. Because sequence numbers (other than blank numbers) are included within the data statements, no NUMBER detail statements are included in the example. IEBUPDTE EXAMPLE 3 In this example, a three-member, partitioned data set (NEWMClIB) is created. The data set will contain: • Two members (ATTACH and DETACH) copied from an existing partitioned data set (SYS1.MAClIB). • A new member (EXIT), which is contained in the control data set. IIUPDATE JOB EXEC IISYSPRINT DD //SYSUTl DD IISYSUT2 DD II II II IISYSIN .1 .1 .1 .1 DD REPRO REPRO ADD NUMBER 091770,SMITH PGM=IEBUPDTE,PARM=MOD SYSOUT=A DSNAME=SYS1.MAClIB,DISP=SHR,UNIT=d;sk DSNAME=NEWMClIB,VOLUME=SER=111112,UNIT=d;sk, DISP=(NEW,KEEP),SPACE=(TRK,(100,,10», DCB=(RECFM=F,LRECl=80,BlKSIZE=80) DATA NAME=ATTACH,lEVEL=OO,SOURCE=1,LIST=All NAME=DETACH,LEVEL=OO,SOURCE=l,LIST=All NAME=EXIT,LEVEl=OO,SOURCE=l,LIST=All NEW1=10,INCR=100 (Data records for EXIT member) .1 ENDUP /* The control statements are discussed below: • SYSUTl DD defines the input partitioned data set SYS1.MACLIB, which is assumed to be cataloged. • SYSUT2 DD defines the output partitioned data set NEWMClIB. Enough space is allocated to allow for subsequent modifications without creating a new master data set. • SYSIN DD defines the control data set, which follows in the input stream. • The REPRO function statements identify the existing input members (ATTACH and DETACH) to be copied onto the output data set. These members are also listed in the message data set (since lIST=AlL is specified). IEBUPDTE Program 315 • The ADD function statement indicates that records (subsequent data statements) are to be placed as a member in the output partitioned data set, called EXIT. The data statements are to be listed in the message data set. • The NUMBER detail statement assigns sequence numbers to the data statements. (The data statements contain blank sequence numbers in columns 73 through 80.) The first record of the output member is assigned sequence number 10; subsequent records are incremented by 100. • ENDUP signals the end of SYSIN data. Note that the three named input members (ATTACH, DETACH, and EXIT) do not have to be specified in the order of their collating sequence in the old master. IEBUPDTE EXAMPLE 4 In this example, a member (MODMEMB) is updated within the space it actuallY occupies. Two existing logical records are replaced, and the entire member is renumbered. //UPDATE JOB EXEC //SYSPRINT DD //SYSUTI DD // // //SYSIN DD ./ CHANGE ./ NUMBER 09#770,SMITH PGM=IEBUPDTE,PARM=MOD SYSOUT=A DSNAME=PDS,UNIT=disk,DISP=(OlD,KEEP), VOlUME=SER=111112 *NAME=MODMEMB,lIST=All,UPDATE=INPlACE SEQl=All,NEWl=10,INCR=5 (Data statement 1, sequence number 00000020) (Data statement 2, sequence number 00000035) /* The control statements are discussed below: 316 • SYSUTI DD defines the partitioned data set that is updated in place. (Note that the member name need not be specified in the DD statement.) • SYSIN DD defines the control data set, which follows in the input stream. • The CHANGE function statement indicates the name of the member to be updated (MODMEMB) and specifies the UPDATE=INPlACE operation. The entire member is listed in the message data set. Note that, as renumbering is being done, and since UPDATE=INPlACE was specified, the listing would have been provided even if the lIST=AlL parameter had not been specified. See the lIST parameter for more information. • The NUMBER detail statement indicates that the entire member is to be renumbered, and specifies the first sequence number to be assigned and the increment value (5) for successive sequence numbers. • The data statements replace existing logical records having sequence numbers of 20 and 35. MVS/370 Utilities IEBUPDTE EXAMPLE 5 In this example, a new master sequential data set is created from partitioned input and selected logical records are deleted. //UPDATE JOB EXEC //SYSPRINT DD //SYSUTI DD // // //SYSUT2 DD // // //SYSIH DD ./ CHANGE 09#770,SMITH PGM=IEBUPDTE,PARM=MOD SYSOUT=A DSNAME=PARTDS,UNIT=disk,DISP=(OLD,KEEP), VOLUME=SER=111112 DSNAME=SEQDS,UNIT=tape,LABEL=(2,Sl), DISP=(,KEEP),VOlUME=SER=001234, DCB=(RECFM=FB,LRECL=80,BlKSIZE=2000) *NEW=PS,NAME=OLDMEMBI (Data statement 1, sequence number 00000123) ./ DELETE (Data statement 2, sequence number 00000224) /* The control statements are discussed below: • SYSUT1 DD defines the input partitioned data set PARTDS, which resides on a disk volume. • SYSUT2 DD defines the output sequential data set, SEQDS. The data set is written as the second data set on a tape volume. • SYSIN DD defines the control data set, which follows in the input stream. • CHANGE identifies the input member (OlDMEMBl) and indicates that the output is a sequential data set (NEW=PS). • The first data statement replaces the logical record whose sequence number is identical to the sequence number in the data statement (00000123). If no such logical record exists, the data statement is incorporated in the proper sequence within the output data set. • The DELETE detail statement deletes logical records having sequence numbers from 223 through 246, inclusive. • The second data statement is inserted in the proper sequence in the output data set, since no logical record with the sequence number 224 exists (it was deleted in the previous statement). Note that only one member can be used as input when converting to sequential organization. IEBUPDTE EXAMPLE 6 In this example, a member of a partitioned data set is created from sequential input and existing logical records are updated. IEBUPDTE Program 317 //UPDATE // //SYSPRIHT //SYSUTI JOB EXEC DD DD // //SYSUT2 DD // // //SYSIH DD ./ CHANGE ./ 091770,SMITH PGM=IEBUPDTE,PARM=MOD SYSOUT=A DSNAME=OlDSEQDS,UNIT=tape, DISP=(OLD,KEEP),VOLUME=SER=001234 DSNAME=HEWPART,UHIT=disk,DISP=(,KEEP), VOLUME=SER=111112,SPACE=(TRK,(10,S,S», DCB=(RECFM=F,LRECL=80,BLKSIZE=80) 72 *NEW=PO,MEMBER=PARMEM1,LEVEL=01, SEQFLD=60S,COLUMH=40,SOURCE=0 C (Data statement 1, sequence number 00020) ./ DELETE SEQl=220,SEQ2=2S0 (Data statement 2, sequence number 00230) (Data statement 3, sequence number 00260) ./ ALIAS NAME=MEMBI /* The control statements are discussed below: 318 • SYSUTI DD defines the input sequential data set (OLDSEQDS). The data set resides on a tape volume. • SYSUT2 DD defines the output partitioned data set (HEWPART). Enough space is allocated to provide for members that might be added in the future. • SYSIN DD defines the control data set, which follows in the input stream. • The CHANGE function statement identifies the output member (PARMEMl) and indicates that a conversion from sequential input to partitioned output is made. The SEQFLD parameter indicates that a S-byte sequence number is located in columns 60 through 64 of each data statement. The COLUMN=40 p.arameter spec; fi es the starti ng column of a fi eid (wi thi n subsequent data statements) from which replacement information is obtained. SOURCE=O indicates that the replacement information is provided by the user. • The first data statement is used as replacement data. Columns 40 through 80 of the statement replace columns 40 through 80 of the corresponding logical record. If no such logical record exists, the entire card image is inserted in the output data set member. • The DELETE detail statement deletes all of the logical records having sequence numbers from 220 through 250. • The second data statement, whose sequence number falls within the range specified in the DELETE detail statement above, is' incorporated in its entirety in the output data set member. • The third data statement, which is beyond the range of the DELETE detail statement, is treated in the same manner as the first data statement. • ALIAS assigns the alias name MEMBI to the output data set member PARMEMI. MVS/370 Utilities IEBUPDTE EXAMPLE 7 In this example, a block of three logical records is inserted into an existing member, and the updated member is placed in the existing partitioned data set. //UPDATE // //SYSPRINT //SYSUTI JOB EXEC DO DO // //SYSUT2 DD // //SYSIN DO ./ CHANGE ./ HUMBER 09#770,SMITH PGM=IEBUPDTE,PARM=MOD SYSOUT=A DSNAME=PDS,UNIT=disk,DISP=COLD,KEEP), VOlUME=SER=111112 DSNAME=PDS,UNIT=disk,DISP=COLD,KEEP), VOLUME=SER=111112 *NAME=RENUM,LIST=ALL,LEVEL=Ol,SOURCE=O SEQ1=15,NEW1=20,INCR=5,INSERT=YES (Data statement 1) (Data statement 2) (Data statement 3) The control statements are discussed below: • SYSUTI and SYSUT2 DO define the partitioned data set CPDS). • SYSIN DO defines the control data set, which follows in the input stream. • The CHANGE function statement identifies the input member RENUM. The entire member is listed in the message data set. • The NUMBER detail statement specifies the insert operation and controls the renumbering operation as described below. • The data statements are the logical records to be inserted. (Sequence numbers are assigned when the data statements are inserted.) In this example, the existing logical records have sequence numbers 10, 15, 20, 25, and 30. Sequence numbers are assigned by the NUMBER detail statement, as follows: 1. Data statement 1 is assigned sequence number 20 (NEW1=20) and inserted after existing logical record 15 (SEQl=15). 2. Data statements 2 and 3 are assigned sequence numbers 25 and 30 (IHCR=5) and are inserted after data statement 1. 3. Existing logical records 20,· 25, and 30 are assigned sequence numbers 35, 40, and 45, respectively. Figure 103 on page 320 shows existing sequence numbers, data statements inserted, and the resultant new sequence numbers. IEBUPDTE Program 319 Sequence Numbers and Data statements Inserted New sequence Numbers 10 10 15 15 Data statement 1 Data statement 2 Data statement 3 20 25 30 20 25 30 35 40 45 Figure 103. Example of Reordered Sequence Numbers IEBUPDTE EXAMPLE 8 In this example, two blocks (three logical records per block) are inserted into an existing member, and the member is placed in the existing partitioned data set. A portion of the output member is also renumbered. //UPDATE // //SYSPRINT //SYSUTI JOB EXEC DO DO // //SYSUT2 DO // //SYSIN DO ./ CHANGE ./ ./ NUMBER 09#770,SMITH PGM=IEBUPDTE,PARM=MOD SYSOUT=A DSNAME=PDS,UNIT=disk,DISP=(OLD,KEEP), VOlUME=SER=111112 DSNAME=PDS,UNIT=disk,DISP=(OlD,KEEP), VOlUME=SER=111112 72 *. NAME=REHUM,lIST=AlL,lEVEL=Ol,SOURCE=O, SEQFLD=(765,783) SEQl=AA015,NEWl=AA020,INCR=5,INSERT=YES C (Data statement 1) (Data statement 2) (Data statement 3) NUMBER ./ (Data (Data (Data (Data statement statement statement statement SEQl=AA030,INSERT=YES 4) 5) 6) 7, sequence number AA035) /*. The control statements are discussed below: 320 • SYSUTI and SYSUT2 DD define the partitioned data set PDS. • SYSIN DO defines the control data set, which follows in the input stream. • The CHANGE function statement identifies the input member RENUM. The entire member is listed in the message data set. • The NUMBER detail statements specify the insert operations (INSERT=YES) and control the renumbering operation as described below. MVS/370 Utilities • Data statements 1, 2, 3, and 4, 5, 6 are the blocks of logical records to be inserted. Because they contain blank sequence numbers, sequence numbers are assigned when the data statements are inserted. • Data statement 7, since it contains a sequence number, terminates the insert operation. The sequence number is identical to the number on the next record in the old master data set; consequently, data statement 7 will replace the equally numbered old "master record in the output data set. The existing logical records in this example have sequence numbers AAOI0, AA015, AA020, AA025, AA030, AA035, AA040, AA045, AA050, BBOI0, and BB015. The insert and renumbering operations are performed as follows: 1. Data statement 1 is assigned sequence number AA020 (NEW1=AA020) and inserted after existing logical record AA015 (SEQl=AA015). 2. Data statements 2 and 3 are assigned sequence numbers AA025 and AA030 (INCR=5) and are inserted after data statement 1. 3. Existing logical records AA020, AA025, and AA030 are assigned sequence numbers AA035, AA040, and AA045, respectively. 4. Data statement 4 is assigned sequence number AA050 and inserted. (The SEQl=AA030 specification in the second NUMBER statement places this data statement after existing logical record AA030, which has become logical record AA045.) 5. Data statements 5 and 6 are assigned sequence numbers AA055 and AA060 and are inserted after data statement 4. 6. Existing logical record AA035 is replaced by data statement 7, which is assigned sequence number AA065. 7. The remaining logical records in the member are renumbered until logical record BBOI0 is encountered. Because this record has a sequence number higher than the next number to be assigned, the renumbering operation is terminated. Figure 104 on page 322 shows existing sequence numbers, data statements inserted, and the new sequence numbers. Note that the sequence numbers are alphameric. IEBUPDTE Program 321 Sequence Numbers and Data Statements Inserted New Sequence Numbers AAOIO AA015 Data statement Data statement Data statement AA020 AA025 AA030 Data statement Data statement Data statement Data statement AA035 AA040 AA045 AA050 BB010 B8015 AAOIO AA015 AA020 AA025 AA030 AA035 AA040 AA045 AA050 AA055 AA060 AA065 AA065 AA070 AA070 AA075 BB010 8B015 1 2 3 4 5 6 7 Figure 104. Reordered Sequence Numbers. IEBUPDTE EXAMPLE 9 In this example, IEBUPDTE is used to create a sequential data set from card input. User header and trailer labels, also from the input stream, are placed on this sequential data set. //LABEL //CREATION //SYSPRINT //SYSUT2 JOB EXEC DO DO // // //SYSIN ./ DO LABEL ,MSGLEVEL=l PGM=IEBUPDTE,PARM=NEW SYSOUT=A DSNAME=LABEL,VOLUME=SER=123456,UNIT=disk, DISP=(NEW,KEEP),LABEL=(,SUL), SPACE=(TRK,(15,3» * (First header label) (Last header label) ./ ADD LIST=AlL,OUTHDR=ROUTINE1,OUTTLR=ROUTINE2 (First input data record) (Last input data record) ./ LABEL (First trailer label) (Last trailer label) ./ /* 322 MVS/370 Utilities ENDUP The control statements are discussed below: • SYSUT2 DD defines and allocates space for the output sequential data set, called LABEL, which resides on a disk volume. • SYSIN DD defines the control data set, which follows in the input stream. (This control data set includes the sequential input data set and the user labels, which are on cards.) • The first LABEL statement identifies the SO-byte card images in the input stream which will become user header labels. (They can be modified by the user's header-label processing routine specified on the ADD function statement.) • The ADD function statement indicates that the data statements that follow are placed in the output data set. The newly created data set is listed in the message data set. User output header and output trailer routines are to be given control prior to the writing of header and trailer labels. • The second LABEL statement identifies the 80-byte card images in the input stream which will become user trailer labels. (They can be modified by the user's trailer-label processing routine specified on the ADD function statement.) • ENDUP signals the end of the control data set. IEBUPDTE EXAMPLE 10 In this example, IEBUPDTE is used to copy a sequential data set from one DASD volume to another. User labels are processed by user exit routines. //LABElS JOB EXEC //SYSPRINT DO //SYSUTI DO // // //SYSUT2 00 // // //SYSIN OD // ,MSGLEVEL=l PGM=IEBUPDTE,PARM=(MOD"MMMMMM) SYSOUT=A DSNAME=OLDMAST,DISP=OLD,LABEL=(,SUL), VOLUME=SER=111111,UNIT=disk DSNAME=NEWMAST,DISP=(NEW,KEEP),LABEL=(,SUl), UNIT=disk,VOLUME=SER=XB182, SPACE=(TRK,(5,lO» DSNAME=INPUT,DISP=OlD,lABEl=(,SUl), VOLUME=SER=222222,UNIT=disk /* The control statements are discussed below: • SYSUTI DO defines the input sequential data set, called OlDMAST, which resides on a disk volume. • SYSUT2 DD defines the output sequential data set, called NEWMAST, which will reside on a disk volume. • SYSIN DO defines the control data set. The contents of this disk-resident data set in this example are: ./ ./ ./ REPRO ENDUP LIST=AlL,INHDR=SSSSSS,INTLR=TTTTTT, OUTHDR=XXXXXX,OUTTLR=YYYYYY IEBUPDTE Program C 323 • The REPRO function statement indicates that the existing input sequential data set is copied to the output data set. This output data set is listed on the message data set. The user's label processing routines are to be given control when header or trailer labels are encountered on either the input or the output data set. • ENDUP indicates the end of the control data set. IEBUPDTE EXAMPLE 11 In this example, a partitioned generation data set consisting of three members is used as source data in the creation of a new generation data set. IEBUPDTE is also used to add a fourth member to the three source members and to number the new member. The resultant data set is cataloged as a new generation data set. JOB EXEC //SYSPRINT DD //SYSUTI DD //SYSUT2 DD // // PGM=IEBUPDTE,PARM=MOD SYSOUT=A DSNAME=A.B.CCO),DISP=OlD DSNAME=A.B.CC+l),DISP=C,CATlG),UNIT=disk, // VOlUME=SER=111111,SPACE=CTRK,C100,10,10», // DCB=(RECFM=FB,lRECl=80,BlKSIZE=800) //SYSIN DD DATA ./ REPRO NAME=MEMl,lEVEl=OO,SOURCE=O,lIST=All ./ REPRO NAME=MEM2,lEVEl=OO,SOURCE=0,lIST=All ./ REPRO NAME=MEM3,lEVEl=OO,SOURCE=O,lIST=AlL ./ ADD NAME=MEM4,lEVEl=OO,SOURCE=O,lIST=All ./ NUMBER NEW1=10,INCR=5 Cdata cards comprising MEM4) ./ ENDUP /* The control statements are discussed below: • SYSUT1 DD defines the latest generation data set, which is used as source data. • SYSUT2 DD defines the new generation data set, which is created from the source generation data set and from an additional member included as input and data. • SYSIN DD defines the control data set, which follows in the input stream. • The REPRO function statements reproduce the named source members in the output generation data set. • The ADD function statement specifies that the data cards following the input stream be included as MEM4. • The NUMBER detail statement indicates that the new member is to have sequence numbers assigned in columns 73 through 80. The first record is assigned sequence number 10. The sequence number of each successive record is increased by 5. • ENDUP signals the end of input card data. This example assumes that a model data set control block (DSCB) exists on the catalog volume on which the generation data group index was built. 324 MVS/370 Utilities IEHATLAS PROGRAM IEHATLAS is a system utility used with direct access devices when a defective track is indicated by a data check or missing address marker condition. IEHATLAS can be used to locate and assign an alternate track to replace the defective track. Usable data records on the defective track are retrieved and transferred to the alternate track. A replacement for the bad record is created from data supplied by the user and placed on the alternate track. In a simple application, IEHATLAS is used as a separate job after an abnormal termination of a problem program. Input data necessary for execution of IEHATLAS--the address of the defective track and replacement records--may be obtained from the dump and from backup data. A more complex use of IEHATLAS may involve the preparation of a user's SYNAD routine, which reconstructs the necessary input data and invokes IEHATLAS dynamically. When IEHATLAS is invoked, it attempts to write on the defective track. If the subsequent read-back check indicates that the attempt was successful, a message is issued on the SYSOUT device. If not, a supervisor call routine (SVC 86) is entered automatically. The SVC routine locates and assigns an alternate track. (If a defective track already has an alternate and an error occurs on that alternate, the SVC routine assigns the next available alternate.) All of the valid data records on the defective track are retrieved and transferred to the alternate track. The input record is written on the alternate track in the correct position to recover from the previous error. When a READ error occurs and a complete recovery is desired, see Data Facility Data Set Services: User's Guide and Reference for information on how to produce a listing of error data on a track. Using this data, the input data record for IEHATlAS can be created. The replace function can then be performed by executing IEHATLAS. IEHATlAS supports all current DASD, as listed under "DASD and Tape Device Support" on page 3 except the MSS staging packs and virtual volumes. INPUT AND OUTPUT IEHATLAS uses the following input: • A description of the count field of the invalid record on a defective track, specifying the cylinder, track, record, key, and data length (in hexadecimal notation). • An indication if WRITE special is needed. • A valid copy (in hexadecimal notation) of the bad record. IEHATlAS produces as output: • A message, issued on the SYSOUT device, containing the user's control information, the input record, and diagnostics. • The input record, written on either the original (defective) track or on an alternate track containing the usable data taken from the defective track. IEHATlAS Program 325 • The return parameter list (specifying a maximum of three error record numbers in hexadecimal when an unrecoverable error occurs). RETURN CODES IEHATlAS returns one of the following codes in register 15 when processing stops. Codes Meaning 00 (00 hex) Successful completion; IEHATlAS has assigned the data to an alternate track. 04 (04) The device does not have software-assignable alternate tracks. 08 (08) All the alternate tracks for the device have been assigned. 12 (OC) The requested main storage space is not available. 16 (10) There was an I/O error in the alternate track assignment after N attempts at assignment (where N=10% of the assignable alternate tracks for this device). 20 (14) The error is a condition other than a data check or missing address marker. 24 (18) There is an error in the Format 4 DSCB that prevents IEHATlAS from reading it. 28 (lC) The user-specified error record is the Format 4 DSCB, which IEHATlAS cannot handle because the alternate track information is unreliable. 32 (20) IEHATlAS cannot handle the error found in the count field of the last record on the track. 36 (24) There are errors in the home address or in record zero. 40 (28) IEHATlAS found one or more errors in record(s) and assigned an alternate track: 1. There was an error on an end-of-file record, 2. IEHATlAS encountered an error in the count field, 3. There were errors in more than three count fields. 48 (30) IEHATlAS found no errors on the track specified and so assigned no alternate track. 52 (34) Because of an I/O error, IEHATlAS cannot reexecute the user's channel program successfully. 56 (38) The system does not support track overflow. 60 (3C) The track address provided does not belong to the indicated data set. Figure 105. IEHATlAS Return Codes 326 MVS/370 Utilities CONTROL IEHATlAS ;s controlled by job control statements and utility control statements. The job control statements are used to execute or invoke IEHATlAS and to define the data sets used and produced by IEHATlAS. A utility control statement is used to specify whether the bad record is part of the volume table of contents. It is also used to indicate whether or not the WRITE special CCW command is to be used for track overflow records. JOB CONTROL STATEMENTS Figure 106 shows the job control statements for IEHATlAS. statement Use JOB Initiates the job. EXEC Specifies the program name (PGM=IEHATlAS) or, if the job control statements reside in a procedure library, the procedure name. SYSPRINT DO Defines a sequential data set that contains the output messages issued by IEHATlAS. SYSUTI 00 Defines the data set that contains the bad record. SYSIN 00 Defines the control data set, which contains the utility control statement and a copy of the corrected version of the bad record. Figure 106. Job Control Statements for IEHATlAS The block size for the SYSPRINT data set must be a multiple of 121. Any blocking factor can be specified. The block size for the SYSIN data set must be a multiple of 80. Any blocking factor can be specified. DISP=SHR must not be coded on the SYSUT1 DD statement. UTILITY CONTROL STATEMENTS Figure 107 shows the utility control statements for IEHATlAS. statement Use TRACK Specifies that an alternate track is to be assigned for a track that does not contain VTOC records. VTOC Specifies that an alternate track is to be assigned for a track that contains VTOC records. Figure 107. Utility Control Statements for IEHATlAS IEHATlAS Program 327 Input data (consisting of the hexadecimal replacement record) begins in column 1 immediately following the utility control data. Input data may continue through column 80. As many cards as necessary may be used to contain the replacement record. All columns (1 through 80) are used on the additional cards. IEHATlAS is designed to replace an error record with a copy of that record. It cannot be used to replace a record with another of a different key and/or data length. An end-of-file record cannot be changed; therefore, input for key and/or data fields are ignored. Continuation requirements for the utility control statements are described in "Continuing Utility Control Statements" on page 5. TRACK statement The TRACK statement is used to identify a defective track which does not contain VTOC records (that is, the defective record is not included in the volume table of contents). The TRACK statement must not begin in column 1. The format of the TRACK statement is: TRACK=bbbbcccchhhhrrkkdddd[S] VTOC statement The VTOC statement is used to identify a defective track which contains VTOC records (that is, the defective record is included in the volume table of contents). The VTOC statement must not begin in column 1. The format of the VTOC statement is: VTOC=bbbbcccchhhhrrkkdddd 328 MVS/370 Utilities Parameters Applicable Control statements bbbb TRACK VTOC cccc TRACK VTOC dddd TRACK VTOC hhhh TRACK VTOC rrkk TRACK VTOC S TRACK Description of Parameters This number must be all zeros. is the hexadecimal number of the cylinder in which the defective track was found. is the hexadecimal data length of the bad record. (When a WRITE special command is used, dddd is the length of the record segment.) dddd must not exceed the data length specified in the count field of the defective record. is the defective track number, in hexadecimal. is the record number and key length for the bad record, in hexadecimal. kk must not exceed the key length specified in the count field of the defective record. s is an optional byte of EBCDIC information that specifies that the WRITE special command is to be used (when the last record on the track overflows and must be completed elsewhere) . IEHATLAS Program 329 IEHATLAS EXAMPLES The following examples illustrate some of the uses of IEHATLAS. Figure 108 can be used as a quick-reference guide to IEHATLAS examples. The numbers in the "Example" column point to examples that follow. operation comments Example Get Alternate Track Write special is included because of a track overflow condition. 1 Get Alternate Track Alternate track assigned for a bad end-of-file record. 2 Get Alternate Track Alternate track assigned for a bad VTOC record. 3 Get Alternate Track Replace defective 4 ~ecord zero. Figure 108. IEHATLAS Example Directory Examples that use disk in place of actual device numbers must be changed before use. See "DASD and Tape Device Support" on page 3 for valid device number notation. IEHATLAS EXAMPLE I In this example, the data set defined by SYSUTl contains the bad record. An alternate track on the specified unit and volume is assigned to replace the defective track. Valid records from the defective track are copied to the alternate track and the replacement record (from SYSIN) is also written to the alternate track. //JOBATLAS JOB 06#990,SMITH,MSGLEVEL=1 //STEP EXEC PGM=IEHATLAS //SYSPRINT DD SYSOUT=A //SYSUTl DD DSNAME=HEWSET,UNIT=disk,VOLUME=SER=333333, // DISP=OLD //SYSIN DD * TRACK=00000002000422020006S F3FIC2C2FOFOOOOO The control statements are discussed below: 330 • SYSPRINT DD defines the device to which the output messages can be written (in this case, the system printer). • SYSUTI DD defines the data set (NEWSET) that contains the bad record. • SYSIN DD defines the control data set, which follows in the input stream. • TRACK specifies the cylinder and track number for the defective track, and the record number, key length, and data length of the bad record. In this example, the input record is to be placed on cylinder 2 (cccc=0002), track 4 (hhhh=0004), record 22 (rr=22); it has a key length of two (kk=02) with a logical record (data) length of six (dddd=0006). The WRITE special (S) character is used because there is a track overflow condition. MVS/370 Utilities Initial volume label HDRI HDR2 User header labels (optional up to 8) Tapemark Data Figure 109. IBM Standard Label Group after Volume Receives Data INPUT AND OUTPUT IEHINITT uses as input a control data set that contains the utility control statements. IEHINITT produces an output data set that contains: • Utility program identification • Initial volume label information for each successfully labeled tape volume. • Contents of utility control statements. • Any error messages. RETURN CODES IEHINITT returns a code in register 15 to indicate the results of program execution. The return-codes and their meanings are listed below. IEHIHITT Program 335 Codes Meaning 00 (00 hex) Successful completion. created. A message data set was 04 (04) Successful completion. defined by the user. No message data set was 08 (08) IEHINITT completed its operation, but error conditions were encountered during processing. message data set was created. A 12 (OC) IEHINITT completed its operation, but error conditions were encountered during processing. message data set was defined by the user. No 16 (10) IEHINITT terminated operation because of error conditions encountered while attempting to read the control data set. A message data set was created if defined by the user. Figure 110. IEHINITT Return Codes CONTROL IEHINITT is controlled by job control statements and utility control statements. The job control statements are used to execute or invoke IEHINITT and to define data sets used and produced by IEHINITT. The utility control statement is used to specify applicable label information. JOB CONTROL STATEMENTS Figure IlIon page 337 shows the job control statements for IEHINITT. PARM Information on the EXEC Statement The EXEC statement can include PARM information that specifies the number of lines to be printed between headings in the message data set, as follows: PARM='LINECNT=nn' If PARM is omitted, 60 lines are printed between headings. If IEHINITT is invoked, the line count option can be passed in a parameter list that is referred to by the optionaddr subparameter of the LINK or ATTACH macro instruction. In addition, a page count can be passed in a 6-byte parameter list that is referred to by the hdingaddr subparameter of the LINK or ATTACH macro instruction. For a discussion of linkage conventions, refer to "Invoking Utility Programs from a Problem Program" on page 13. SYSPRINT DD statement The SYSPRINT data set must have a logical record length of 121 bytes. It must consist of fixed length records with an ISO/ANSI control character in the first byte of each record. Any blocking factor can be specified. 336 MVS/370 Utilities statement Use JOB Initiates the job. EXEC Specifies the program name (PGM=IEHINITT) or, if the job control statements reside in a procedure library, the procedure name. The EXEC statement can include additional PARM information; see "PARM Information on the EXEC Statement." SYSPRINT DD Defines a sequential output data set. anyname DD Defines a tape unit to be used in a labeling operation; more than one tape unit can be identified. SYSIN DO Defines the control data set. The control data set normally resides in the input stream; however, it can be defined as a member of a partitioned data set or as a sequential data set outside the input stream. Figure 111. IEHINITT Job Control Statements anyname DO statement The "anyname" DD statement is entered: //anyname DD DCB=DEN=x,UNIT=(xxxx,n,DEFER) The DEN parameter specifies the density at which the labels are written. The UNIT parameter specifies the device type, number of units to be used for the labeling operation, and deferred mounting. See the publication JCL for more information on the DEN and UNIT parameters. The name "anyname" must be identical to a name specified in a utility control statement to relate the specified unites) to the utility control statement. SYSIN 00 statement The SYSIN data set must have a logical record length of 80. blocking factor can be specified. Any UTILITY CONTROL STATEMENT IEHINITT uses the utility control statement INITT to provide control information for a labeling operation. Continuation requirements for utility control statements are described in "Continuing Utility Control Statements" on page 5. INITT Statement The INITT statement provides control information for the IEHIHITT program. Any number of INITT utility control statements can be included for a given execution of the program. An identically named DD statement must exist for a utility control statement in the job step. IEHINITT Program 337 Figure 112 shows a printout of a message data set including the INITT statement and initial volume label information. In this example, one INITT statement was used to place serial numbers 001122 and 001123 on two SL tape volumes. VOLI001122 and VOLI001123 are interpreted, as follows: • VOLI indicates that an initial volume label was successfully written to a tape volume. • 001122 and 001123 are the serial numbers that were written onto the volumes. • A blank space following the serial number represents the Volume Security field, which is not used during OPEN/CLOSE/EOV processing on an SL tape. No errors occurred during processing. SYSTEM SUPPORT UTILITIES ALL INITT IEHINITT SER=001122,NUMBTAPE=2,OWNER='P.T.BROWN', DISP=REWIND VOLIOOl122 VOLI001123 P.T.BROWN P.T.BROWN Figure 112. Printout of INITT Statement Specifications and Initial Volume Label Information The format of the INITT statement is: ddname INITT SER=xxxxxx ,DISP=CREWINDIUNLOAD) [,OWNER='cccccccccc[cccc]'] [,NUHBTAPE=nl!] [,LABTVPE=AL] [,ACCESS=~] 338 MVS/370 Utilities 72 X Parameters Applicable Control statements ACCESS INITT Description of Parameters ACCESS=c specifies the ISO/ANSI volume accessibility code. Valid values for ~ are upper case A through Z only. The default value is a blank character, indicating unlimited access to the volume. You cannot specify a blank character for the access code. The Volume Access installation exit routine in MVS must be modified to allow subsequent use of the volume if ACCESS is specified. Refer to Magnetic Tape labels and File Structure for further information about volume accessibility and ISO/ANSI installation exits. ACCESS is invalid unless LABTYPE=AL has also been specified. DISP INITT DISP=(REWINDIUNLOADJ specifies whether a tape is to be rewound or rewound and unloaded. These values can be coded: REWIND specifies that a tape is to be rewound (but not unloaded) after the label has been written. UNLOAD specifies that a tape is to be rewound and unloaded after the label has been written. This is the default. LABTYPE INITT LABTYPE=AL specifies that an ISCII/ASCII volume label written in ISO/ANSI Version 3 format is to be created. Labels written in ISO/ANSI cannot be put on a 7-track tape volume. Default: The tape is written in EBCDIC for 9-track tape volumes and in BCD for 7-track tape volumes. ddname INITT ddname specifies the name that is identical to the ddname in the name field of the DO statement defining a tape unites). This name must begin in column 1. NUMBTAPE INITT NUMBTAPE=nl! specifies the number of tapes to be labeled according to the specifications made in this control statement. The value n represents a number from 1 to 255. If more-than one tape is specified, the volume serial number of the first tape must be numeric. IEHINITT Program 339 Parameters Applicable Control statements OWNER INITT Description of Parameters OWNER='cccccccccc[cccc], specifies the-owner's name or similar identification. The information is specified as character constants l and can be up to 10 bytes in length for EBCDIC and BCD volume labelsl or up to 14 bytes in length for volume labels written in ISCII/ASCII. The delimiting apostrophes must be present if blanks, commaSI apostrophes 1 equal signsl or other special characters (except periods or hyphens) are included. The set of valid ISO/ANSI 'a' type characters for ISCII/ASCII tapes is as follows: upper case A-ZI numeric 0-9 1 and special characters !"%&'()~+,-./:;<=>? If an apostrophe is included within the OWNER name field l it must be written as two consecutive apostrophes. SER INITT SER=xxxxxx specifies the volume serial number of the first or only tape to be labeled. For IBM standard labeled (SL) tapesl the serial number cannot contain blanksl commaSI apostrophes 1 equal signsl or special characters other than periods or hyphens. ISO/ANSI labeled tapes (AL) may contain any valid ISO/ANSI 'a' type character as described under the OWNER keyword. However, if any nonalphameric character (including a period or a hyphen) is present, delimiting apostrophes must be included. You cannot use a blank as the first character in a volume serial number. A specified serial number is increased by one for each additional tape to be labeled. (Serial number 999999 is incremented to 000000.) When processing multiple tapes, the volume serial number must be all numeric. IEHINITT EXAMPLES The following examples illustrate some of the uses of IEHINITT. Figure 113 can be used as a quick-reference guide to IEHINITT examples. The numbers in the "Example" column refer to examples that follow. Operation Comments Example LABEL Three 9-track tapes are to be labeled. 1 Figure 113 (Part 1 of 2). IEHINITT Example Directory 340 MVS/370 Utilities Operation comments Example LABEL A 9-track tape is to be labeled. 2 LABEL Two groups of 9-track tape volumes are to be labeled. 3 LABEL 9-track tape volumes are to be labeled. Sequence numbers are to be incremented by 10. 4 LABEL Three 9-track tape volumes are to be labeled. An alphameric label is to be placed on a tape volume; numeric labels are placed on the remaining two tape volumes. 5 LABEL Two 9-track tape volumes are to be labeled. The first volume is labeled at a density of 6250 bpi; the second at a density of 1600 bpi. 6 LABEL A 9-track tape volume is labeled in ISO/ANSI format with a nonblank access code. 7 Figure 113 (Part 2 of 2). IEHINITT Example Directory Examples that use tape in place of actual device numbers must be changed before use. See "DASD and Tape Device Support" on page 3 for valid device number notation. IEHINITT EXAMPLE 1 In this example, serial numbers 001234, 001235, and 001236 are placed on three tape volumes; the labels are written in EBCDIC at 800 bits per inch. Each volume labeled is mounted, when it is required, on a single 9-track tape unit. //LABEL1 JOB EXEC //SYSPRINT DD //LABEL DD //SYSIN DD LABEL INITT // 091990,BROWN,MSGLEVEL=(1,I) PGM=IEHINITT SYSOUT=A DCB=DEN=2,UNIT=(tape,1,DEFER) *SER=001234,NUMBTAPE=3 /* The control statements are discussed below: • LABEL DD defines the tape unit used in the labeling operation. • SYSIN DD defines the control data set, which follows in the input stream. • LABEL INITT specifies the number of tapes to be labeled (3), beginning with 001234. IEHINITT EXAMPLE 2 In this example, serial number 001001 is placed on one ISO/ANSI tape volume; the label is written at 800 bits per inch. The volume labeled is mounted, when it is required, on a 9-track tape unit. IEHINITT Program 341 //LABEL2 JOB EXEC //SYSPRINT DD //ASCIILAB DD //SYSIN DD ASCIILAB INITT // 09#990,BROWN,MSGLEVEL=(1,1) PGM=IEHINITT SYSOUT=A DCB=DEN=2,UNIT=(tape,1,DEFER) * SER=001001,OWNER='SAM A. BROWN',LABTYPE=AL /* The control statements are discussed below: • ASCIILAB 00 defines the tape volume to be used in the labeling operation. • SYSIN 00 defines the control data set, which follows in the input stream. • ASCIILAB INITT specifies the serial number, owner 10 and label type for the volume. IEHINITT EXAMPLE 3 In this example, two groups of serial numbers (001234, 001235, 001236, and 001334, 001335, 001336) are placed on six tape volumes. The labels are written in EBCDIC at 800 bits per inch. Each volume labeled is mounted, when it is required, on a single 9-track tape unit. //LABEL3 JOB EXEC //SYSPRINT DD //LABEL DD //SYSIN DD LABEL INITT LABEL INITT // 09#990,BROWN,MSGLEVEL=(1,1) PGM=IEHINITT SYSOUT=A DCB=DEN=2,UNIT=(tape,1,DEFER) * SER=001234,NUMBTAPE=3 SER=001334,NUMBTAPE=3 /* The control statements are discussed below: • LABEL DO defines the tape unit to be used in the labeling operation. • SYSIN DD defines the control data set, which follows in the input stream. • LABEL INITT defines the two groups of serial numbers to be put on six tape volumes. IEHINITT EXAMPLE 4 In this example, serial numbers 001234, 001244, 001254, 001264, 001274, etc., are placed on eight tape volumes. The labels are written in EBCDIC at 800 bits per inch. Each volume labeled is mounted, when it is required, on one of four 9-track tape units. 342 MVS/370 Utilities //LABEL4 JOB EXEC //SYSPRINT DD //LABEL DD //SYSIN DO LABEL INITT LABEL INITT LABEL INITT LABEL INITT LABEL INITT LABEL INITT LABEL INITT LABEL INITT // 091990,BROWN,MSGLEVEL=(I,I) PGM=IEHINITT SYSOUT=A OCB=DEN=2,UNIT=(tape,4,DEFER) * SER=001234 SER=001244 SER=001254 SER=001264 SER=001274 SER=001284 SER=001294 SER=001304 /* The control statements are discussed below: • LABEL DD defines the tape unit used in the labeling operation. • SYSIN DO defines the control data set, which follows in the input stream. • The LABEL INITT statements define the tapes to be labeled by volume serial number. IEHINITT EXAMPLE 5 In this example, serial number TAPE1 is placed on a tape volume, and serial numbers 001234 and 001235 are placed on two tape volumes. The labels are written in EBCDIC at 800 and 1600 bits per inch, respectively. //LABEL5 JOB EXEC //SYSPRINT DD //LABEL1 DO //LABEL2 DD //SYSIN OD LABELl INITT LABEL2 INITT // 091990,BROWN,MSGLEVEL=(I,l) PGM=IEHINITT SYSOUT=A OCB=OEN=2,UNIT=ctape,I,DEFER) DCB=DEN=3,UNIT=(tape,1,DEFER) *SER=TAPE1 SER=001234,NUMBTAPE=2 /* / The control statements are discussed below: • LABELl DD and LABEL2 DD define two tape volumes to be used in the labeling operation. • SYSIN DD defines the control data set, which follows in the input stream. • LABELl INITT places the serial number TAPEl on the tape volume defined in LABELl DD. LABEL2 INITT places the serial numbers 001234 and 001235 on the tape volume defined in LABEL2 DD. IEHINITT EXAMPLE 6 In this example, the serial number 006250 is written in EBCDIC on a tape volume at a density of 6250 bpi, and the serial number 001600 is written in EBCDIC on a second volume at a density of 1600 bpi. IEHINITT Program 343 //lA8El6 J08 EXEC //SYSPRINT DD //DDFIRST DD //DDSECOND DD //SYSIN DD DDFIRST INITT DDSECOND INITT // 093990,8ROWN,MSGlEVEl=(l,l) PGM=IEHINITT SYSOUT=A DC8=DEN=4,UNIT=(tape,l,DEFER) DCB=DEN=3,UNIT=(tape,l,DEFER) * SER=006250 SER=001600 /* The control statements are discussed below: • DDFIRST DD defines the first tape volume to be used. • DDSECOND DD defines the second tape volume to be used. • SYSIN DD defines the control data set, which follows in the input stream. • DDFIRST INITT writes the serial number 006250 on the volume defined in DDFIRST DD. DDSECOND INITT writes the serial number 001600 on the volume defined in DDSECOND DD. IEHINITT EXAMPLE 7 In this example, an ISO/ANSI (Al) labeled tape is created with a nonblank access code. The volume serial number is TAPE01. //lA8El7 J08 093990,8lUE,MSGlEVEl=(l,l) //STEPOl EXEC PGM=IEHINITT //SYSPRINT DD SYSOUT=A //lA8El DD UNIT=(tape,l,DEFER),DC8=DEN=4 //SYSIN DD * lA8El INITT SER=TAPEDl,OWNER=TAPOWNER,lA8TYPE=AL,ACCESS=A /* The control statements are discussed below. 344 • lABEL DD defines the device on which the tape is mounted. • SYSIN DD defines the control data set, which follows in the input stream. • The INITT statement creates an ISO/ANSI label for the tape with volume serial number TAPEDl, owned by TAPOWNER. The ACCESS code is specified as "A", and the MVS operating system which receives this volume must be able to recognize the "A" in order for the volume to be accepted. MVS/370 Utilities IEHLIST PROGRAM IEHlIST is a system utility used to list entries in an OS CVOl, entries in the directory of one or more partitioned data sets, or entries in an indexed or non-indexed volume table of contents. Any number of listings can be requested in a single execution of the program. LISTING OS CVOL ENTRIES IEHlIST lists alIOS CVOL entries that are part of the structure of a fully qualified, data set name. Figure 114 shows an index structure for which IEHlIST lists fully qualified names A.B.D.W, A.B.D.X, A.B.E.Y, and A.B.E.Z. Because A.C.F does not represent a cataloged data set (that is, the lowest level of qualification has been deleted>, it is not a fully qualified name, and it is not listed. A c B o w E x y F z Figure 114. Index Structure--Listed by IEHLIST IEHLIST will list only OS CVOLs (SYSCTLG data sets). To list ICF or VSAM catalogs, use access method services. See Access Method Services Reference for more information. LISTING A PARTITIONED DATA SET DIRECTORY IEHlIST can list up to ten partitioned data set directories at a time. A partitioned directory is composed of variable length records blocked into 256-byte blocks. Each directory block can contain one or more entries which reflect member (and/or alias) names and other attributes of the partitioned members. IEHLIST can list these blocks in edited and unedited format. Figure 115 on page 346 shows a directory block as it exists in storage. IEHLIST Program 345 /"--- - - - -.-- - - - - - --- ------'" - ( \ ) ,~~----_,~~--~~~--~~----~L-----_,~~--~~~--~ , I Figure 115. Sample Directory Block Edited Format IEHLIST optionally provides the following information, which is obtained from the applicable partitioned data set directory, when an edited format is requested: • Member name • Entry point • Relative address of start of member • Relative address of start of text • Contiguous virtual storage requirements • Length of first block of text • Origin of first block of text • System status indicators • Linkage editor attributes • APF authorization required • Other information Figure 116 shows an edited entry for a partitioned member (IEANUC01). The entry is shown as it is listed by the IEHLIST program. OTHER INFORMATION INDEX SCTR=SCATTER/TRANSLATION TABLE TTR IN HEX, LEN OF SCTR LIST IN DEC, LEN OF TRANS TABLE IN DEC, ESDID OF FIRST TEXT RCD IN DEC, ESDID OF CSECT CONTAINING ENTRY POINT IN DEC SCATTER FORMAT OVERLAY FORMAT ONLY=NOTE LIST RCD TTR IN HEX, NUMBER OF ENTRIES IN NOTE LIST RCD IN DEC ALIAS NAMES ALIAS MEMBER NAMES WILL BE FOLLOWED BY AN ASTERISK IN THE PDS FORMAT LISTING ATTRIBUTE INDEX BIT 0 1 2 3 ON OFF RENT REUS ONLY TEST NOT NOT NOT NOT BIT RENT REUS ONLY TEST 4 5 6 7 ON OFF BIT ON OFF BIT ON OFF OL SCTR EXEC 1 TXT NOT OL BLOCK NOT EXEC MULTI RCD 8 9 10 11 NOT DC ZERO ORG EP ZERO NO RLD DC NOT ZERO NOT ZERO RLD 12 13 14 15 NOT EDIT SYMS F LEVEL REFR EDIT NO SYMS E LEVEL NOT REFR MEMBER NAME ENTRY PT-HEX ATTR HEX REL BEGIN ADDR-HEX 1ST TXT CONTIG STOR-DEC LEN 1ST TXT-DEC IEANUC01 000000 06E2 000004 00020F 000166248 0927 ORG 1ST TXT-HEX SST INFO VS ATTR AUTH OTHER REQ INFORMATION ABSENT 880000 NO OF THE 00002 DIRECTORY BLOCKS ALLOCATED TO THIS PDS, 00001 ARE (IS) COMPLETELY UNUSED Figure 116. Edited Partitioned Directory Entry 346 MVS/370 Utilities SCTR=OOOOOO, 00484,01084,32,32 Before printing the directory entries on the first page, an index is printed explaining the asterisk (*), if any, following a member name, the attributes (fields 3 and 10), and other information (field 12). Under OTHER INFORMATION INDEX, scatter and overlay format data is described positionally as it appears in the listing; under the ATTRIBUTE INDEX, the meaning of each attribute bit is explained. Each directory entry occupies one printed line, except when the member name is an alias and the main member name and associated entry point appear in the user data field. When this occurs, two lines are used and every alias is followed by an asterisk. If the main member is renamed, the old member name will still be in the alias directory entry and consequently printed on the second line. The FORMAT option of the LISTPDS statement applies only to a partitioned data set whose members have been created by the linkage editor (that is, the directory entries are at least 34 bytes long). If a directory entry is less than 34 bytes, a message is issued and the entry is printed in unedited format; if the entry is longer than 34 bytes, it is assumed that it is created by the linkage editor. Unedited (Dump) Format The user may choose the unedited format. IEHLIST lists each member separately. If this is the case, Figure 117 shows how the information in Figure 115 on page 346 is listed. Note: A listing organized as shown in Figure 117 can also be obtained by using IEBPTPCH (see "IEBPTPCH Program" on page 241). MEMB A TTR USER DATA MEMB B TTR USER DATA MEMB C TTR USER DATA MEMB n TTR USER DATA Figure 117. Sample Partitioned Directory Listing To correctly interpret user data information, the user must know the format of the partitioned entry. The formats of directory entries are discussed in the Debugging Handbook. LISTING A VOLUME TABLE OF CONTENTS IEHLIST can be used to list, partially or completely, entries in a specified volume table of contents (VTOC), whether indexed or nonindexed. The program lists the contents of selected data set control blocks (DSCBs) in edited or unedited form. For more information on indexed VTOCs, including a description of the VPSM, VIXM and VMDS, see System Programming Library: Data Management. Edited Format Two edited formats are available. IEHLIST Program 347 FIRST EDITED FORHAT: The first edited format is a comprehensive listing of the DSCBs in the VTDC. It provides the status and attributes of the volume, and describes in depth the data sets residing on the volume. This listing includes: • Logical record length and block size • Initial and secondary allocations • Upper and lower limits of extents • Alternate track information • Available space information, including totals of unallocated cylinders, unallocated tracks, and unallocated (Format 0) DSCBs • Dption codes (printed as two hexadecimal digits) • Record formats A VTDC consists of as many as seven types of DSCBs which contain information about the data sets residing on the volume: • • • • • • • Ide~tifier DSCB--Format 1 Index DSCB--Format 2 Extension DSCB--Format 3 VTDC DSCB--Format 4 Free Space DSCB--Format 5 Shared Extent DSCB--Format 6 Free VTDC DSCB--Format 0 The first DSCB in a VTDC (and on your listing) is always a VTDC (Format 4) DSCB. It defines the scope of the VTDC itself; that is, it contains information about the VTDC and the volume rather than the data sets referenced by the VTDC. The DSCB is followed by the Free Space (Format 5) DSCB, which describes the space available on the volume for allocation to other data sets. More than one Format 5 DSCB may be required to describe the available space on a volume because each Format 5 DSCB describes up to 26 extents. The Format 4 and Format 5 DSCBs are followed, in any order, by Format 1, 2, 3, or 6 DSCBs. Each Identifier (Format 1) DSCB contains information about a particular data set or VSAM data space residing on the volume. This type of DSCB describes the characteristics and up to three extents of the data set. For data sets having indexed sequential organization, additional characteristics are specified in an Index (Format 2) DSCB pointed to by the Identifier (Format 1) DSCB. Additional extents are described in an Extension (Format 3) DSCB pointed to by the Identifier (Format 1) DSCB or in the Index (Format 2) DSCB for an ISAM data set. A Shared Extent (Format 6) DSCB is used for shared-cylinder allocation. It describes the extent of space (one or more contiguous cylinders) that is being shared by two or more data sets. The Shared Extent (Format 6) DSCB is pointed to by the VTDC (Format 4) DSCB. Subsequent Format 6 DSCBs are pointed to by the previous Format 6 DSCB. Though shared extent data sets cannot be created by MVS/370, they are supported if previously created. 348 MVS/370 Utilities A Free VTOC Record (Format 0) DSCB, which indicates space available for another DSCB, is not listed by IEHlIST. They are 140-byte records, consisting of binary zeros, that are overwritten with Format 1, 2, or 3 DSCBs when a new data set is allocated, with Format 5 DSCBs when space is released, or with Format 3 DSCBs when a Format 1 or Format 2 must be extended. Indexed VTOCs: For indexed VTOCs, there are two types of formatted listings. These types are specified using the INDEXDSN parameter. If INDEXDSN is omitted, the listing contains: • A statement of the number of levels in the index, if enabled. • A formatted Format 4 DSCB. • Formatted data set entries in alphameric order (Format 1 DseB physical-sequential order if the index is disabled). • Formatted VPSM freespace information. • Totals of unallocated cylinders, unallocated tracks, unallocated (Format 0) DSCBs, and unallocated VIRs. If INDEXDSN=name is specified, the listing contains, in addition to the items above: • A formatted VPSM, VMDS, and VIXM. • Allocated VIERs, formatted and listed by level and key sequence within level (in physical-sequential order if the index is disabled). • If the VTOC index is disabled, a statement is included to this effect. Figure 118 on page 350 shows a sample listing of the first edited format. This sample illustrates how each DSCB will appear on a listing, although in many cases the VTOC may not contain all possible types. The information is in columns, with the values or numbers appearing underneath each item's heading. SECOND EDITED FORMAT: The second edited format is an abbreviated description of the data sets. It is provided by default when no format is requested specifically. It provides the following information: • Data set name • Creation date (dddyy) • Expiration date (ddclyy) • Password indication • Organization of the data set • ExtentCs) • Volume serial number The last line in the listing indicates how much space remains in the VTOC. For nonindexed VTOCs, data set entries are listed in physical-sequential order. Totals of unallocated cylinders, unallocated tracks, and unallocated (Format 0) DSCBs are also listed. IEHlIST Program 349 SYSTEMS SUPPORT UTILITIES---IEHLIST PAGE 1 CONTENTS OF VTOC ON VOL EXAMPL FORMAT 4 DSCB NO AVAIL/MAX DSCB /MAX DIRECT VI DSCBS PER TRK BLK PER TRK 00 154 16 10 FORMAT 5 DSCB TRK FULL ADDR CYLS 17 3 A A 3 = LAST FMT 1 VTOC EXTENT DSCB(C-H-R)/LOW(C-H) HIGH«(,-H) 5 0 5 5 0 5 KEY LEN 4 NO o TRK ADDR FULL CYLS A DSORG IS RECFM F TRK ADDR THIS DseB (C-H-R) () FULL CYLS A 0 ---------------DATA SET NAME--------------EXAMPLE.OF.COMBINED.FORMATS.ONE.AND.TWO EXTENTS FORMAT 6 (C-H-R) NUMBER OF TRKS IN ADDITION TO FULL CYLS IN THE EXTENT TRK FULL TRK FULL TRK FULL ADDR CYLS A ADDR CYLS A ADDR CYLS A 110 189 0 DSCB(C-H-R) LRECL 100 NO AVAIL NEXT ALT ALT TRK TRK(C-H) 30 200 INITIAL ALLOC ABSTR LOW(C-H) 6 0 10 1 SER NO EXAMPL SEQ NO 1 CREDT 36699 2ND ALLOC/LAST BLK PTR(T-R-L) 0 EXPDT 27469 NO EXT USED PDS BYTES OPTCD BLKSIZE 100 FMT 2 OR 3(C-H-R)/DSCB(C-H-R) 5 0 5 0 4 HIGH(C-H) 10 9 2MIND(M-B-C-H);3MIND(M-B-C-H)/L2MFN(C-H-R)/L3MIN(C-H-R)/CYLAD(M-B-C-H)/ADLIN(M-B-C-H)/ADHIN(M-B-C-H)/NOBYT/ NOTRK o 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 10 9 0 0 0 0 1 0 10 9 70 0 LTRAD(C-H-R)/LCYAD(C-H-R)/LMSAD(C-H-R)/LPRAD(M-B-C-H-R) /NOLFV /CYLOV/ TAGDT/ 6 0 3 10 9 1 0 0 0 1 0 6 1 12 1 0 ----UNABLE TO CALCULATE EMPTY SPACE. ---------------DATA SET NAME--------------EXAMPLE.OF.COMBINED.FORMATS.ONE.AND.THREE LRECL 3500 EXTENTS THERE ARE THERE ARE KEY LEN NO 0 3 6 9 12 15 INITIAL ALLOC TRKS LOW(C-H) 1 0 0 7 0 1 0 10 1 SER NO EXAMPL SEQ NO 1 CREDT 36699 2ND ALLOC/LAST BLK PTR (T-R-L) 1 15 1723 HIGH(C-H) 0 0 4 0 7 1 0 NO 1 4 7 10 13 LOW(C-H) 0 2 0 5 0 8 1 4 HIGH(C-H) 0 2 0 5 0 1 4 6 6 - - - -ON THE ABOVE DATA SET, THERE ARE EXPDT 27069 PRCTR 20 NO EXT 16 DSORG PS USED PDS BYTES NO 2 5 8 11 14 / OVRCT/ RORG1/PTRDS(C-H-R) 0 0 LOW(C-H) 0 3 0 6 0 RECFM V OPTCD BLKSIZE 3504 FMT 2 OR 3(C-H-R)/DSCB(C-H-R) 506 505 HIGH(C-H) o o o 3 6 9 2 5 0 EMPTY TRACK (S) . 192 EMPTY CYLINDERS PLUS 3 EMPTY TRACKS ON THIS VOLUME 154 BLANK DSCBS IN THE VTOC ON THIS VOLUME Figure 118. Sample Printout of a Volume Table of Contents For indexed VTOCs, this listing contains: • A statement of the number of levels in the index. • Data set entries listed in alphameric order. • Totals of unallocated cylinders, unallocated tracks, unallocated (Format 0) DSCBs, and unallocated VIRs. Unedited (Dump) Format This option produces a complete hexadecimal listing of the DSCBs in the VTOC. The listing is in an unedited dump form, requiring the user to know the various formats of applicable DSCBs. The VTOC overlay for IEHlIST listings of VTOCs in dump format (form number 620-0109-1) is useful in identifying the fields of the DSCBs. For nonindexed VTOCs, this listing contains: • DSCBs dumped in physical-sequential order. • Totals of unallocated cylinders, unallocated tracks, and unallocated (Format 0) DSCBs. For indexed VTOCs there are two types of dump listings. types are specified using the INDEXDSN parameter. 350 MVS/370 Utilities These ,If INDEXDSN is omitted, the listing contains: • DSCBs dumped in physical-sequential order (one token Format 5 DSCB is identified). • A dump of the VPSM. • Totals of unallocated cylinders, unallocated tracks, unallocated (Format 0) DSCBs, and unallocated VIRs. If INDEXDSN=~ is specified, the listing contains, in addition to the items above: • Dumps of the VIXM and the VMDS. • A dump of all allocated VIERs dumped in hierarchic order. All VIERs at the highest level are dumped, starting with the VIER with the lowest high key; next, all VIERs at the next lower level are dumped, starting with the VIER with the lowest high key. The listing continues in this manner until all VIERs at level 1 are dumped. If the VTOC index is disabled, both allocated and unallocated VIERs are dumped in physical-sequential order. • If the VTOC index is disabled, a statement is included to this effect. Refer to Debugging Handbook for a discussion of the various formats that data set control blocks can assume. INPUT AND OUTPUT IEHLIST uses the following input: • • One or more source data sets that contain the data to be listed. The input data set(s) can be: 1. A VTOC, 2. A partitioned data set, 3. An OS CVOl (SYSCTLG). A control data set, which contains utility control statements that are used to control the functions of IEHLIST. IEHLIST produces as output a message data set which contains the result of the IEHlIST operations. The message data set includes the listed data and any error messages. RETURN CODES IEHlIST returns a code in register 15 to indicate the results of program execution. The return codes and their meanings are listed below. IEHLIST Program 351 Codes Meaning 00 (00 hex) Successful completion. OS (OS) An error condition caused a specified request to be ignored. Processing continues. 12 (OC) A permanent input/output error occurred. is terminated. 16 (10) An unrecoverable error occurred while reading the data set. The job is terminated. The job Figure 119. IEHlIST Return Codes CONTROL IEHlIST is controlled by job control statements and utility control statements. The job control statements are used to execute or invoke IEHlIST and to define the data sets used and produced by IEHlIST. Utility control statements are used to control the functions of the program and to define those data sets or volumes to be modified. JOB CONTROL STATEMENTS Figure 120 on page 353 shows the job control statements for IEHlIST. With the exception of the SYSIN and SYSPRINT DD statements, all DD statements in this table are used as device allocation statements, rather than as true data definition statements. Concatenated DD statements are allowed only for SYSIN. Because IEHlIST modifies the internal control blocks created by device allocation DO statements, IEHlIST job control statements must not include the OSNAME parameter. (All data sets are defined explicitly or implicitly by utility control statements.) IEHlIST cannot support empty space calculations for OS CVOl data sets allocated in blocks when the block sizes are approximately the same or larger than the track size. ' The empty block calculation gives only approximate indications of available space. When IEHlIST cannot supply an approximate number, the "Unable to Calculate" message is issued. IEHlIST specifications do not allow for protection of the object being listed. If another program updates a block of the data set just prior to IEHlIST reading the data set, a message (IEHI05I or IEHI08I) may be issued and the output produced by IEHlIST may be incorrect. If this happens, rerun the job. PARM Information on the EXEC statement Additional information can be specified in the PARM parameter of the EXEC statement to control the number of lines printed per page. The PARM parameter can be coded: PARM='LINECNT=~' 352 MVS/370 Utilities statement Use JOB Initiates the job. EXEC Specifies the program name (PGM=IEHlIST) or, if the job control statements reside in a procedure library, the procedure name. Additional PARM information can be specified to control the number of lines printed per page. See "PARM Information on the EXEC Statement." SYSPRINT DD Defines a sequential message data set. anynamel DD Defines a permanently mounted volume. anyname2 DD Defines a mountable device type. This can be specified more than once as long as each "anyname" is unique. SYSIN DD Defines the control data set. The control data set normally follows the job control language in the input stream; however, it can be defined as an unblocked sequential data set or member of a procedure library. Figure 120. IEHlIST Job Control Statements The lINECNT parameter specifies the number of lines, ~, to be printed per page; xx is a decimal number from 01 through 99. If LINECNT is not specified, 58 lines are printed per page. The PARM field cannot contain embedded blanks, zeros, or any other PARM keywords if lINECNT is specified. SYSPRINT DD statement The block size for SYSPRINT must be a multiple of 121. blocking factor can be specified for this block size. Any anynamel DD statement An "anynamel" DD statement must be included for each permanently mounted volume referred to in the job step. (The system residence volume is considered to be a permanently mounted volume.> The "anynamel" DD statement can be entered: //anynamel DD UNIT=xxxx,VOlUME=SER=xxxxxx,DISP=OLD The UNIT and VOlUME=SER parameters define the device type and volume serial number. The DISP=OLD specification prevents the inadvertent deletion of the data set. (This statement has arbitrarily been assigned the ddname DDl in the IEHLIST examples.> anyname2 DD statement An "anyname2" DD statement must be included for each mountable device to be used in the job step. When deferred mounting is required, the "anyname2" DD statemerit can be entered: //anyname2 DD UNIT=(xxxx"DEFER),VOlUME=(PRIVATE, ..• ),DISP=OLD IEHLIST Program 353 (This statement is arbitrarily assigned the ddname DD2 in the IEHLIST examples.) When IEHLIST is dynamically invoked in a job step by another program, the DD statements defining mountable devices for IEHLIST must precede DD statements required by the other program. Unit affinity cannot be used on DD statements defining mountable devices. See Appendix B, "DD Statements for Defining Mountable Devices" on page 443 for information on defining mountable devices. SYSIN DD statement The block size for SYSIN must be a multiple of 80. factor can be specified for this block size. Any blocking UTILITY CONTROL STATEMENTS Figure 121 shows the utility control statements for IEHLIST. statement Use LISTCTLG Requests a listing of all or part of an OS CVOl (SYSCTLG) . LISTPDS Requests a directory listing of one or more partitioned data sets. LISTVTOC Requests a listing of all or part of a volume table of contents. Figure 121. IEHLIST Utility Control Statements Continuation requirements for utility control statements are described in "Continuing Utility Control Statements" on page 5. LISTCTLG Statement The LISTCTLG statement is used to request a listing of either the entire OS CVOL or a specified portion of the OS CVOL (SYSCTLG data set). The listing includes the fully quali~ied name of each applicable cataloged data set and the serial number of the volume on which it resides. Empty index levels are not listed. The format of the LISTCTLG statement is: [labell LISTCTLG [VOL=device=seriall [,NODE=~l LISTPDS Statement The LISTPDS statement is used to request a directory listing of one or more partitioned data sets that reside on the same volume. 354 MVS/370 Utilities Before printing the directory entries on the first page, an index is printed explaining the att~ibutes (fields 3 and 10) and othe~ info~mation (field 12). OTHER INFORMATION INDEX explains scatter and overlay format data as it appears in the listing; ATTRIBUTE INDEX ~xplains each attribute bit. The FORMAT option of the lISTPDS statement may be used only on a partitioned data set whose members have been created by the linkage editor. Members that have not been created by the linkage editor cause their directory entries to be listed in unedited (DUMP) format. The format of the lISTPDS statement is: [labell DSNAME=(ngmg[,namel ••• ) LISTPDS [,VOL=device=seriall [,DUMPIFORMATl LISTVTOC statement The lISTVTOC statement is used to request a partial or complete listing of the entries in a specified volume table of contents. If you are using IEHlIST to list both the VTOC and the index data set of an indexed VTOC, refer to "listing a Volume Table of Contents" on page 347. The format of the LISTVTOC statement is: [labell LISTVTOC [DUMPIFORMATl [,INDEXDSN=SYSl.VTOCIX.xxxxl [,DATE=~l [,VOL=device=seriall [,DSNAME=(name[,name] ••• )] APplicable Cont~ol Pa~amete~s statements Desc~iption DATE lISTVTOC DATE=~ of Pa~amete~s specifies that each entry that expires before this date is to be flagged with an asterisk (*) after the entry name in the listing. This parameter applies only to the abbreviated edited format. The date is represented by ddd, the day of the year, and ~, the last two digits of the year. Default: No asterisks appear in the listing. IEHlIST Program 355 Parameters APplicable Control statements DSHAME LISTPDS DSNAME=(name[,name] ••• ) specifies the fully qualified names of the partitioned data sets whose directories are to be listed. A maximum of 10 names is allowed. If the list consists of only a single name, the parentheses can be omitted. LISTVTOC DSNAME=(name[,name] ••• ) specifies the fully qualified names of the data sets whose entries are to be listed. A maximum of 10 names is allowed. If the list consists of only a single name, the parentheses can be omitted. LISTPDS LISTVTOC DUMP DUMP Description of Parameters specifies that the listing is to be in unedited, hexadecimal form. Default: If both DUMP and FORMAT are omitted, an abbreviated edited format is generated for LISTVTOC. For LISTPDS, DUMP is the default used. FORMAT LISTPDS FORMAT specifies that the listing is to be edited for each directory entry. The FORMAT option of the LISTPDS statement may be used only on a partitioned data set whose members have been created by the linkage editor. Members that have not been created by the linkage editor cause their directory entries to be listed in unedited (DUMP) format. LISTVTOC FORMAT specifies that a comprehensive edited listing is to be generated. Default: If both FORMAT and DUMP are omitted, an abbreviated edited format is generated for LISTVTOC. For LISTPDS, DUMP is the default used. IHDEXDSH 356 LISTVTOC MVS/370 Utilities INDEXDSN=SYSl.VTOCIX.xxxx specifies that index information is to be listed, in addition to the VTOC. xxxx is any third level qualifier. DUMP or FORMAT must be specified if IHDEXDSH is specified. For more information on indexed VTOCs, refer to "Listing a Volume Table of Contents" on page 347. Parameters Applicable Control statements NODE LISTCTLG Description of Parameters NODE=name specifies a qualified name. All data set entries whose names are qualified by this name are listed. The OS CVOL must be defined in the ICF or VSAM master catalog as: SYSTCTLG.VYYYYYY, where YYYYYY is the serial number of the OS CVOL. See Catalog Users Guide for details. Default: All data set entries are listed. VOL LISTCTLG LISTPDS LISTVTOC VOL=device=serial specifies the device type and volume serial number of the volume on which the OS CVOL, PDS directory, or VTOC resides. For LISTPDS, if the partitioned data set is not on the system residence volume, the VOL parameter is required. Default: For LISTCTLG, the OS CVOL is assumed to reside on the system residence volume. IEHLIST EXAMPLES The following examples illustrate some of the uses of IEHLIST. Figure 122 can be used as a quick-reference guide to IEHLIST examples. The numbers in the "Example" column refer to examples that follow. Operation Devices Comments Example LISTCTLG Disk and system output device Source OS CVOL is to be listed on the system output device. 1 LISTCTLG Disk system residence device and system output device Three OS CVOLs and part of a fourth are to be listed on the system output device. 2 LISTPDS Disk and system output device Three partitioned directories are to be listed on the system output device. 3 LISTVTOC Disk and system output device Volume table of contents is to be listed in edited form; selected data set control blocks are listed in unedited form. 4 Figure 122. IEHLIST Example Directory IEHLIST Program 357 Examples that use disk in place of actual device numbers must be changed before use. See "DASD and Tape Device Support" on pag~ 3 for valid device number notation. IEHLIST EXAMPLE 1 In this example, an OS CVOL named 'SYSCTLG, volume (111111), is listed. r~siding ~n a disk The example follows: //CATLIST JOB // EXEC //SYSPRINT DD //D02 DD //SYSIN DD lISTCTLG 09#550,BlUE PGM=IEHlIST SYSOUT=A UNIT=disk,VOlUME=SER=111111,DISP=OlD *VOL=disk=111111 The control statements are discussed below: • D02 DO defines a mountable device on which the volume containing the source OS CVOL is mounted. • SYSIN DD defines the control data set, which follows in the input stream. • lISTCTlG defines the source volume and specifies the list operation. IEHLIST EXAMPLE 2 In this example, an OS CVOL residing on the system residence volume, two OS CVOLs residing on disk volumes, and a portion of an OS CVOL residing on another volume, are listed. //CATLIST // //SYSPRINT //DOI //D02 JOB EXEC DD DD DD // //SYSIN DD LISTCTLG lISTCTlG lISTCTLG lISTCTLG 09#550,BlUE PGM=IEHLIST SYSOUT=A UNIT=diskB,VOlUME=SER=llllll,OISP=OLD UNIT=(diskA"DEFER),DISP=OLO, VOlUME={PRIVATE"SER=(222222» * VOl=diskA=333333 VOl=diskA=444444 VOl=diskA=555555,NOOE=A.B.C The control statements are discussed below: 358 • DDI DD defines a system residence device. (The first OS CVOl to be listed resides on the system residence volume.) • 002 DD defines a mountable device on which each diskA volume is mounted as it is required by the program. • SYSIN DO defines the control 'data set, which follows in the input stream. • The first lISTCTLG statement indicates that the OS CVOL residing on the system residence volume is to be listed. MVS/370 Utilities • The second and third lISTCTlG statements identify two diskA disk volumes containing OS CVOls to be listed. • The fourth lISTCTlG statement identifies a diskA volume containing an OS CVOL that is to be partially listed. All data set entries whose beginning qualifiers are "A.B.C" are listed. IEHLIST EXAMPLE 3 In this example, a partitioned data set directory existing on the system residence volume is listed. In addition, two partitioned data set directories existing on another disk volume are listed . .I.1lISTPDIR JOB .1.1 EXEC .I.1SYSPRINT DD .I.1DD1 DD .I.1DD2 DD .I.1SYSIN DD LISTPDS LISTPDS 091550,BLUE PGM=IEHLIST SYSOUT=A UNIT=diskB,VOLUME=SER=11l1ll,DISP=OlD UNIT=diskA,VOlUME=SER=222222,DISP=OlD *DSNAME=PARSETl DSNAME=(PARTl,PART2),VOl=diskA=222222 The control statements are discussed below: • DDl DO defines the system residence device. • DD2 DO defines a mountable device on which a disk volume (222222) is to be mounted. • SYSIN DD defines the control data set, which follows in the input stream. • The first lISTPDS statement indicates that the partitioned data set directory belonging to data set PARSETl is to be listed. This data set exists on the system residence volume. • The second LISTPDS statement indicates that partitioned data set directories belonging to data sets PARTl and PART2 are to be listed. These data sets exist on a disk volume (222222). IEHLIST EXAMPLE 4 In this example, a non-indexed volume table of contents is listed in the first edited format. The edited listing is supplemented by an unedited listing of selected data set bontrol blocks. .I.1VTOCLIST JOB .1.1 EXEC .I.1SYSPRINT DD .I.1DD2 DD .I.1SYSIN DD LISTVTOC LISTVTOC 091550,BLUE PGM=IEHLIST SYSOUT=A UNIT=disk,VOlUME=SER=llllll,DISP=OlD * . FORMAT,VOl=disk=llllll DUMP,VOL=disk=111111,DSNAME=(SETl,SET2,SET3) IEHLIST Program 359 The control statements are discussed below: 360 • DD2 DD defines a mountable device on which the volume containing the specified volume table of contents is to be mounted. • SYSIN DD defines the control data set, which follows in the input stream. • The first lISTVTOC statement indicates that the volume table of contents on the specified disk volume is to be listed in edited form. • The second lISTVTOC statement indicates that the data set control blocks representing data sets SET1, SET2, and SET3 are to be listed in unedited form. MVS/370 Utilities IEHMOVE PROGRAM IEHMOVE IS a system utility used to move or copy logical collections of operating system data. IEHMOVE can be used to move or copy: • A non-VSAM, non-ISAM data set residing on from one to five volumes. • A group of non-VSAM data sets cataloged in an OS CVOl, ICF or VSAM catalog. • An entire OS CVOl or portions of an OS CVOl. • A volume of data sets. • BDAM data sets with variable-spanned records. A move operation differs from a copy operation in that a move operation scratches source data if the data set resides on a DASD source volume and the expiration date has occurred, while a copy operation leaves source data intact. In addition, for cataloged data sets, a move operation updates the OS CVOl to refer to the moved version (unless otherwise specified), while a copy operation leaves the as CVOl unchanged. The scope of a basic move or copy operation can be enlarged by: • Including or excluding data sets from a move or copy operation. • Merging members from two or more partitioned data sets. • Including or excluding selected members. • Renaming moved or copied members. • Replacing selected members. When moving or copying a data set group or a volume containing password-protected data sets, the user must provide the password each time a data set is opened or scratched. IEHMOVE always moves or copies any user labels associated with an input data set. IEHMOVE does not take exits to a user's label processing routines. A move or copy operation results in: (1) a moved or copied data set, (2) no action, or (3) an unloaded s version of the source data set. These results depend upon the compatibility of the source and receiving volumes with respect to: • Size of the volumes • Allocation of space on the receiving volume • Data set organization (sequential, partitioned, or BDAM) • Movability of the source data set S If IEHMOVE is unable to successfully move or copy specified data, an attempt is made to reorganize the data and place it on the specified output device. The reorganized data--called an unloaded data set--is a sequential data set consisting of SO-byte blocked records that contain the source data and control information for subsequently reconstructing the source data as it originally existed. IEHMOVE Program 361 VOLUME SIZE COMPATIBILITY Two volumes are compatible with respect to size if: 1. The source record size does not exceed the receiving track size, or 2. The receiving volume supports the track overflow feature and the output is to be written with track overflow. (Refer to "Job Control language for the Track Overflow Feature" on page 378 for notes on the track overflow feature.) When using BDAM data set organization, two volumes are compatible with respect to size if the source track capacity does not exceed the receiving track capacity. BDAM data sets moved or copied to a smaller device type or tape are unloaded. If the user wishes to load an unloaded data set, it must be loaded to the same device type from which it was originally unloaded. Figure 123 shows the results of move and copy operations when the receiving volume is a DASD volume that is compatible in size with the source volume. The organization of the source data set is shown along with the characteristics of the receiving volume. Receiving Volume Characteristics Sequential Data sets Partitioned Data Sets BDAM Data sets Space allocated by IEHMOVE (movable data) Moved or copied Moved or copied Moved or copied Space allocated by IEHMOVE (unmovable data) Moved or copied Moved or copied No action Space previously allocated, as yet unused Moved or copied Moved or copied No action Space previously allocated, partially used No action Moved or copied (merged) No action Figure 123. Move and Copy Operations--DASD Receiving Volume with Size Compatible with Source Volume Figure 124 shows the results of move and copy operations when the receiving volume is a DASD volume that is not compatible in size with the source volume. The organization of the source data set is shown along with the characteristics of the receiving volume. Receiving Volume Characteristics sequential Data sets Partitioned Data Sets BDAM Data sets Space allocated by IEHMOVE Unloaded Unloaded Unloaded Space previously allocated, as yet unused Unloaded Unloaded No action Figure 124 (Part 1 of 2). Move and COpy Operations--DASD Receiving Volume with Size Incompatible with Source Volume 362 MVS/370 Utilities Receiving Volume Characteristics sequential Data sets partitioned Data sets BDAM Data sets Sp~ce previously allocated, partially used No action No action No action Figure 124 (Part 2 of 2). Move and Copy Operations--DASD Receiving Volume with Size Incompatible with Source Volume Figure 125 shows the results of move and copy operations when the receiving volume is not a DASD volume. The organization of the source data set is shown along with the characteristics of the receiving volume. Receiving Volume Characteristics Sequential partitioned BDAM Movable data Moved or copied Unloaded Unloaded Unmovable data Unloaded Unloaded No action Figure 125. Move and Copy Operations--Non-DASD Receiving Volume SPACE ALLOCATION Space can be allocated for a data set on a recelvlng volume either by the user (through the use of DD statements in a prior job step) or by IEHMOVE in the IEHMOVE job step. If the source data is unmovable (that is, if it contains location-dependent code), the user should allocate space on the receiving volume using absolute track allocation to ensure that the data set is placed in the same relative location on the receiving volume as it was on the source volume. Unmovable data can be moved or copied if space is allocated by IEHMOVE, but the data may not be in the same location on the receiving volume as it was on the source volume. When data sets are to be moved or copied between unlike OASO devices, a secondary allocation should be made to ensure that ample space is available on the receiving volume. Space for a new data set should not be allocated by the user when a BDAM data set is to be moved or copied, not unloaded, because IEHMOVE cannot determine if the new data set is empty. If IEHMOVE performs the space allocation for a new data set, the space requirement information of the old data set Cif available) is used. This space requirement information is obtained from the OSCB of the source data set, if it is on a DASO volume, or from the control information in the case of an unloaded data set. If space requirement information is available, IEHMOVE uses this information to derive an allocation of space for the receiving volume, taking into account the differences in device characteristics, such as track capacity and overhead factors. However, when data sets with variable or undefined record formats are being moved or copied between unlike DASO devices, no assumption can be made about the space that each individual record needs on the receiving device. In general, when variable or undefined record formats are to be moved or copied, IEHMOVE attempts to allocate sufficient space. IEHMOVE Program 363 This might cause too much space to be allocated under the following circumstances: • When moving or copying from a device with a relatively large block overhead to a device with a smaller block overhead, the blocks being small in relation to the block size. • When moving or copying from a device with a relatively small block overhead to a device with a larger block overhead, the blocks being large in relation to the block size. BDAM data sets with variable or undefined record formats always have the same amount of space allocated by IEHMOVE. This practice preserves any relative track addressing system that might exist within the data sets. If a sequential data set, which is not an unloaded data set, on a non-DASD volume is to be moved or copied to a DASD volume, and space attributes are not available through a previous allocation, IEHMOVE makes a default space allocation. The default allocation consists of a primary allocation of 72,500 bytes of DASD storage (data and gaps) and up to 15 secondary allocations of 36,250 bytes each. Space cannot be previously allocated for a partitioned data set that is to be unloaded unless the SPACE parameter in the DD statement making the allocation implies sequential organization. BDAM data sets should not be previously allocated because IEHMOVE cannot determine whether they are empty or not. If a move or copy operation is unsuccessful, the source data remains intact. If a move or copy operation is unsuccessful and space was allocated by IEHMOVE, all data associated with that operation is scratched from the receiving DASD volume. If the receiving volume was tape, it will contain a partial data set. If a move or copy operation is unsuccessful and space was previously allocated, no data is scratched from the receiving volume. If, for example, IEHMOVE moved 104 members of a lOS-member partitioned data set and encountered an input/output error while moving the 105th member: • The entire partitioned data set is scratched from the receiving volume if space was allocated by IEHMOVE. • No data is scratched from the receiving volume if space was previously allocated. In this case, after determining the nature of the error, the user need move only the 105th member into the receiving partitioned data set. If a data set that has only user trailer labels is to be moved from a tape volume to a DASD volume, space must be previously allocated on the DASD volume to ensure that a track is reserved to receive the user labels. REBLOCKING DATA SETS Data sets with fixed or variable records can be reblocked to a different block size by previously allocating the desired block size on the receiving volume. No reblocking can be performed when loading or unloading. Also, no reblocking can be performed on data sets with variable spanned or variable blocked spanned records. When moving or copying data sets with undefined record format and reblocking to a smaller block size (that is, transferring records to a device with a track capacity smaller than the track capacity of the original device), you must make the block size for the receiving volume equal to or larger than the size of the largest record in the data set being moved or copied. 364 MVS/370 Utilities ,Blocked format data sets that do not contain user data TTRNs or keys can be reblocked or unblocked by including the proper keyword subparameters in the DCB operand of the DD statement used to previously allocate space for the data set. The new blocking factor must be a multiple of the logical record length originally assigned to the data set. For a discussion of user data TTRNs, refer to Data Management Services. USING IEHMOVE WITH RACF If the Resource Access Control Facility (RACF) is active, the following considerations apply! • You must have valid RACF authorization to access any RACF-defined data sets with IEHMOVE. ALTER authorization is required to access the source data set for a MOVE function, as the source data set is scratched. When moving a volume or group of data sets, the user must have adequate access authorization to all of the RACF-protected data sets on the volume or in the group. • If you have the RACF ADSP attribute and IEHMOVE is to allocate space for the receiving data set, that data set will be automatically defined to RACF. If the data set does not have your userid as the first level qualifier, at least one of the following conditions must be met: You specify MOVE or COpy with RENAME so that the first level qualifier is the correct userid The data set being moved or copied is a group data set and You are connected to the group with CREATE authority You have the OPERATION attribute • If COPYAUTH is specified and the input data set is RACF-protected (whether or not the user has the ADSP attribute) and the output data set is not preallocated, then the receiving data set of a MOVE or COPY operation is given a copy of the input data set's RACF protection and access list during allocation, governed by the same restrictions described above for defining a data set for a user with the ADSP attribute. The user must have ALTER access authorization to the input data set to either MOVE or COpy using COPYAUTH. MOVING OR COPYING A DATA SET IEHMOVE can be used to move or copy sequential, partitioned, and BDAM data sets, as follows: • • * A sequential data set can be: 1. Moved from one DASD volume or non-DASD volume to another (or to the same volume provided that it is a DASD volume), or 2. Copied from one volume to another (or to the same volume provided that the data set name is changed and the receiving volume is a DASD volume). A partitioned data set can be: 1. Moved from one DASD volume to another (or to the same volume), or 2. Copied from one DASD volume to another (or to the same volume provided that the data set name is changed). A BDAM data set can be moved or copied from one DASD volume to another provided that the receiving device type is the IEHMOVE Program 365 same device type or larger, and that the record size does not exceed 32K bytes. SEQUENTIAL DATA SETS Figure 126 shows basic and optional move and copy sequential data sets. opera~ions for operation Basic Actions optional Actions Move Sequential Move the data set. For DASD, scratch the source data. For non-VSAM cataloged data sets, update the appropriate catalog to refer to the moved data set. Prevent automatic cataloging of the moved data set. Rename the moved data set. Copy Sequential Copy the data set. The source data set is not scratched. The catalog is not updated to refer to the copied data set. Delete the catalog or OS CVOL entry for the source data set. Catalog the copied data set on the receiving volume. Rename the copied data set. Figure 126. Moving and Copying Sequential Data Sets When moving or copying sequential data sets on DASD, IEHMOVE execution time can be reduced by using multiple BSAM buffers for input and output. The minimum number of buffers required for enhanced IEHMOVE copy performance is 4: two for input and two for output. The size of an input buffer is computed as: (INPUT BLOCKSIZE + KEY LENGTH) + DECB LENGTH + 4. The size of an output buffer is computed as: (OUTPUT BLOCKSIZE + KEY LENGTH) + DECB LENGTH + 4 + 16. The maximum number of input buffers used by IEHMOVE is two times the number of buffers which will fit in the input track size. The maximum number of output buffers used by IEHMOVE is two times the number of buffers which will fit in the output track size. If space for the minimum four buffers is not available, a single buffer is used and message IEH476I is issued. You can code the JCL REGION parameter in the JOB or EXEC statement to control buffer storage allocation. For details on how to code the REGION parameter. see JCl. Message IEH477I, describing the number and size of your buffers, will be issued each time multiple BSAM buffers are used. If you do not specify your region size to achieve the maximum number of buffers, the last line of the message will indicate the amount by which the value of the REGION parameter should be increased in order to obtain the maximum number of buffers. The execution time of an IEHMOVE move or copy operation will vary with the number of buffers available, the size of the data sets, and the block size. PARTITIONED DATA SETS Figure 127 shows basic and optional move and copy operations for partitioned data sets. 366 MVS/370 Utilities Operation Basic Actions optional Actions Move Partitioned Move the data set. Scratch the source data. For non-VSAM cataloged data sets, update the appropriate catalog to refer to the moved data set. Prevent automatic cataloging of the moved data set. Rename the moved data set. Reallocate directory space. (Not possible if the space was not allocated by IEHMOVE during this move function.) Perform a merge operation using members from two or more data sets. Move only selected members. Replace members. Unload the data set. Copy Partitioned Copy the data set. The source data is not scratched. The catalog is not updated to refer to the copied data set. Delete the catalog or OS CVOL entry for the source data set. Catalog the copied data set. Rename the copied data set. Reallocate directory space. (Not possible if the space previously allocated is partially used.) Perform a merge operation using members from two or more data sets. Copy only selected members. Replace members. Unload the data set. Figure 127. Moving and Copying Partitioned Data Sets IEHMOVE moves or copies partitioned members in the order in which they appear in the partitioned directory. That is, moved or copied members are placed in collating sequence on the receiving volume. Figure 128 on page 368 shows a copied partitioned data set. members are copied in the order in which they appear in the partitioned directory. The IEBCOPY utility program (see "IEBCOPY Program" on page 39) can be used to copy data sets whose members are not to be collated. The IEHMOVE Program 367 Source data set Copied data set Figure 128. Partitioned Data Set Before and After an IEHMOVE Copy Operation Members that are merged into an existing data set are placed, in collating sequence, after the last member in the existing data set. If the target data set contains a member with the same name as the data set to be moved, the member will not be moved/copied unless the REPLACE statement is coded. Figure 129 shows members from one data set merged into an existing data set. Members Band F are copied in collating sequence. Source data set Existing data set prior to merge Figure 129. Merging Two Data Sets Using IEHMOVE Figure 130 on page 369 shows how members from two data sets are merged into an existing data set. Members from additional data sets can be merged in a like manner. Members F, B, D, and E from the source data sets are copied in collating sequence. 368 MVS/370 Utilities Source data sets Existing data set prior to merge are placed in collating sequence after existing members Figure 130. Merging Three Data Sets Using IEHMOVE BDAM DATA SETS When moving or copying a BDAM data set from one device to another device of the same type, relative track and relative block integrity are maintained. When moving or copying a BDAM data set to a larger device, relative track integrity is maintai~ed for data sets with variable or undefined record formats; relative block integrity is maintained for data sets with fixed record formats. When moving or copying a BDAM data set to a smaller device or a tape, the data set is unloaded. An unloaded data set is loaded only when it is moved or copied to the same device type from which it was unloaded. MULTIVOLUME DATA SETS IEHMOVE can be used to move or copy multivolume data sets. To move or copy a multivolume data set, specify the complete volume list in the VOl=SER parameter on the DO statement. A maximum of 5 volumes can be specified. To move or copy a data set that resides on more than one tape volume, specify the volume serial numbers of all the tape volumes and the sequence numbers of the data set on the tape volumes in the utility control statement.• DOl 00 defines the mountable device on which the source volume is mounted. • 002 DD defines the mountable device on which the receiving volume is mounted. • SYSIN DO defines the control data set, which follows in the input stream. • MOVE specifies a move operation for selected entries and defines the source and receiving volumes. IEHMOVE Program 403 IEHPROGM PROGRAM IEHPROGM is a system utility used to modify system control data and to maintain data sets at an organizational level. IEHPROGM should only be used by those programmers locally authorized to do so. IEHPROGM can be used to: • Scratch a data set or a member. • Rename a data set or a member. • Catalog or remove catalog entries for a non-VSAM data set in an OS CVOL. • Build or delete an index or alias in an OS CVOL (SYSCTLG data set). • Connect or release two OS CVOLs. • Build and maintain a generation data group index in an OS CVOl. • Maintain data set passwords. SCRATCHING A DATA SET OR MEHBER IEHPROGM can be used to scratch the following from a DASD volume or volumes: • Sequential, ISAM, partitioned, or BDAM data sets • Members of a partitioned data set • Password-protected data sets • Data sets named by the operating system A data set is considered scratched when its data set control block is removed from the volume table of contents (VTOC) of the volume on which it resides; its space is made available for reallocation. A member is considered ~scratched when its name is removed from the directory of the partitioned data set in which it is contained. The space occupied by a scratched member is not available for reallocation until the partitioned data set is scratched or compressed. (When scratching a member of a partitioned data set, all aliases of that member should also be removed from the directory.) If RACF is active, ALTER authorization i~ required to scratch a RACF-defined data set, and UPDATE authorization is required to scratch a member of a partitioned data set. RENAMING A DATA SET OR MEMBER IEHPROGM can be used to rename a data set or member that resides on a DASD volume. In addition, the program can be used to change any member aliases. If RACF is active, ALTER authorization is required to rename a data set. UPDATE authorization is required to rename a member of a partitioned data set. 404 MVS/370 Utilities CATALOGING A DATA SET IN AN OS CVOL IEHPROGM can be used to catalog a non-VSAM sequential, ISAM, partitioned, or BDAM data set in an OS CVOL. The program catalogs a data set by generating an entry, containing the data set name and associated volume information, in the index of the OS CVOL. A valid TTR pointer is not placed in the DSCB until the first time the data set is referenced. The catalog function is used to catalog a non-VSAM data set in an OS CVOL that was not cataloged when it was created. IEHPROGM can also delete OS CVOL entries for a non-VSAM data set by removing the data set name and associated volume information from the OS CVOL. The cataloging function of IEHPROGM differs from a DISP=(,CATLG) specification in a DD statement in that the DISP=(,CATLG) specification cannot catalog a data set on a volume other than the system residence volume unless the system residence volume is properly connected to the other volume. (See "Connecting or Releasing Two OS CVOLs" on page 406.) The "uncataloging" function of IEHPROGM differs from a DISP=( ... ,UNCATLG) specification in a DD statement in that the DISP=( ... ,UNCATLG) specification cannot remove an entry from the SYSCTLG data set on a volume other than the system residence volume unless the two volumes are properly connected. You should not use the IEHPROGM CATLG/UNCATLG functions in place of DISP=(,CATLG) or DISP=(,UNCATLG) in a multi-step job. If a data set is to be "uncataloged" during termination of a step, use DISP=(OLD,UNCATLG). BUILDING OR DELETING AN INDEX IN AN OS CVOL IEHPROGM can be used to build a new index in an OS CVOL or to delete an existing index. In building an index, the program automaticallY creates as many higher level indexes as are necessary to complete the specified structure. IEHPROGM can be used to delete one or more indexes from an index structure; however, an index cannot be deleted if it contains any entries. That is, it cannot be deleted if it refers to a lower level index or if it is part of a structure indicating the fully qualified name of an OS CVOL cataloged data set. Figure 138 on page 406 shows an index structure before and after a build operation. The left portion of the figure shows two data sets cataloged in an OS CVOL, A.Y.YY and A.B.X.XX, before the build operation. The right-hand portion of the figure shows the index structure after the build operation, which was used to build index A.B.C.D.E. Note in the left portion of the figure that index levels C and D do not exist before the build operation. These levels are automatically created when the level E index is built. When the level E index is subsequently deleted, the level C and D indexes are not automatically deleted by the program. To delete these index levels, delete: A.B.C.D.E, A.B.C.D, and A.B.C, in that order. The level B index cannot be deleted because data set A.B.X.XX and the X level index are dependent upon the level B index. BUILDING OR DELETING AN INDEX ALIAS IN AN OS CVOL IEHPROGM can be used to assign an alternative name the highest level index of an OS CVOL or to delete index alias previously assigned. An alias cannot, assigned to the highest level of a generation data (alias) to an OS CVOL however, be group index. IEHPROGM Program 405 I ~ ~--'--1 ~ I I IX yy I I· .. 1 yy x xx • xx Befort build oper.tion , i iE After build oper.tion Figure 138. Index Structure Before and After an IEHPROGM Build Operation Figure 139 on page 406 shows an alias, XX, that is assigned to index A (a high level index). The cataloged data set A.B.C can be referred to as either A.B.C or XX.B.C. Figure 139. Building an Index Alias Using IEHPROGM CONNECTING OR RELEASING TWO OS CVOLS IEHPROGM can be used to connect an OS CVOL to a second OS CVOL by placing an entry into a high level index on the first OS CVOL. The entry contains an index name and the volume serial number and device type of the second OS CVOL. The program can subsequently release the OS CVOLs by removing the entry from the high level index. If two OS CVOLs are connected: • 406 MVS/370 Utilities The SYSCTLG data set must be created on the second volume for cataloging of data sets having the same high level index as the connected index. '. A high level index can only be connected to one second OS CVOl, but chaining is possible from a second to a third OS CVOl, etc. Before any OS CVOl can be accessed by the system, it must be defined in the ICF or VSAM master catalog. For details on how this ;s done, see Catalog Users Guide. Figure 140 shows how one OS CVOl can be connected to a second OS CVOl. Any subsequent index search for index X on the first control volume is carried to the second control volume. First OS CVOL Connected OS CVOL Figure 140. Connecting an OS CVOL to a Second OS CVOl Using IEHPROGM The index name of each high level index existing on the second OS CVOl must be present in the first OS CVOl; when a new high level index ;s placed on a second OS CVOl, the first OS CVOl should be connected to the second OS CVOl. Figure 141 on page 408 shows three OS CVOls connected to one OS CVOL. All volumes are accessible through high level indexes X, Y, and Z. BUILDING AND MAINTAINING A GENERATION DATA GROUP INDEX IN AN OS CVOL IEHPROGM can be used to build an index structure in an OS CVOL for a generation data group and to define what action should be taken when the index overflows. The lowest level index in the structure can contain up to 255 entries for successive generations of a data set. If the index overflows, the oldest entry is removed from the index, unless otherwise specified (in which case all entries are removed). If desired, the program can be used to scratch all generation data sets whose entries are removed from the index. Figure 142 on page 408 shows the index structure created for generation data group A.B.C. In this example, provision is made for up to five subsequent entries in the lowest level index. IEHPROGM Program 407 1st CVOL Figure 141. Connecting Three OS CVOLs Using IEHPROGM Figure 142. Building a Generation Data Group Index Using IEHPROGM Before a generation data group can be cataloged as such on an OS CVOL, a generation data group index must exist. Otherwise, a generation data set is cataloged as an individual data set, rather than as a generation. When creating and cataloging a generation data set on an OS CVOL, the user must provide the necessary DCB information. See Data Management Services-for a discussion of how DCB attributes are provided for a generation data group. 408 MVS/370 Utilities MAINTAINING DATA SET PASSWORDS IEHPROGM can be used to maintain non-VSAM password entries in the PASSWORD data set and to alter the protection status of BDAM data sets in the data set control block (DSCB). For a complete description of data set passwords and the PASSWORD data set, see System Programming library: Data Management and Data Management Services. A data set can have one of three types of password protection, as indicated in the DSCB for BDAM data sets and in the tape label for tape data sets. (See Debugging Handbook for the format of the DSCB. See Magnetic Tape labels and File Structure for a description of tape labels.) The possible types of data set password protection are: • No protection, which means that no passwords are required to read or write the data set. • Read/write protection, which means that a password is required to read or write the data set. • Read-without-password protection, which means that a password is required only to write the data set; the data set can be read without a password. If a system data set is password protected and a problem occurs on the data set, maintenance personnel must be provided with the password in order to access the data set and resolve the problem. A data set can have one or more passwords assigned to it; each password has an entry in the PASSWORD data set. A password assigned to a data set can allow read and write access, or only read access to the data set. Figure 143 on page 410 shows the relation~hip between the protection status of data set ABC and the type of access allowed by the passwords assigned to the data set. Passwords ABLE and BAKER are assigned to data set ABC. If no password protection is set in the DSCB or tape label, data set ABC can be read or written without a password. If read/write protection is set in the DSCB or tape label, data set ABC can be read with either password ABLE or BAKER and can be written with password ABLE. If read-without-password protection is set in the DSCB or tape label, data set ABC can be read without a password and can be written with password ABLE; password BAKER is never needed. Before IEHPROGM is used to maintain data set passwords, the PASSWORD data set must reside on the system residence volume. IEHPROGM can then be used to: • Add an entry to the PASSWORD data set. • Replace an entry in the PASSWORD data set. • Delete an entry from the PASSWORD data set. • Provide a list of information from an entry in the PASSWORD data set. Each entry in the PASSWORD data set contains the name of the protected data set, the password, the protection mode of the password, an access counter, and 77 bytes of optional user data. The protection mode of the password defines the type of access allowed by the password and whether the password is a control password or secondary password. The initial password, added to the PASSWORD data set for a particular data set, is marked in the entry as the control password for that data set. The second and subsequent passwords added for the same data set are marked as secondary passwords. IEHPROGM Program 409 Protection status of data set ABC-contained in its DSCB or tape label The kind of protection pointed at allows data set ABC to be: No password protection System residence volume -----~ l""ii@@@H;f;!f@ Read or written on with no password I'" Read/Write protection WMf Read with . no password Figure 143. Relationship between the Protection Status of a Data Set and Its Passwords For BDAM data sets, IEHPROGM updates the protection status in the DSCB when a control password entry is added, replaced, or deleted. This permits setting and resetting the protection status of an existing BDAM data set at the same time its passwords are added, replaced, or deleted. IEHPROGM automatically alters the protection statu~ of a data set in the DSCB if the following conditions are met: • The control password for the data set is being added, replaced, or deleted. • The data set is online. • The volume on which the data set resides 1S specified on the utility control statement, or the data set is cataloged. .• The data set is not allocated within the IEHPROGM job. For tape data sets, IEHPROGM cannot update the protection status in the tape label when a password entry is added, replaced, or deleted. Protection status in a tape label must be set with JCl. Passwords to be added, replaced, deleted, or listed can be specified on utility control statements or can be entered by the console operator. IEHPROGM issues a message to the console operator when a password on a utility control statement is either missing or invalid. The message contains the job name, step name, and utility control statement name and identifies the particular password that is missing or invalid. Two invalid passwords are allowed per password entry on each utility control statement before the request is ignored; a total of five invalid passwords is allowed for the password entries on all the utility control statements in a job step before the step is canceled. Adding Data set Passwords When a password is added for a data set, an entry is created in the PASSWORD data set with the specified data set name, password name, protection mode of the password (read/write or read only), and the ~ptional 77 characters of user-supplied data. The access counter in the entry is set to zero. ~ 410 MVS/370 Utilities The control password for a data set must always be specified to add, replace, or delete secondary passwords. The control password should not be specified, however, to list information from a secondary password entry. Secondary passwords can be assigned to a data set to restrict some users to reading the data set or to record the number of times certain users access the data set. The access counter in each password entry provides a count of the number of times the password was used to successfully open the data set. If a control password for a BDAM, online data set is added, the protection status of the data set (read/write or read-without-password) is set in the DSeB. However, the data set to be protected must not be allocated within the same job as the one in which IEHPROGM is executed. If it is allocated, the DSeB cannot be accessed and the protection status is not set. If the data set to be protected is being created within the same job, use JeL to set the protection status in the DSeB. Replacing Data set Passwords Any of the following information may be replaced in a password entry: the password, protection mode (read/write or read only) of the password, and the 77 characters of user data. The protection status of a data set can be changed by replacing the control entry for the data set. If the control entry of a BDAM, online data set is replaced, the DSeB is also reset to indicate any change in the protection status of the data set. Therefore, you should ensure that the volume is online when changing the protection status of a BDAM data set. Deleting Data set Passwords When a control password entry is deleted from the PASSWORD data set, all secondary password entries for that data set are also deleted. However, when a secondary entry is deleted, no other password entries are deleted. If the control password entry is deleted for an online, BDAM data set, the protection status of the data set in the DSeB is also changed to indicate no protection. When deleting a control password for a BDAM data set, the user should ensure that the volume is online. If the volume is not online, the password entry is removed, but data set protection is still indicated in the DSeB; the data set cannot be accessed unless another password is added for that data set. If the control password entry is deleted for a tape data set, the tape volume cannot be accessed unless another password is added for that data set. The delete function should be used to delete all the password entries for a scratched data set to make the space available for new entries. Listing Password Entries A list of information from any entry in the PASSWORD data set can be obtained in the SYSPRINT data set by providing the password for that entry. The list includes: the number of times the password has been used to successfully open the data set; the type of password (control password or secondary password) and type of access allowed by the password (read/write or read-only); and the user data in the entry. Figure 144 on page 412 shows a sample list of information printed from a password entry. IEHPROGM Program 411 DECIMAL ACCESS COUNT= 000025 PROTECT MODE BYTE= SECONDARY, READ ONLY USER DATA FIELD= ASSIGNED TO J. BROWN Figure 144. Listing of a Password Entry INPUT AND OUTPUT IEHPROGM uses the following input: • One or more data sets containing system control data to be modified. • A control data set that contains utility control statements used to control the functions of the program. IEHPROGM produces the following output: • A modified object data set or volume(s). • A message data set that contains error messages and information from the PASSWORD data set. RETURN CODES IEHPROGM returns a code in register 15 to indicate the results of program execution. The return codes and their meanings are listed below. Codes Meaning 00 (00 hex) Successful completion. 04 (04) A syntax error was found in the name field of the control statement or in the PARM field in the EXEC statement. Processing continues. OS (OS) A request for a specific operation was ignored because of an invalid control statement or an otherwise invalid request. The operation is not performed. 12 (Oe) An input/output error was detected when trying to read from or write to SYSPRINT, SYSIN or the VTOC. The job step is terminated. 16 (10) An unrecoverable error exists. terminated. The job step is Figure 145. IEHPROGM Return Codes CONTROL IEHPROGM is controlled by job control statements and utility control statements. Job control statements are used to: 412 • Execute or invoke the program. • Define the control data set. MVS/370 Utilities • Define volumes and/or devices to be used during the course of program execution. • Prevent data sets from being deleted inadvertently. • Prevent volumes from being demounted before they have been completely processed by the program. • Suppress listing of utility control statements. Utility control statements are used to control the functions of the program and to define those data sets or volumes that are to be modified. JOB CONTROL STATEMENTS Figure 146 on page 414 shows the job control statements for IEHPROGM. With the exception of the SYSIN and SYSPRINT DD statements, all DD statements in Figure 146 on page 414 are used as device allocation statements, rather than as true data definition statements. Because IEHPROGM modifies the internal control blocks created by device allocation DD statements, the DSNAME parameter, if supplied, will be ignored by IEHPROGM. (All data sets are defined explicitly or implicitly by utility control statements.) Note: Unpredictable results may occur in multitasking environments where dynamic allocation/deallocation of devices, by other tasks, causes changes in the TIOT during IEHPROGM execution. PARM Information on the EXEC statement Additional information can be specified in the PARM parameter of the EXEC statement to control the number of lines per page on the output listing and to suppress printing of utility control statements. The EXEC statement can be coded: PGM=IEHPROGM[,PARM=[LINECNT=xx,] [PRINTINOPRINTll -- The LINECHT parameter specifies the number of lines per page in the listing of the SYSPRINT data set; xx is a 2-digit number, from 01 through 99. If LINECNT is omitted, or if an error is encountered in the LINECNT parameter, the number of lines per page will be 45. The PRINT value specifies that the utility control statements are to be written to the SYSPRINT data set. If neither PRINT nor NOPRIHT is coded, PRINT is assumed. The NOPRIHT value specifies that utility control statements are not to be written to the SYSPRINT data set. Suppressing printing of utility control statements assures that passwords assigned to data sets remain confidential. However, suppressing printing may make it difficult to interpret error messages because the relevant utility control statement is not printed before the message. IEHPROGM Program 413 statement Use JOB Initiates the job. EXEC Specifies the program name (PGM=IEHPROGM) or, if the job control statements reside in a procedure library, the procedure name. Additional PARM information can be specified to control the number of lines per page on the output listing and to suppress printing of utility control statements. See "PARM Information on the EXEC Statement." SYSPRINT DD Defines a sequential message data set. anynamel DO Defines a permanently mounted volume. (The system residence volume is considered to be a ~ermanently mounted volume.) anyname2 DO Defines a mountable device type. SYSIN DD Defines the control data set. The control data set normally follows the job control statements in the input stream; however, it can be defined as a member of a procedure library. Figure 146. IEHPROGM Job Control Statements SYSPRINT DD statement The block size for the SYSPRINT data set must be a multiple of 121. Any blocking factor can be specified. anynamel DO statement One anyname1 DD statement must be included for each permanently mounted volume referred to in the job step. The anynamel DD statement can be entered: //anyname1 DD UNIT=xxxx,VOLUME=SER=xxxxxx,DISP=OLD The UNIT and VOLUME parameters define the device type and volume serial number. The DISP=OLD specification prevents the inadvertent deletion of a data set. (The anynamel DD statement is arbitrarily assigned the ddname DOl in the IEHPROGM examples.) anyname2 DO statement One anyname2 DD statement must be included for each mountable device to be used in the job step. Multiple statements may be coded as long as each anyname is unique. The anyname2 DD statement can be coded in the following ways: //anyname2 DO VOLUME=SER=xxxxxx,UNIT=xxxx,OISP=OLD //anyname2 DO VOLUME=(PRIVATE,SER=xxxxxx), // UNIT=(xxxx"DEFER),DISP=OLO The second example can be used to specify deferred mounting when a large number of magnetic tapes or OASD volumes are to be processed in one application of the program. The UNIT and VOLUME parameters define the device type and volume serial number. The DISP=OLD specification prevents the 414 MVS/370 Utilities inadvertent deletion of a data set. Unit affinity cannot be used on DD statements defining mountable devices. (The anyname2 DD statement is arbitrarily assigned the ddname DD2 in the IEHPROGM examples.) When IEHPROGM is dynamically invoked in a job step containing a program other than IEHPROGM, the DD statements defining mountable devices must be included in the job stream prior to DD statements defining data sets required by the other program. Refer to Appendix B, "DD Statements for Defining Mountable Devices" on page 443 for instructions on defining mountable volumes. SYSIN DD statement The block size for the SYSIN data set must be a multiple of 80. Any blocking factor can be specified. UTILITY CONTROL STATEMENTS Figure 147 on page 416 shows the utility control statements for IEHPROGM. Continuation requirements for utility control statements are described in "Continuing Utility Control Statements" on page 5. Note that continued lines need not begin in column 16 for IEHPROGM. SCRATCH statement The SCRATCH statement is used to scratch a data set or member from a DASD volume. A data set or member is scratched only from the volume(s) designated in the SCRATCH statement. This function does not delete OS CVOL entries for scratched data sets. A SCRATCH operation will not be executed if the data set or volume is being used by a program executing concurrently. "DISP=OLD" on the DD statement only prevents the inadvertent deletion of a data set. It does not ensure exclusive use of the data set during execution of the job step. For multivolume data sets, all volumes specified must be online. The format of the SCRATCH statement is: [labell SCRATCH [VTOCIDSNAME=name) ,VOL=device=(list) [,PURGE] [,MEMBER=ngmgl [,SYS] RENAME Statement The RENAME statement is used to change the true name or alias of a data set or member residing on a DASD volume. The name is changed only on the designated volume(s). The rename operation does not update the OS CVOL. A RENAME operation will not be executed if the data set or volume is being used by a program executing concurrently. IEHPROGM Program 415 statement Use SCRATCH Scratches a data set or a member from a DASD volume. RENAME Changes the name or alias of a data set or member residing on a DASD voluma. CATLG Generates an entry in the index of an OS CVOl. UNCATLG Removes an entry from the lowest level index of an OS CVOl. BLDX Creates a new index in the OS CVOl (SYSCTlG data set). DLTX Removes a low level index from an OS CVOl. BLDA Assigns an alias to an index at the highest level of an OS CVOl. DLTA Deletes an alias previously assigned to- an index at the highest level of an OS CVOl. CONNECT Connects two OS CVOls together using a high level index name. RELEASE Removes a high level index name from one OS CVOl that served as a connector or pointer to a second OS CVOl. BLDG Builds an index in an OS CVOl for a generation data group and defines what action should be taken when the index overflows. ADD Adds a password entry in the PASSWORD data set. REPLACE Replaces information in a password entry. DELETEP Deletes an entry in the PASSWORD data set. LIST Formats and lists information from a password entry. Figure 147. IEHPROGM Utility Control Statements For multivolume data sets, all volumes specified must be online. If you do not code the MEMBER parameter, then the entire data set is renamed. The format of the RENAME statement is: [labell RENAME DSNAME=rul!!!.@ ,VOL=device=(listl ,NEWNAME=!llt!.nJ! [,MEHBER=rul!!!.@] 416 MVS/370 Utilities CATLG statement The CATLG statement is used to generate a non-VSAM entry in the index of an OS CVOL. If additional levels of indexes are required in the OS CVOL, this function automatically creates them. When cataloging generation data sets and the index becomes full, see "BLDG (Build Generation Data Group Index) Statement" on page 419 for the action to be taken. To catalog VSAM data sets in an ICF or VSAM catalog, see Catalog Users Guide and Access Method Services Reference. When device is represented by a group name (for example, SYSDA) instead of a generic name (for example, 3350 or 3400) in the VOL parameter, the catalog operation does not enter the device type code in the OS CVOL. Instead, it places a unique entry in the device type field of the OS CVOL. The allocation of the device for this entry may not be satisfactory to the user. The generic name should be used if the group name was generated for one or more device types. When the system is subsequently generated, this entry may no longer be valid; that is, entries for all such group names should be deleted and then the group names should be recataloged after a subsequent generation of the system. When cataloging data sets residing on tape, specify the volume serial number and the data set sequence number as follows: VOL=device=(serial,segno, ••• l If a data set is created on a 9-track dual density tape unit (3400-6), the data set can be cataloged with a device specification of 3400-3 for an 1600 bits per inch tape or 3400-5 for a 6250 bits per inch tape. If a device specification of 3400-6 is made when the data set is cataloged, any subsequent retrieval of that data set is made on a dual density unit. The format of the CATLG statement [labell CATLG i~: DSNAHE=name ,VOL=device=(listll(serial,segnol [,CVOL=device=seriall UNCATLG statement The UNCATLG statement is used to remove a non-VSAM entry from the index of the OS CVOL. If the entry removed was the last entry in the index, that index and all higher, unneeded, indexes, with the exception of the highest-level index, are removed from the OS CVOL. The format of the UNCATLG statement is: [labell UNCATLG DSNAME=~ [,CVOL=device=seriall IEHPROGM Program 411 BLDX (Build Index) statement The BLDX statement is used to create a new index in an OS CVOL. If the creation of an index requires that higher level indexes be created, this function automatically creates them. The format of the BLDX statement is: [labell BLDX INDEX=~ [,CVOL=device=seriall DLTX (Delete Index) statement The DLTX statement is used to remove an index from an OS CVOL. Only an index that has no entries can be removed. Because this function does not delete hIgher level indexes, it must be used repetitively to delete an entire structure. For example, to delete a generation data group index structure A.B.C.names, you must code the following sequence of statements: DLTX INDEX=A.B.C DLTX INDEX=A.B DLTX INDEX=A The format of the DLTX statement is: [labell DLTX INDEX=~ [,CVOL=device=seriall BLDA (Build Index Alias) statement The BLDA statement is used to assign an alias to an index at the highest level of an OS CVOL. The format of the BLDA statement is: [labell BLDA INDEX=name ,ALIAS=ruung [,CVOL=device=seriall DLTA (Delete Index Alias) statement The DLTA statement is used to delete an alias previously assigned to an index at the highest level of an OS CVOL. The format of the DLTA statement is: [labell DLTA ALIAS=name [,CVOL=device=seriall 418 MVS/370 Utilities CONNECT statement The CONNECT level index CVOL by its it contains for (during statement is used to place an entry in the high of an OS CVOL. The entry identifies a second OS device type and volume serial number. In addition, an index name identifying the index to be searched subsequent index searches) on the second OS CVOL. This function does not create an index on the second OS CVOL. The CONNECT statement does not create a SYSCTLG data set on the connected control volume. Before cataloging the first data set on a connected control volume, the user must define a SYSCTLG data set on that volume. This can be done with the following DO statement: //ddname DO DSNAME=SYSCTLG,UNIT=xxxx,DISP=(,KEEP), // SPACE=(CYL,1),VOLUME=SER=xxxxxx If a job requires an auxiliary control volume to complete a catalog search, the user need not have the auxiliary control volume mounted before the job is begun. (The user does not have to remember the volume on which a particular data set is cataloged.) The system directs the operator to mount an auxiliary control volume if it is needed. Before any OS CVOL can be accessed by the system, it must be defined in the ICF or VSAM master catalog. For details, see Catalog Users Guide. The format of the CONNECT statement is: [labell CONNECT INDEX=~ ,VOL=device=serial [,CVOL=device=seriall RELEASE (Disconnect) statement The RELEASE statement is used to remove an entry from the high level index of an OS CVOL. This disconnects, in effect, a second OS CVOL from the first OS CVOL. The RELEASE statement does not delete an index from the second OS CVOL. The format of the RELEASE statement is: [labell RELEASE INDEX=name [,CVOL=device=seriall BLDG (Build Generation Data Group Index) Statement The BLDG statement is used to build an index for a gen~ration data group, and to define what action should be taken when the index overflows. To delete a generation data group index structure, use the "DLTX (Delete Index) Statement" on page 418. IEHPROGM Program 419 The format of the BLDG statement is: [labell BUILD INDEX=M.!!1..@ ,ENTRIES=n [,CVDL=device=serial] [,EMPTYl [ ,DELETE] ADD (Add a Password) statement The ADD statement is used to add a password entry in the PASSWORD data set. When the control entry for a BDAM, online data set is added, the indicated protection status of the data set is set in the DSCB; when a secondary entry is added, the protection status in the DSCB is not changed. The format of the ADD statement is: [labell ADD DSNAME=rul!!!..@ [,PASWDRD2=new-passwordl [,CPASWDRD=control-passwordl [,TYPE=codel [,VDL=device=(list)] [,DATA='user-data'l REPLACE (Replace a Password) statement The REPLACE statement is used to replace any or all of the following information in a password entry: the password name, protection mode Cread/write or read only) of the password, and user data. When the control entry for a BDAM, online data set is replaced, the protection status of the data set is changed in the DSCB if necessary; when a secondary entry is replaced, the protection status in the DSCB is not changed. The format of the REPLACE statement is: [labell REPLACE DSNAME=1l§l!!.g [,PASWORDl=current-passwordl [,PASWORD2=new-passwordl [,CPASWORD=control-passwordl [,TYPE=codel [,VOL=device=(!ist)] [,DATA='user-data'l 420 MVS/370 Utilities DELETEP (Delete a PasswordJ statement The DELETEP statement is used to delete an entry .in the PASSWORD data set. If a control entry is deleted, all the secondary entries for that data set are also deleted. If a secondary entry is deleted, only that entry is deleted. When the control entry for a BDAM, online data set is deleted, the protection status in the DSCB is set to indicate that the data set is no longer protected. The format of the DELETEP statement is: [label] DELETEP DSNAME=~ [,PASWORDI=current-passwordl [,CPASWORD=control-passwordl [,VOL=device=(listJ] LIST (List Information from a PasswordJ statement The LIST statement is used to format and print information from a password entry. The format of the LIST statement is: [labell LIST DSNAME=~ ,PASWORDI=current-password Parameters Applicable Control statements Description of Parameters ALIAS BLDA DLTA ALIAS=name specifies an unqualified name to be assigned as the alias or to be deleted from the index. The name must not exceed 8 characters. CPASWORD ADD CPASWORD=contro!-password specifies the control password for the data set. CPASWORD must be specified unless this is the first password assigned to the data set, in which case PASWORD2 specifies the password to be added. DELETEP REPLACE CPASWORD=control-password CPASWORD must be specified unless the control entry is being changed or deleted, in which case PASWORDI specifies the control password. IEHPROGM Program 421 Parameters CVOL Applicable Control statements CATLG UNCATLG BlDX DlTX BlDA DlTA CONNECT RELEASE BLDG Description of Parameters CVOL=device=serial For CATlG, UNCATLG, BLDX, DLTX and BLDG, CVOl specifies the OS CVOL on which the search for the index (entry, for UNCATLG) is to begin. For BLDA and DLTA, CVOL specifies the OS CVOL on which the entry is to be made or deleted. For CONNECT and RELEASE, CVOL specifies specifies the device type and volume serial number of the first OS CVOL. If CVOL is omitted: For CATLG and UNCATLG, the search begins with the ICF or VSAM master/JOBCAT/STEPCAT catalog. For BLDX, DlTX, BlDA, DLTA, CONNECT, RELEASE and BLDG, the system attempts to locate the proper (the first, for CONNECT) OS CVOL by checking the ICF or VSAM master catalog for an OS CVOl pointer alias name equal to the high level index specified in the INDEX (ALIAS, for DlTA) parameter. The OS CVOl must be defined in the ICF or VSAM master catalog as: SYSCTlG.Vserial, where serial must equal the serial number of the CVOl. See Catalog Users Guide for more information. Default: The search begins with the ICF or VSAM master catalog (or JOBCAT/STEPCAT, if specified). DATA ADD REPLACE DATA='user-data' specifies the user data to be placed in the password entry. The user data has a maximum length of 77 bytes and must be enclosed in apostrophes. Any other apostrophes contained within the user data must be entered as two single apostrophes. If DATA is omitted from an ADD operation, 77 blanks are used. If DATA is omitted from a REPLACE operation, current user data is not changed. DELETE 422 BLDG MVS/370 Utilities DELETE specifies that generation data sets are scratched after their entries are removed from the index. Parameters APplicable Control statements Description of parameters DSNAME SCRATCH RENAME CATLG UNCATLG ADD REPLACE DELETEP LIST DSNAME=name specifies the fully qualified name of the data set to be either scratched or renamed; the fully qualified name of the partitioned data set that contains the member to be scratched or renamed; the fully qualified name of the data set to be cataloged or uncataloged; or the fully qualified name of the data set whose password entry is to be added, replaced, deleted, or listed. The qualified name must not exceed 44 characters, including delimiters. EMPTY BLDG EMPTY specifies that all entries be removed from the generation data group index when it overflows. This deletes all index entries for all of the generation data sets. Default: The entries with the largest generation numbers will be maintained in the catalog when the generation data group index overflows. ENTRIES BLDG ENTRIES=n specifies the number of entries to be contained in the generation data group index; n must not exceed 255. INDEX BLDG INDEX=name specifies the 1- to 35-character qualified name of the generation data group index. BLDX DLTX INDEX=name specifies the qualified name of the index to be created or deleted. The qualified name must not exceed 44 characters, including delimiters. BLDA INDEX=name specifies the unqualified name of the index to which an alias name is to be assigned. The unqualified name must not exceed 8 characters. CONNECT RELEASE INDEX=name specifies the unqualified index name to be entered or removed from the high level index on the first OS CVOL. The unqualified name must not exceed 8 characters. IEHPROGM Program 423 Parameters MEMBER APplicable Control statements SCRATCH RENAME Description of Parameters MEMBER=name specifies a member name or alias of a member (in the named data set) to be renamed or removed from the directory of a partitioned data set. This name is not validity-checked because all members must be accessible, whether the name is valid or not. Default: The entire data set or volume of data sets specified by name is changed or scratched. NEWNAME RENAME NEWNAME=name specifies the new fully qualified name or alias name for the data set or the new member. PASWORDI REPLACE DELETEP LIST PASWORD1=current-password specifies the password in the entry to be listed, changed, or deleted. Default: The operator is prompted for the current password. PASWORD2 ADD REPLACE PASWORD2=new-password specifies the new password to be added or assigned to the entry. If the password is not to be changed, the current password must also be specified as the new password. The password can consist of 1 to 8 alphameric characters. Default: The operator is prompted for a new password. PURGE SCRATCH PURGE specifies that each data set specified by DSNAME or VTOC be scratched, even if its expiration date has not elapsed. Default: The specified data sets are scratched only if their expiration dates have elapsed. SYS SCRATCH SYS specifies that data sets which have not expired but which have names that begin with "AAAAAAAA.AAAAAAAA.AAAAAAAA.AAAAAAAA." or "SYSnnnnn.T" and "F," "V," or "A" in position 19 are scratched. These are names assigned to data sets by the operating system. This parameter is valid only when VTOC "is specified. If the name of the data set to be scratched begins with SYS, nnnnn is the date in dddyy format. 424 MVS/370 Utilities Parameters TYPE Applicable Control statements ADD REPLACE Description of Parameters TVPE=code specifies the protection code of the password and, if a control password entry is to be changed for or assigned to a BDAM, online data set, specifies the protection status of the data set. The values that can be specified for ~ are: 1 2 3 specifies that the password is to allow both read and write access to the data set; if a control password is being assigned or changed, read/write protection is set in the DSCB. specifies that the password is to allow only read access to the data set; if control password is being assigned or changed, read/write protection is set in the DSCB. specifies that the password is to allow both read and write access to the data set; if a control password is being assigned or changed, read-without-password protection is set in the DSCB. Default: For ADD, if this parameter is omitted, the new password is assigned the same protection code as the control password for the data set. If a control password is being "added," TYPE=3 is the default. For REPLACE, the protection is not changed. IEHPROGM Program 425 Parameters Applicable Control statements Description of Parameters VOL CONNECT VDL=de~ice=serial ADD REPLACE DELETEP SCRATCH RENAME VDL=device=(listJ specifies the device type and serial number(s) of the volume(s), limited to 50, that contain the data set(s). If only one serial number is listed in list, it need not be enclosed in parentheses.-- specifies the device type and serial number of the second OS CVOL. This information is placed 1n the high level index of the first OS CVOL. For ADD, REPLACE and DELETEP, if omitted, the protection status in the DSCB is not set or changed, unless the data set is cataloged in the OS CVOL. This parameter is not necessary for secondary password entries, or if the desired protection status in the DSCB is already set or is not to be changed by ADD or REPLACE. For SCRATCH and RENAME, if VTOC or MEMBER is specified, VOL cannot specify more than one volume. Caution should be used when specifying VTOC if VOL specifies the system residence volume. CATlG VDL=device=(listll(serial,segnol specifies the device type, serial numbers, and data set sequence numbers (for tape volumes) of the volumes (up to 50) that contain the data sets to be cataloged in the OS CVOL. The volume serial numbers must appear in the same order in which they were originally encountered (in DO statements within the input stream) when the data set was created. segno is valid only for data sets which reside on tape. VTOC SCRATCH VTDC specifies that all data sets on the specified volume, except those protected by a password or those whose expiration dates have not expired, are scratched. Password-protected data sets are scratched if the correct password is provided. The effect of VTOC is modified when it is used with PURGE or SYS. IEHPROGH EXAMPLES The following examples illustrate some of the uses of IEHPROGM. Figure 148 can be used as a quick-reference guide to IEHPROGM examples. The numbers in the "Example" column point to the examples that follow. 426 MVS/370 Utilities Operation Mount Volumes Comments Example SCRATCH Disk VTOC is scratched. 1 SCRATCH UNCATLG Disk Two data sets are scratched and their entries removed from the OS CVOL. 2 RENAME, UNCATLG CATLG Disks A data set is renamed on two mountable devices; the old data set name is removed from the OS CVOL. The data set is cataloged under its new name. 3 UNCATLG Disk Index structures for three generation data sets are deleted from the OS CVOL. 4 RENAME DELETEP, and ADD Disk A data set is renamed. The old passwords are deleted and new passwords are assigned. 5 LIST and REPLACE Disk A password entry is 1 i sted. Protection mode and status are changed, and user data is added. 6 RENAME Disk A member of a partitioned data set is renamed. 7 CATLG and CONNECT Disk One OS CVOL is connected to another. 8 BLDG, RENAME and CATLG Disk A generation data group index is built, three data sets are renamed and entered in the index. 9 BLDG Disk A new generation data group index is built and updated through JCL. A model DSCB is created. New generations are added. 10 Figure 148. IEHPROGM Example Directory Examples that use disk or tape in place of actual device numbers must be changed before use. See "DASD and Tape Device Support" on page 3 for valid device number notation. IEHPROGM EXAMPLE 1 In the following example, all data sets are scratched from the volume table of contents of a mountable volume. Because the system residence volume is not referred to, no DDI DD statement is necessary in the job stream. //SCRVTOC JOB // EXEC //SYSPRINT DD //DD2 DD //SYSIN DD SCRATCH 091550,BROWN PGM=IEHPROGM SYSOUT=A UNIT=disk,VOLUME=SER=222222,DISP=OLD * VTOC,VOL=disk=222222, SYS The SCRATCH statement, used in this example, indicates that all data sets (including those system data sets beginning with AAAAAAAA.AAAAAAAA.AAAAAAAA.AAAAAAAA) whose expiration dates have expired are scratched from the specified volume. IEHPROGM Program 427 IEHPROGH EXAMPLE 2 In this example, two data sets are scratched: SETI is scratched on volume 222222, and A.B.C.D.E is scratched on volume 222222. Both data sets are uncataloged. //SCROSETS JOB // EXEC //SYSPRINT DO //ODI DD //D02 DD //SYSIN OD SCRATCH UHCATlG SCRATCH UHCATlG 091550,BROWN PGM=IEHPROGM SYSOUT=A UNIT=disk,VOlUME=SER=llllll,DISP=OlD UNIT=disk,DISP=OlD,VOlUME=SER=222222 *DSNAME=SETl,VOL=disk=222222 DSNAME=SETl DSNAME=A.B.C.D.E,VOl=disk=222222 DSNAME=A.B.C.D.E The utility control statements are discussed below: • The first SCRATCH statement specifies that SETl, which resides on volume 222222, is scratched. • The first UNCATlG statement specifies that SETI is uncataloged. • The second SCRATCH statement specifies that A.B.C.D.E, which resides on volume 222222, is scratched. • The second UNCATlG statement specifies that A.B.C.D.E is uncataloged. IEHPROGM EXAMPLE 3 In this example, the name of a data set is changed on two mountable volumes. The old data set name is removed from the OS CVOl and the data set is cataloged under its new data set name. /IRENAMEOS JOB // EXEC /ISYSPRINT DD //001 DD //D02 DD /1 //SYSIN RENAME UHCATlG CATlG 091550,BROWN PGM=IEHPROGM SYSOUT=A VOlUME=SER=llllll,UNIT=dfsk,DISP=OlD UNIT=(disk"DEFER),DISP=OlD, VOlUME=(PRIVATE,SER=(222222,333333» DD * DSNAME=A.B.C,NEWNAME=NEWSET, VOl=disk=(222222,333333) OSNAME=A.B.C OSNAME=NEWSET,VOl=disk=(222222,333333) 72 C The control statements are discussed below: 428 • RENAME specifies that data set A.B.C, which resides on volumes 222222 and 333333, is renamed HEWSET. • UHCATlG specifies that data set A.B.C is uncataloged. • CATlG specifies that HEWSET, which resides on volumes 222222 and 333333, is cataloged in the OS CVOl. MVS/370 utilities IEHPROGM EXAMPLE 4 In this example, three data sets--A.B.C.D.E.F.SETl, A.B.C.G.H.SET2, and A.B.I.J.K.SET3--are uncataloged. //DLTSTRUC JOB // EXEC //SYSPRINT DD //DD1 DD //SYSIN DD UNCATLG UNCATLG UNCATlG 09#550,BROWN PGM=IEHPROGM SYSOUT=A UNIT=disk,VOlUME=SER=111111,DISP=OlD * DSNAME=A.B.C.D.E.F.SETI DSNAME=A.B.C.G.H.SET2 DSNAME=A.B.I.J.K.SET3 The control statements are discussed below: • The UNCATLG statements specify that data sets A.B.C.D.E.F.SETl, A.B.C.G.H.SET2, and A.B.I.J.K.SET3 are uncataloged. IEHPROGM EXAMPLE 5 In this example, a data set is renamed. The data set passwords assigned to the old data set name are deleted. Then two passwords are assigned to the new data set name. If the data set is not cataloged, a message is issued indicating that the lOCATE macro instruction failed. //ADDPASS JOB 09#550,BROWN // EXEC PGM=IEHPROGM,PARM='NOPRINT' //SYSPRINT DD SYSOUT=A //DD1 DD VOlUME=(PRIVATE,SER=222222),DISP=OlD, // UNIT=(disk"DEFER) //SYSIN DD * RENAME DSNAME=OlD,VOl=disk=222222,NEWNAME=NEW DElETEP DSNAME=OlD,PASWORD1=KEY ADD DSNAME=NEW,PASWORD2=KEY,TYPE=1, DATA='SECONDARY IS READ' ADD DSNAME=NEW,PASWORD2=READ,CPASWORD=KEY,TYPE=2, DATA='ASSIGNED TO J. DOE' 72 C C The utility control statements are discussed below: • RENAME specifies that the data set called OLD is renamed NEW. The operator is required to supply a password to rename the old data set. • DElETEP specifies that the entry for the password KEY is deleted. Because KEY is a control password in this example, all the password entries for the data set name are deleted. The VOL parameter is not needed because the protection status of the data set as set in the DSCB is not to be changed; read/write protection is presently set in the DSCB, and read/write protection is desired when the passwords are reassigned under the new data set name. • The ADD statements specify that entries are added for passwords KEY and READ. KEY becomes the control password and allows both read and write access to the data set. READ IEHPROGM Program 429 becomes a secondary password and allows only read access to the data set. The VOL parameter is not needed, because the protection status of the data set is still set in the DSCB. IEHPROGM EXAMPLE 6 In this example, information from a password entry is listed. Then the protection mode of the password, th~ protection status of the data set, and the user data are changed. //REPLPASS JOB 091550,BROWN EXEC PGM=IEHPROGM,PARM='NOPRINT' //SYSPRINT DD SYSOUT=A //DDI DD UNIT=disk,VOLUME=SER=111111,DISP=OLD //DD2 DD VOLUME=(PRIVATE,SER=(222222,333333», // UNIT=(disk"DEFER),DISP=OLD //SYSIN DD * LIST DSNAME=A.B.C,PASWORD1=ABLE REPLACE DSNAME=A.B.C,PASWORD1=ABLE, PASWORD2=ABLE,TYPE=3, VOL=disk=(222222,333333), DATA='NO SECONDARIES; ASSIGNED TO DEPT 31' 72 C C C The utility control statements are discussed below: • LIST specifies that the access counter, protection mode, and user data from the entry for password ABLE are listed. Listing the entry permits the content of the access counter to be recorded before the counter is reset to zero by the REPLACE statement. • REPLACE specifies that the protection mode of password ABLE is to be changed to allow both read and write access and that the protection status of the data set is changed to write-only protection. The VOL parameter is required because the protection status of the data set is changed and the data set, in this example, is not cataloged. Because this is a control password, the CPA SWORD parameter is not required. IEHPROGM EXAMPLE 7 In this example, a member of a partitioned data set is renamed. //REN // //SYSPRINT //DD1 //SYSIN RENAME JOB 091550,BROWN EXEC PGM=IEHPROGM DD SYSOUT=A DD VOL=SER=222222,DISP=OLD,UNIT=disk DD * VOL=disk=222222,DSNAME=DATASET,NEWNAME=BC, MEMBER=ABC The control statements are discussed below: 430 • DDl DD defines a permanently mounted volume. • SYSIN DD defines the input data set, which follows in the input stream. MVS/370 Utilities 72 C • RENAME specifies that member ABC in the partitioned data set DATASET, which resides on a disk volume, is renamed BC. IEHPROGM EXAMPLE 8 In this example, a new OS CVOl (SYSCTlG data set) is defined and connected to an existing OS CVOl. A data set is then cataloged in the new OS CVOl. //lNKX JOB //STEPI EXEC PGM=IEHPROGM //SYSPRINT DD SYSOUT=A //NEWCVOl DD DSN=SYSCTlG,UNIT=disk,VOl=SER=222222, // DISP=(,KEEP),SPACE=(TRK,(10,1» //DD1 DD UNIT=disk,VOl=SER=111111,DISP=SHR //SYSIN DD * CATlG DSNAME=SYSCTlG.V222222,VOl=disk=222222 CONNECT INDEX=AA,VOl=disk=222222 CATlG DSNAME=AA.BB,VOl=disk=PACK14 This example assumes that the OS CVOl on volume 111111 was previously defined in the ICF or VSAM master catalog with an OS CVOl pointer, and "A A" was defined in the ICF or VSAM master catalog as an alias of the OS CVOl pointer. See Catalog Users Guide for details on how this·is done. The utility control statements are discussed below: • NEWCVOl DD allocates space for the new OS CVOl. • The first CATlG statement establishes an OS CVOl pointer in the IeF or VSAM master catalog for the new OS CVOl. • The CONNECT statement causes the new OS CVOl (on volume 222222) to be connected to the old OS CVOl (on volume 111111), such that any catal~g management requests coming to the old OS CVOl having a high level index name of AA will be routed to the new OS CVOl. • The second CATlG statement will cause the data set AA.BB to be cataloged in the new OS CVOl on volume 222222. Since this is the first request to update the new OS CVOl, this will cause the new OS CVOl to be formatted before the catalog entry is made. IEHPROGM EXAMPLE 9 In this example, a generation data group index for generation data group A.B.C is built in an OS CVOl. Three existing noncataloged, nongeneration data sets are renamed; the renamed data sets are entered as generations in the generation data group index. IEHPROGM Program 431 //BLDINDEX JOB // EXEC //SYSPRINT DD //DD1 DD //DD2 DD // //SYSIN BLDG RENAME /* 72 PGM=IEHPROGM SYSOUT=A UNIT=disk,VOLUME=SER=111111,DISP=OLD UNIT=(disk"DEFER),DISP=OLD, VOLUME=(PRIVATE"SER=(222222» DD * INDEX=A.B.C,ENTRIES=10,CVOL=disk=111111 DSNAME=DATASET1,VOL=disk=222222, NEWNAME=A.B.C.GOOOIVOO DSNAME=DATASET2,VOL=disk=222222, RENAME NEWNAME=A.B.C.GOOO2VOO DSNAME=DATASET3,VOL=disk=222222, RENAME NEWNAME=A.B.C.GOOO3VOO CATLG DSNAME=A.B.C.GOOOIVOO,VOL=disk=222222, CVOL=disk=111111 CATlG DSNAME=A.B.C.GOOO2VOO,VOL=disk=222222, CVOL=disk=111111 CATLG DSNAME=A.B.C.GOOO3VOO,VOL=disk-222222, CVOL=disk=111111 C C C C C C The control statements are discussed below: • DDI DD defines the volume on which the SYSCTLG data set resides. • BLDG specifies the generation group name A.B.C and makes provision for ten entries in the index. The oldest generation is uncataloged when the index becomes full. No generations are scratched. • The RENAME statements rename three nongeneration data sets residing on a disk volume. • The CATLG statements enter the renamed data sets in the generation data group index and catalog them in the OS CVOL. Because the DCB parameters were supplied when the nongeneration data sets were created, no DCB parameters are now specified; therefore, no model DSCB is required. See Example 10 for information on how to create a model DSCB. IEHPROGM EXAMPLE 10 In this example, an IEHPROGM job step, STEPA, creates a model DSCB and builds a generation data group index. STEP B, an IEBGENER job step, creates and catalogs a sequential generation data set from data in the input stream. STEP C, an IEBGENER job step, creates and catalogs a second generation with new DCB attributes. This example assumes that the OS CVOL with serial number 111111 was previously defined in the ICF or VSAM master catalog with an OS CVOL pointer, and "A" was defined in the ICF or VSAM master catalog as an alias of the OS CVOL pointer. See Catalog Users Guide for details on how this is done. 432 MVS/370 Utilities //BLDIHDX //STEPA //SYSPRIHT //BlDDSCB // // //SYSIH /'* //STEPB //SYSPRIHT //SYSIH //SYSUT2 JOB EXEC PGM=IEHPROGM DD SYSOUT=A DSNAME=A.B.C,DISP=(,KEEP),SPACE=(TRK,(O», DD DCB=(LRECL=80,RECFM=FB,BLKSIZE=800), VOlUME=SER=111111,UHIT=disk DD '* BLDG IHDEX=A.B.C,ENTRIES=10,EMPTY,DELETE EXEC DD DD DD // //SYSUTI DD PGM=IEBGEHER SYSOUT=A DUMMY DSHAME=A.B.C(+l),UHIT=disk,DISP=(,CATLG), VOLUME=SER=222222,SPACE=(TRK,20) DATA (input data) //STEPC //SYSPRIHT //SYSIN //SYSUT2 EXEC DO DO DD // // //SYSUTI DO PGM=IEBGEHER SYSOUT=A DUMMY' DSNAME=A.B.CC+l),UHIT=disk,DISP=(,CATLG), DCB=(lRECL=80,RECFM=FB,BLKSIZE=1600), VOlUME=SER=222222,SPACE=CTRK,20) DATA (input data) /'* The control statements are discussed below: STEPA: • BLDDSCB DD creates a model DSCB on the OS CVOL volume. • SYSIN DD indicates that the control data set follows in the input stream. • BLDG specifies the generation data group name A.B.C and makes provision for ten entries in the group. When the index is filled, it is emptied, and all of the generations are deleted. STEPB: • SYSUT2 DD defines an output sequential generation data set. The generation data set is assigned the absolute generation and version number GOOOIVOO in the index. • SYSUTI DD defines the input data set, which follows in the input stream. STEPC: • SYSUT2 DD defines a second output sequential generation data set. The generation data set is assigned the absolute generation and version number G0002VOO in the index. The specified DCB attributes override those initially specified in the model DSCB. The DCB attributes specified when the model DSCB was created remain unchanged; that is, those attributes are applicable when you catalog a succeeding generation unless you specify overriding attributes at that time. • SYSUTI defines the input data set, which follows in the job stream. IEHPROGM Program 433 Any subsequent job that causes th~ deletion of the generations should include DD statements defining the devices on which the volumes containing those generations are to be mounted. The OS CVOl entry is deleted for each generation for which no DD statement is included at that time, but the generation itself is not deleted. After the generation data group is emptied, the new generations continue to be assigned generation numbers according to the last generation number assigned before the empty operation. To reset the numbering operation (that is, to reset to GOOOOVOO or GOOOIVOO), it is necessary to delete the catalog entries for all the old generation data sets and then rename and recatalog, beginning with GOOOOVOO. 434 MVS/370 Utilities IFHSTATR PROGRAM IFHSTATR is a system utility used to format and print information from type 21 SMF (system management facilities) records, which provide error statistics by volume (ESV) data. Figure 149 shows the format of the type 21 record. Bytes of Record Descriptor Word o System Indicator 4 Time of Day (continued) Current Date 8 Current Date (continued) System Identification 12 Length of rest of record including this field System Identifier 16 20 Volume Serial Number Volume Serial Number (continued) 22 Channel Unit Address UCB Type 24 28 Temporary Read Errors Temporary Write Errors 32 Permanent Read Errors Permanent Write Errors 36 Erase Gaps (continued) 40 Time of Day Record Type Block Size Start I/O's Noise Blocks Cleaner Actions Erase Gaps Tape Density Reserved Figure 149. Type 21 SMF Record Format with ESV Data Error statistics by volume (ESV) records are retrieved from the IFASMFDP tape or from SYS1.MAN (on tape). ASSESSING THE QUALITY OF TAPES IN A LIBRARY The statistics gathered by SMF in type 21 records can be very useful in assessing the quality of tapes in a library. IFHSTATR prints type 21 records in the same order that they were gathered, that is, date/time sequence. You may find it useful to sort type 21 records into volume serial number sequence, into channel unit sequence, and into error occurrence sequence to aid in analyzing the condition of tapes in the library. The IFHSTATR report helps to identify deteriorating media (tapes); occasionally poor performance from a particular tape drive can also be identified. The permanent read error counter or permanent write error counter is increased by one each time the tape error recovery rout i nes (ERPs) determi ne that the er\ror' is permanent and is returned to the user with indication of a( permanent I/O error. If a SYNAD routine to handle such errors is present, the counts in these fields can be greater than one. The temporary read error counter and temporary write error counter are increased when the ERP initially handles an error condition corrected in the ERP. The severity of a temporary error can be estimated by analyzing either the erase gap counter for write errors or the noise block and cleaner action counters IFHSTATR Program 435 for read errors. The erase gap counter is increased each time a write error is retried. For example, if the temporary write error counter contains 2 and the erase gap counter contains 5, the ERP was entered twice for write error recovery. The average recovery actions were 2.5 per error (actually may have been 1 and 4). The cleaner action counter is only increased every fourth read retry. A ratio of one cleaner action to one temporary read error indicates, in general, recovery on the fifth retry (the first retry after the cleaner action). A ratio of 10 cleaner actions to one temporary error indicates that recovery is, in general, a result of reading the tape in the opposite direction (reading backward on a read forward tape or readin~ forward on a read backward tape). The noise block counter is increased once for each noise record (record less than minimum read length) encountered. In analyzing IFHSTATR reports, the usage (SIO) count should also be considered, because it is the count of all start I/Os to the tape drive, except those issued by the ERP in the course of error recovery. The usage count can be used to determine the ratio of error-free accesses of the tape to total accesses of the tape. INPUT AND OUTPUT IFHSTATR uses as input type 21 SMF (system management facilities) records from an IFASMFDP tape, which contain information about errors on magnetic tape. IFHSTATR processes only type 21 records; if none are found, a message is written to the output data set. IFHSTATR produces as output an output data set, which contains information selected from type 21 records. The output takes the form of 121-byte unblocked records, with an American National Standards Institute (ANSI) control character in the first byte of each record. Figure 150 shows a sample of printed output from IFHSTATR. VOLUME SERIAL DATE 001021 001022 000595 82/309 82/309 82/309 CPU ID MOD NO BB 40 40 50 AA CC TIME OF DAY 15:55:07 15:56:02 15:56:20 CHANNEL / UNIT 181 184 283 TEMP READ 1 10 0 TEMP WRITE 0 0 10 PERM READ 0 0 0 PERM WRITE 0 0 0 NQISE BLOCKS 1 0 0 ERASE GAPS 0 0 10 CLEANER USAGE TAPE ACTIONS (SIO'S) DENSITY 0 0 0 10 28 28 0800 1600 0800 BLOCK LENGTH 80 121 50 Figure 150. Sample Output from IFHSTATR CONTROL IFHSTATR is controlled by job control statements only. control statements are not used. Utility JOB CONTROL STATEMENTS Figure 151 on page 437 shows the job control statements for IFHSTATR. 436 MVS/370 utilities statement Use JOB Initiates the job. EXEC Specifies the program name (PGM=IFHSTATR). SYSUTI DD Defines the input data set and the device on which it resides. The DSNAME, UNIT, VOLUME, LABEL, DCB, and DISP parameters should be included if the data set is not copied from another program. SYSUT2 DD Defines the sequential data set on which the output is to be written. Figure 151. IFHSTATR Job Control statements The output data set can reside on any output device supported by BSAM. The lRECL and BlKSIZE parameters are not specified by IFHSTATR. This information is taken from the DCB parameter on the SYSUT1 DD statement or from the tape label. IFHSTATR EXAMPLE This example shows the JCl needed to produce a report. //REPORT // //SYSUT1 //SYSUT2 JOB EXEC PGM=IFHSTATR DD DSNAME=COPY.SMFDATA,DISP=SHR DD SYSOUT=A /* Note: COPY.SMFDATA is a copy of the SYS1.MANx data set made with the IFASMFDP utility program. IFHSTATR Program 437 APPENDIX A. EXIT ROUTINE LINKAGE Utility programs can be linked to user-supplied exit routines for additional processing. LINKING TO AN EXIT ROUTINE Linking to an exit routine from a utility program is accomplished by the utility program in one of the following ways: • If the exit routine is for label processing or totaling, or if the exit routine is specified in the IEBTCRIN program by OUTREC or ERROR, linkage is performed by the BALR instruction. • In all other cases, linkage is performed by using the LINK macro instruction. The LINK macro instruction contains the symbolic name of the entry point of an exit routine and, if required, a list of parameters. For further information on the use of the LINK macro instruction, see "LINK or ATTACH Macro Instruction" on page 13. At the time of the linkage operation: • General register 1 contains the starting address of the parameter list. • General register 13 contains the address of the register save area. This save area must not be used by user label processing routines. See Appendix C, "Processing User Labels" on page 446. • General register 14 contains the address of the return point in the utility program. • General register 15 contains the address of the entry point to the exit routine. Registers 1 through 14 must be restored before control is returned to the utility program. The exit routine must be contained in either the job library or the link library. The parameter lists passed to label processing routines and parameter lists passed to non label processing routines are described in the topics that follow. LABEL PROCESSING ROUTINE PARAMETERS The parameters passed to a user's label processing routine are addresses of: the aO-byte label buffer, the DCB being processed, the status information if an uncorrectable input/output error occurs, and the totaling area. The 80-byte label buffer contains an image of the user label when an input label is being processed. When an output label is being processed, the buffer contains no significant information at entry to the user's label processing routine. When the utility program has been requested to generate labels, the user's label processing routine must construct a label in the label buffer. 438 MVS/370 Utilities If standard user labels (SUL) are specified on the DO statement for a data set, but the data set has no user labels, the system still takes the specified exits to the appropriate user's routine. In such a case, the user's input label processing routine is entered with the buffer address parameter set to zero. The format and content of the DCB are presented in Data Management Macro Instructions. Bit 0 of flag 1 in the DCB-address parameter is set to a value of 0 except when: • Volume trailer or header labels are being processed at volume switch time. • The trailer labels of a MOD data set are being processed (when the data set is opened). If an uncorrectable input/output error occurs while reading or writing a user label, the appropriate label processing routine is entered with bit 0 of flag 2 in the status information address parameter set on. The three low order bytes of this parameter contain the address of standard status information as supplied for SYNAD routines. (The SYNAD routine is not entered.) NONLABEL PROCESSING ROUTINE PARAMETERS Figure 152 shows the programs from which exits can be taken to non label processing routines, the names of the exits, and the parameters available for each exit routine. Program Exit Parameters IEBGENER KEY Address at which key is to be placed (record follows key); address of DCB. Address of SYSUT1 record; address of DCB. " Address of DECB; cause of the error and address of DCB. (Address in lower order three bytes and cause of error in high order byte.) DATA IOERROR IEBCOMPR ERROR PRECOMP IEBPTPCH INREC OUTREC IEBTCRIN ERROR OUTREC Address of DCB for SYSUT1; address of DCB for SYSUT2.1 Address of SYSUT1 record; length of SYSUT1 record, address of SYSUT2 record; length of SYSUT2 record. Address of input record; length of the input record. Address of output record; length of the output record. Address of the error record; address of a fullword which contains the record length. Address of the normal record; address of a fullword which contains the record length. Figure 152. Parameter Lists for Nonlabel Processing Exit Routines Appendix A. Exit Routine Linkage 439 Note to Figure 152 on page 439: 1 The IOBAD pointer in the DCB points to a location that contains the address of the corresponding data event control block (DECB) for these records. The format of the DECB is illustrated as part of the BSAM READ macro instruction in Data Management Macro Instructions. RETURNING FROM AN EXIT ROUTINE An exit routine returns control to the utility program by means of the RETURN macro instruction in the exit routine. The format of the RETURN macro instruction is: RETURN [(r,r)] [,RC=1l1(15)] where: (r,r) RC= specifies the range of registers, from 0 to 15, to be reloaded by the utility program from the register save area. For example, (14,12) indicates that all registers except register 13 are to be restored. If this parameter is omitted, the registers are considered properly restored by the exit routine. specifies a decimal return code in register 15. If RC is omitted, register 15 is loaded as specified by Cr,r). RC values can be coded: .!l (15) specifies a return code to be placed in the 12 low order bits of register 15. specifies that general register 15 already contains a valid return code. The user's label processing routine must return a code in register 15 as shown in Figure 153 unless: • The buffer address was set to zero before entry to the label processing routine. In this case, the system resumes normal processing regardless of the return code. • The user's label processing routine was entered after an uncorrectable output error occurred. In this case the system attempts to resume normal processing. Figure 153 shows the return codes that can be issued to utility programs by user exit routines. Slightly different return codes are used for the UPDATE=INPlACE option of the IEBUPDTE program. See "IEBUPDTE Program" on page 293. For a list of return codes issued by IEBTCRIN at job termination, see "IEBTCRIN Program" on page 261. 440 MVS/310 Utilities Type of Exit Return Code Input Header or Trailer label 0 The system resumes normal processing. If there are more labels in the label group, they are ignored. 4 The next user label is read into the label buffer area and control is returned to the user's routine. If there are no more labels, normal processing is resumed. 16 The utility program is terminated on request of the user routine. 0 The system resumes normal processing. No label is written from the label buffer area. 4 The user label is written from the label buffer area. The system then resumes normal Output Header or Trailer label Action processing~ Totaling Exits All other exits (except IEBPTPCH's exit OUTREC and IEBTCRIN's exits ERROR and OUTREC) ERROR 8 The user label is written from the label buffer area. If fewer than eight labels have been created, the user's routine again receives control so that it can create another user label. If eight labels have been created, the system resumes normal processing. 16 The utility program is terminated on request of the user routine. 0 Processing continues, but no further exits are taken. 4 Normal operation continues. 8 Processing ceases, except for EOD processing on output data set (user label processing). 16 Utility program is terminated. 0-11 (Set to next multiple of four) Return code is compared to highest previous return code; the higher is saved and the other discarded. At the normal end of job, the highest return code is passed to the calling processor. 12 or 16 Utility program is terminated and this return, code is passed to the calling processor. 0 Record is not placed in the error data set. Processing continues with the next record. 4 Record is placed in the error data set (SYSUT3). 8 Record is not placed in error data set but is processed as a valid record (sent to OUTREC and SYSUT2 if specified). IEBTCRIN removes the EDW from an edited MTDI record before processing continues. 16 Utility program is terminated. Figure 153 (Part 1 of 2). Return Codes That Must Be Issued by User Exit Routines Appendix A. Exit Routine linkage 441 Type of Exit Return Code Action OUTREC (IEBPTPCH) 4 Record is not placed in normal output data set. 12 or 16 Utility program is terminated. Any other number Record is placed in normal output data set (SYSUT2). 0 Record is not placed in normal output data set. 4 Record is placed in normal output data set (SYSUT2). 16 Utility program is terminated. OUTREC (IEBTCRIN) Figure 153 (Part 2 of 2). Return Codes That Must Be Issued by User Exit Routines Further information on the use of the RETURN macro instruction is contained in Supervisor Services and Macro Instructions. 442 MVS/370 Utilities APPENDIX B. DD STATEMENTS FOR DEFINING MOUNTABLE DEVICES When defining mountable devices to be used by system utility programs IEHPROGM , IEHMOVE , or IEHLIST, the user must consider the implications of the DD statements used to define those devices. DD statement parameters must ensure that no one else has access to either the volume or the data set. In any case, caution should be used when altering volumes that are permanently resident or reserved. Under normal conditions, a mountable device should not be shared with another job step; that is, if a utility program is used to update a volume on a mountable device, the volume being updated must remain mounted until the operation is completed. Following are ways to ensure that mountable devices are not shared: • Specify DEFER in a DD statement defining a mountable device. • Specify a volume count in the VOLUME parameter of a DD statement that is greater than the number of mountable devices to be allocated. • Specify PRIVATE in a DD statement defining a mountable device. For a detailed discussion, see the publication JCL. DD STATEMENT EXAMPLES In the following examples of DD statements l an IBM DASD is indicated as the mountable device. Alternative parameters are stacked. Examples that use disk in place of actual device numbers must be changed before use. See "DASD and Tape Device Support" on page 3 for valid device number notation. DD EXAMPLE 1 This DD statement makes a specific request for a private, nonsharable volume or volumes to be mounted on a single device. //DD1 DD // // UNIT=(disk,IDEFER),DISP=(,KEEP), VOLUME=(PRIVATE,SER=(123456», SPACE=(CYL,(1,1» A utility program causes a mount message to be issued for a specific volume when the volume is required for processing by the program. The user should supply the operator with the clearly marked volume or volumes to be mounted during the job step. This DD statement ensures that the volume integrity of a mountable volume is maintained. If only one volume is to be processed, it is mounted at the start of the job step and demounted at the end of the step. If additional volumes are processed, they are mounted and demounted when needed by the utility program. The last volume to be processed is demounted at the end of the job step. Appendix B. DD Statements for Defining Mountable Devices 443 DD EXAMPLE 2 This DD statement makes a request for a private, nonsharable volume. //002 // DO UNIT=Cdisk"DEFER),VOLUME=PRIVATE,DISP=CNEW,KEEP), SPACE=(CYL,(1,1» The results of this statement are identical to those shown in DO Example 1. If a specific unit is requested and the volume serial number is not given in the DO statement, the user must be certain that either: (1) the desired volume is already mounted on that unit, or (2) a volume is not mounted, causing the system to issue a mount message. This statement can be used only if the user is certain that a removable volume, rather than a fixed volume, will be allocated by the scheduler. If there is any chance that a fixed volume will be allocated, this statement must not be used. DD EXAMPLE l This DO statement makes a specific request for a private, sharable volume to be mounted on a device. //001 DO UNIT=disk,VOLUME=(PRIVATE,SER=C121212»,DISP=OLD This DO statement does not ensure that volume integrity is maintained. It should be used with extreme caution in a multiprogramming environment because there is the possibility that a job step running concurrently might make a specific request for the volume, use the volume, and demount it. DD EXAMPLE 4 This DO statement makes a specific request for a public, nonsharable volume to be mounted on a device. //003 DO UNIT=(disk"DEFER),VOLUME=SER=789012,DISP=OLD If the volume is already mounted, it is used. The volume remains mounted at the end of the job step, and is not demounted until another job step requires the device on which the volume is mounted. This DO statement ensures that volume integrity is maintained between jobs; two or more such statements in a single job can allocate the same device. 444 MVS/370 Utilities DD EXAMPLE 5 This DD statement makes a specific request for a public, sharable volume to be mounted on a device. //DD1 DD UNIT=disk,VOlUME=SER=654321,DISP=OlD If the volume is already mounted, it is used. The volume remains mounted at the end of the job step, and is not demounted until another job step requires the device on which the volume is mounted. (This DD statement can also be used to define permanently resident devices.) This DD statement does not ensure that the volume integrity of a mountable volume is maintained. It should be used with extreme caution in a multiprogramming environment because there is the possibility that a job step running concurrently might use the device. Appendix B. DD Statements for Defining Mountable Devices 445 APPENDIX C. PROCESSING USER LABELS User labels can be processed by IEBCOMPR, IEBGENER, IEBPTPCH, IEBTCRIN, IEBUPDTE, and IEHMOVE. In some cases, user-label processing is automatically performed; in other cases, you must indicate the processing to be performed. In general, user label support allows the utility program user to: • Process user labels as data set descriptors. • Process user labels as data. • Total the processed records prior to each WRITE command (IEBGENER and IEBUPDTE only). For either of the first two options, the user must specify standard labels (SUl) on the DD statement that defines each data set for which user-label processing is desired. For totaling routines, OPTCD=T must be specified on the DD statement. The user cannot update labels by means of the IEBUPDTE program. This function must be performed by a user's label processing routines. IEBUPDTE will, however, allow you to create labels on the output data set from data supplied in the input stream. See "LABEL Statement" on page 303 of the chapter "IEBUPDTE Program." IEHMOVE does not allow exits to user routines and does not recognize options concerning the processing of user labels as data. IEHMOVE always moves or copies user labels directly to a new data set. See "IEHMOVE Program" on page 361. Volume switch labels of a multivolume data set cannot be processed by IEHMOVE, IEBGENER, or IEBUPDTE. Volume switch labels are therefore lost when these utilities create output data sets. To ensure that volume switch labels are retained, process multivolume data sets one volume at a time. PROCESSING USER LABELS AS DATA SET DESCRIPTORS When u~er labels are to be processed as data set descriptors, one of the user's label processing routines receives control for each user label of the specified type. The user's routine can include, exclude, or modify the user label. Processing of user labels as data set descriptors is indicated on an EXITS statement with keyword parameters that name the label processing routine to be used. The EXIT keyword parameters indicate that a user routine should receive control each time the OPEN, EOV, or CLOSE routine encounters a user label of the type specified. Figure 154 on page 447 illustrates the action of the system at OPEN, EOV, or CLOSE time. When OPEN, EOV, or CLOSE recognizes a user label and when SUl has been specified on the DD statement for the data set, control is passed to the utility program. Then, if an exit has been specified for this type of label, the utility program passes control to the user routine. The user's routine processes the label and returns control, along with a return code, to the utility program. The utility program then returns control to OPEN, EOV, or CLOSE. This cycle is repeated up to eight times, depending upon the number of user labels in the group and the return codes supplied by the user's routine. 446 MVS/370 Utilities OPEN/EOVICLOSE User's I.bel processing routine Figure 154. System Action at OPEN, EOV, or CLOSE Time EXITING TO A USER'S TOTALING ROUTINE When an exit is taken to a user's totaling routine, an output record is passed to the user's routine just before the record is written. The first halfword of the totaling area pointed to by the parameter contains the length of the totaling area, and should not be used by the user's routine. If the user has specified user label exits, this totaling area (or an image of this area) is pointed to by the parameter list passed to the appropriate user label routine. An output record is defined as a physical record (block), except when IEBGENER is used to process and reformat a data set that contains spanned records. The code returned by the user's totaling routine determines system response as follows. Codes Meaning 00 (00 hex) Processing is to continue, but no further exits are to be taken. 04 (04) Normal processing is to continue. 08 (08) Processing is to terminate, except for EOD processing on the output data set (user label processing). 16 (10) Processing is to be terminated. Figure 155. User Totaling Routine Return Codes PROCESSING USER LABELS AS DATA When user labels are processed as data, the group of user labels, as well as the data set, is subject to the normal processing done by the utility program. The user can have labels printed or punched by IEBPTPCH, compared by IEBCOMPR, or copied by IEBGENER. To specify that user labels are to be processed as data, include a LABELS statement in the job step that is to process user labels as data. Appendix C. Processing User Labels 447 There is no direct relationship between the LABELS statement and the EXITS statement. Either or both can appear in the control statement stream for an execution of a utility program. If there are user label-processing routines, however, their return codes may influence the processing of the labels as data. In addition, a user's output label-processing routine can override the action of a LABELS statement because it receives control before each output label ;s written. At this time the label created by the utility as a result of the LABELS statement is in the label buffer, and the user's routine can modify it. 448 MVS/370 Utilities ACCESS parameter INITT statement 339 ACTION parameter FD statement 112 actions IEBDG program 99 ADD statement CPASWORD parameter 421 DATA parameter 422 DSNAME parameter 423 IEBUPDTE program 298 IEHPROGM program 420 INHDR parameter 306 INTLR parameter 307 LEVEL parameter 307 LIST parameter 307 MEMBER parameter 308 NAME parameter 308 NEW parameter 308 OUTHDR parameter 309 OUTTLR parameter 309 PASWORD2 parameter 424 SEQFLD parameter 310 SOURCE parameter 310 SSI parameter 311 TOTAL parameter 311 TYPE parameter 425 VOL parameter 426 ;,ddi ng data set passwords 410 ADDR parameter DFN statement 22 al i as name changing 404 IEBCOPY program 41 in partitioned directory 305 OS CVOL index 405 ALIAS parameter BLDA statement 421 OLTA statement 421 ALIAS statement IEBUPDTE program 305 NAME parameter 308 altering load modules 43 ALTERMOD statement IEBCOPY program 53 LIST parameter 57 OUTDD parameter 59 ANSI volume access security ACCESS parameter 339 anyname DD statement IEHINITT program 337 anyname1 DD statement IEBCOPY program 47 IEHLIST program 353 IEHMOVE program 376 IEHPROGM program 414 anyname2 DO statement IEBCOPY program 47 IEHLIST program 353 IEHMOVE program 377 IEHPROGM program 414 assessing tape quality 435 ASSIGN parameter CHARSET statement 193 GRAPHIC statement 194 ATTACH macro format 13 invoking utility programs with authorized program facility (APF) 13 13 backup CO"PY. creating 141, 231 example 78 IEBCOPY program 39 verifying IEBCOMPR program 27 bbbb parameter TRACK statement 329 VTOC statement 329 BDAM data set cataloging in an OS CVOl 405 copying 369 moving 369 scratching 404 with variable-spanned records copying 373 moving 373 BLDA statement ALIAS parameter 421 CVOL parameter 422 IEHPROGM program 418 INDEX parameter 423 BLDG statement CVOL parameter 422 DELETE parameter 422 EMPTY parameter 423 ENTRIES parameter 423 IEHPROGM program 419 INDEX parameter 423 BLDX statement CVOL parameter 422 IEHPROGM program 418 INDEX parameter 423 block size unloaded data set 48 buffer record heading 234 buffer size IEBCOPY program 46 IEHMOVE program 366 building an index in an OS CVOL 405 CALL macro format 16 invoking IEBTCRIN with card input copying to tape examples 158-160 printing example 160 16 Index 449 punching example 264 CATALOG parameter COpy CATALOG statement 387 MOVE CATALOG statement 387 cataloged data sets copying 370 moving 370 cataloging data sets in an OS CVOL CATLG parameter COpy DSGROUP statement 387 COPY DSNAME statement 387 COPY PDS statement 387 COpy VOLUME statement 387 CATLG statement CVOL parameter 422 DSNAME parameter 423 IEHPROGM program 417 VOL parameter 426 cccc parameter TRACK statement 329 VTOC statement 329 CDINCR parameter PUNCH statement 249 CDSEQ parameter PUNCH statement 249 CGMID parameter TABLE statement 194 CHANGE statement COLUMN parameter 306 IEBUPDTE program 298 INHDR parameter 306 INSERT parameter 307 1NTLR parameter 307 ''LEVEL parameter 307 LIST parameter 307 MEMBER parameter 308 NAME parameter 308 NEW parameter 308 OUTHOR parameter 309 OUTTLR parameter 309 SEQFLD parameter 310 SOURCE parameter 310 SSI parameter 311 TOTAL parameter 311 UPDATE parameter 311 changing data set organization 293 channel codes conventions for channel 1, channel 9, channel 12 195 identified in FCB module 170 specifying in FCB statement 195 character arrangement table module 166 creating 174, 188 examples of building and modifying 216-219 1EBIMAGE listing 176 structure 175 character set 181 CHARSET statement ASSIGN parameter 193 GCM parameter 197 1D parameter 198 1EB1MAGE program 190 REF parameter 204 SEQ parameter 205 CHx parameter FCB statement 195 CNTRL parameter PRINT statement 249 PUNCH statement 249 codes, special 1EBTCRIN program 269 450 MVS/370 Utilities coding utility control statement 5 COLUMN parameter CHANGE statement 306 comments utility control statement 5 COMPARE statement 1EBCOMPR program 30 TYPORG parameter 32 comparing partitioned data sets 27, 36, 38 examples 36-38 sequential data sets 27, 33, 35 examples 33-35 compressing a data set 42 CONNECT statement CVOL parameter 422 1EHPROGM program 419 INDEX parameter 423 VOL parameter 426 connecting two OS CVOLs 406 continuing utility control statement 5 control characters PREFORM parameter 255 control statements 4 controlling 1CAPRTBL program 19 IEBCOMPR program 28 IEBCOPY program 46 1EBDG program 100 1EBEDIT program 132 IEBGENER program 145 1EB1MAGE program 184 1EBISAM program 235 IEBPTPCH program 243 IEBTCR1N program 280 IEBUPDTE program 294 1EHATLAS program 327 1EH1NITT program 336 1EHLIST program 352 1EHMOVE program 374 IEHPROGM program 412 IFHSTATR program 436 CONV parameter LABELS statement 249 conversion FIELD parameter 153 converting fields 249 COPIES parameter COPYMOD statement 196 COPY CATALOG statement CATALOG parameter 387 COPYAUTH parameter 387 CVOL parameter 388 FROM parameter 390 FROMDD parameter 390 IEHMOVE program 384 TO parameter 391 TODD parameter 392 UNLOAD parameter 392 COPY OSGROUP statement CATLG parameter 387 COPYAUTH parameter 387 CVOL parameter 388 OS GROUP parameter 388 IEHMOVE program 381 PASSWORD parameter 391 TO parameter 391 TODD parameter 392 UNCATLG parameter 392 UNLOAD parameter 392 COPY DSNAME statement CATLG parameter 387 COPYAUTH parameter 387 CVOL parameter 388 DSNAME parameter 389 FROM parameter 390 FROMDD parameter 390 IEHMOVE program 380 RENAME parameter 391 TO parameter 391 TODD parameter 392 UNCATLG parameter 392 UNLOAD parameter 392 copy modification module 166 creating 173, 187 examples of building 213-216 IEBIMAGE listing 174 with overrun notes 192 structure 173 copy operation excluding members 42 COPY PDS statement CATLG parameter 387 COPYAUTH parameter 387 CVOL parameter 388 EXPAND parameter 389 FROM parameter 390 FROMDD parameter 390 IEHMOVE program 383 PDS parameter 391 RENAME parameter 391 TO parameter 391 TODD parameter 392 UNCATLG parameter 392 UNLOAD parameter 392 COPY statement IEBCOPY program 51 INDD parameter 57 LIST parameter 57 OUTDD parameter 59 COPY VOLUME statement CATLG parameter 387 COPYAUTH parameter 387 IEHMOVE program 385 PASSWORD parameter 391 TO parameter 391 TODD parameter 392 UNLOAD parameter 392 VOLUME parameter 392 COPYAUTH parameter COpy CATALOG statement 387 COPY DSGROUP statement 387 COPY DSNAME statement 387 COPY PDS statement 387 COPY VOLUME statement 387 MOVE CATALOG statement 387 MOVE DSGROUP statement 387 MOVE DSNAME statement 387 MOVE PDS statement 387 MOVE VOLUME statement 387 copying a member with an alias 41 a sequential data set 366 an ISAM data set 231 BDAM data sets 369 with variable-spanned records 373 cataloged data sets 370 data sets 365 examples 139-140 ISAM data set example 238 job statements and steps 136, 138 examples 136-138 load modules 43 multivolume data sets 369 OS CVOL 371 partitioned data set examples 77 partitioned data sets 366 examples 62 IEBCOPY program 39, 40 sequential data sets examples 158-160 unloaded data sets 370 unmovable data sets 370 volume of data sets 372 COPYMOD statement COPIES parameter 196 IEBCOPY program 53 IEBIMAGE listing with overrun notes 207 IEBIMAGE program 187 INDD parameter 57 LINES parameter 199 LIST parameter 57 MAXBLK parameter 58 MINBLK parameter 59 OUTDD parameter 59 POS parameter 203 TEXT parameter 207 CPASWORD parameter ADD statement 421 DELETEP statement 421 REPLACE statement 421 CREATE parameter REPEAT statement 113 CREATE statement EXIT parameter 113 FILL parameter 113 IEBDG program 107 INPUT parameter 117 NAME parameter 118 PICTURE parameter 119 QUANTITY parameter 120 creating data set libraries 293 CVOL parameter BLDA statement 422 BLDG statement 422 BLDX statement 422 CATLG statement 422 CONNECT statement 422 COpy CATALOG statement 388 COPY DSGROUP statement 388 COpy DSNAME statement 388 COPY PDS statement 388 DLTA statement 422 DLTX statement 422 INCLUDE statement 388 MOVE CATALOG statement 388 MOVE DSGROUP statement 388 MOVE DSNAME statement 388 MOVE PDS statement 388 RELEASE statement 422 REPLACE statement 388 UNCATLG statement 422 CYCLE parameter FD statement 115 data check unblockable 195 data duplication 268 DATA parameter ADD statement 422 EXITS statement 151 Index 451 LABELS statement 31, 151, 250 REPLACE statement 422 data set comparing 27 copying 365 edited 143 merging example 92 modifying 293 moving 365 printing 241 punching 241 reblocking 364 recreating 43 space allocation for IEHMOVE 363 data set libraries creating 293 updating 293 data set organization changing 293 data set utility programs summary 1 data sets passwords 409 data statement IEBUPDTE program 303 data. statements for user-designed characters 196 DATE parameter LISTVTOC statement 355 DCB control information overriding 232 DD statement defining mountable device 443 examples 443 dddd parameter TRACK statement 329 VTOC statement 329 ddname parameter INITT statement 339 ddnameaddr subparameter CALL macro 16 PARAM parameter ATTACH macro 13 LINK macro 13 DDNMELST 13, 16 debugging aid IEBDGprogram 97 defective track replacing 325 examples 330-332 DELETE parameter BLDG statement 422 TABLE statement 196 DELETE statement IEBUPDTE program 301 SEQI parameter 309 SEQ2 parameter 309 DELETEP statement CPA SWORD parameter 421 DSNAME parameter 423 IEHPROGM program 421 PASWORD1 parameter 424 VOL parameter 426 deleting an index . in an OS CVOL 405 deleting data set passwords 411 DELSEG parameter INCLUDE statement 197 detail statement IEBUPDTE program 301 restrictions 302 DEVICE parameter OPTION statement 197 452 MVS/370 Utilities device support 3 device variable 6 DEVT parameter DFN statement 22 DFN statement ADDR parameter 22 DEVT parameter 22 FCB parameter 22 FOLD parameter 22 ICAPRTBL program 20 UCS parameter 23 DISP parameter INITT statement 339 DLTA statement ALIAS parameter 421 CVOL parameter 422 IEHPROGM program 418 DLTX statement CVOL parameter 422 IEHPROGM program 418 INDEX parameter 423 DSD statement IEBDG program 104 INPUT parameter 116 OUTPUT parameter 118 DSGROUP parameter COpy DSGROUP statement 388 EXCLUDE statement 388 MOVE DSGROUP statement 388 DSNAME parameter ADD statement 423 CATLG statement 423 COpy DSNAME statement 389 DELETEP statement 423 INCLUDE statement 389 LIST statement 423 LISTPDS statement 356 LISTVTOC statement 356 MOVE DSHAME statement 389 RENAME statement 423 REPLACE statement 389, 423 SCRATCH statement 423 UNCATLG statement 423 DUMP parameter LISTPDS statement 356 LISTVTOC statement 356 DUP code 268 dynamic invocation 13 EDIT parameter TCRGEN statement 284 EDIT statement IEBEDIT program 133 NOPRINT parameter 133 START parameter 134 STEPNAME parameter 134 TYPE parameter 135 edited data set 143 printing 242 punching 242 EMPTY parameter BLDG statement 423 END statement ICAPRTBL program 21 IEBDG program 110 user-information parameter end-of-cartridge 273 end-of-media code 267 end-of-record 23 in IEBTCRIN program 267 ENDUP statement IEBUPDTE program 306 ENTRIES parameter BLDG statement 423 EP parameter ATTACH macro 13 LINK macro 13 LOAD macro 16 EPLOC parameter LOAD macro 16 ERP (error recovery program) 436 ERROPT parameter TCRGEN statement 285 error description word IEBTCRIN program 274 ERROR parameter EXITS statement 31, 285 error records IEBTCRIN program 274 sample 277 ESV (error statistics by volume) data 435 evaluating tape quality 435 examples DD statement 443 ICAPRTBL program 23 IEBCOMPR program 32 IEBCOPY program 60 IEBDG program 121 IEBEDIT program 135 IEBGENER program 157 IEBIMAGE program 207 IEBISAM program 237 IEBPTPCH program 258 IEBTCRIN program 290 IEBUPDTE program 311 IEHATLAS program 330 IEHINITT program 340 IEHLIST program 357 IEHMOVE program 393 IEHPROGM program 426 IFHSTATR program 437 EXCLUDE parameter EDIT statement 135 EXCLUDE statement DSGROUP parameter 388 IEBCOPY program 56 IEHMOVE program 386 MEMBER parameter 59, 391 excluding members copy operation 42 exclusive copy or load processing EXEC statement IEBCOMPR program 29 IEBCOPY program 47 IEBDG program 101 IEBEDIT program 132 IEBGENER program 146 IEBIMAGE program 184 IEBISAM program 235 IEBPTPCH program 243 IEBTCRIN program 281 IEBUPDTE program 295 IEHATLAS program 327 IEHINITT program 337 IEHLIST program 353 IEHMOVE program 375 IEHPROGM program 414 IFHSTATR program 437 EXIT parameter CREATE statement 113 exit routine identifying 148 IEBPTPCH program 246 linkage 438 return codes 440 returning from 440 totaling 447 EXIlS statement DATA parameter 151 ERROR parameter 31, 285 IEBCOMPR program 30 IEBGENER program 148 IEBPTPCH program 246 IEBTCRIN program 283 INHDR parameter 32, 154, 253 INREC parameter 253 INTLR parameter 32, 155, 253 IOERROR parameter 155 KEY parameter 155 OUTHDR parameter 156 OUTHDR2 parameter 287 OUTHDR3 parameter 287 OUTREC parameter 254 1 287 OUTTLR parameter 156 OUTTLR2 parameter 288 OUTTLR3 parameter 288 PRECOMP parameter 32 TOTAL parameter 156 EXPAND parameter COPY PDS statement 389 MOVE PDS statement 389 0 41 FCB parameter DFN statement 22 FCB statement CHx parameter 195 FORMEND parameter 22 ICAPRTBL program 21 IEBIMAGE program 186 LINES parameter 199 LNCH parameter 22 LPI parameter 23 1 201 SIZE parameter 206 FD statement ACTION parameter 112 FILL parameter 113 FORMAT parameter 114 FROMLOC parameter 114 IEBDG program 105 INDEX parameter 115 INPUT parameter 116 LENGTH parameter 117 NAME parameter 118 PICTURE parameter 119 SIGN parameter 120 STARTLOC parameter 120 . field altering contents IEBDG program 112 changing the contents IEBDG program 99 converting 249 defining the contents IEBDG program 97, 105 editing information 251 FIELD parameter RECORD statement 152-154, 251 FILL parameter CREATE statement 113 FD statement 113 fixed action 112 Index 453 FOLD parameter DFN statement 22 FORMAT parameter FD statement 114 LISTPDS statement 356 LISTVTOC statement 356 FORMEND parameter FCB statement 22 forms control buffer loading 21 forms control buffer module 166 creating 170, 186 examples of building 209-213 IEBIMAGE listing 171 structure 170 FROM parameter COPY CATALOG statement 390 COPY DSNAME statement 390 COpy PDS statement 390 INCLUDE statement 390 MOVE CATALOG statement 390 MOVE DSNAME statement 390 MOVE PDS statement 390 REPLACE statement 390 FROMDD parameter COpy CATALOG statement 390 COpy DSNAME statement 390 COPY PDS statement 390 MOVE CATALOG statement 390 MOVE DSNAME statement 390 MOVE PDS statement 390 FROMLOC parameter FD statement 114 full copy or load processing 41 function statement IEBUPDTE program 298 restrictions 299 GCM parameter CHARSET statement 197 GRAPHIC statement 197 GCMLIST parameter TABLE statement 198 GENERATE statement IEBGENER program 148 MAXFLDS parameter 155 MAXGPS parameter 155 MAXLITS parameter 155 MAXNAME parameter 156 generating output records 110 generation data group index in an OS CVOL 407 graphic character modification module 166 creating 178, 189 examples of building and listing 219-226 IEBIMAGE listing 179 structure 179 GRAPHIC statement ASSIGN parameter 194 GCM parameter 197 IEBIMAGE program 189 REF parameter 205 SEQ parameter 205 GS code 268 hdingaddr subparameter CALL macro 16 PARAM parameter ATTACH macro 14 LINK macro 14 HDNGLIST 14, 16 hhhh parameter TRACK statement 329 VTOC statement 329 ICAPRTBL program examples 23 executing 18 input and output 19 loading forms control buffer 21 loading universal character set buffer 21 parameters 22 utility control statements 19 DFN END FCB JOB UCS MVS/370 Utilities 20 21 21 20. 20 wait state codes 18 10 parameter CHARSET statement 198 IDENT parameter RECORD statement 154, 252 IEBCOMPR program 27 comparing data sets 27 examples 32 input and output 28 job control statements 29 parameters 31 return codes 28 utility control statements COMPARE 30 EXITS 30 LABELS 31 verifying a backup copy IEBCOPY program 39 30 27 compressing a data set 42 copying members with aliases 41 creating backup copy 39 examples 60 excluding members 42 input and output 45 job control statements 46 load operation 39 parameters 57 recreating a data set 43 renaming selected members 42 replacing identically named members 41 replacing selected members 42 return codes 46 selecting members to be loaded or unloaded 40 selecting members to be moved or copied 40 unload operation 39 utility control statements 50 ALTERMOO 53 COPY 454 18 51 COPYMOD 53 EXCLUDE 56 SELECT 54 IEBDG program 97 defining fields 97 examples 121 IBM supplied patterns 97 input and output 100 job control statements 101 modifying fields 99 parameters 112 return codes 100 user specified picture 98 utility control statements 104 CREATE 107 DSD 104 END 110 FD 105 REPEAT 110 IEBEDIT program 131 examples 135 input and output 131 job control statements 132 parameters 133 return codes 131 utility control statements 133 EDIT 133 IEBGENER program 141 creating an edit data set 143 creating backup copy 141 creating partitioned data sets 141 examples 157 expanding partitioned data sets 142 input and output 144 job control statements 145 parameters 150 return codes 145 utility control statements 147 EXITS 148 GENERATE 148 LABELS 149 MEMBER 149 RECORD 150 IEBIMAGE program description 166 examples 207 input and output 183 job control statements 184 module naming conventions 169 operation groups 185 parameters 193 printer models supported by 166 return codes 183 storage requirements 166 SYS1.IMAGELIB data set 167 structure of modules 169 utility control statements 185 CHARSET 190 COPYMOD 187 FCB 186 GRAPHIC 189 INCLUDE 191 NAME 191 OPTION 191 TABLE 188 IEBISAM program 231 copying an ISAM data set 231 creating a sequential backup copy 231 examples 237 input and output 234 job control statements 235 overriding DCB control information 232 parameters 236 return codes 235 IEBPTPCH program 241 examples 258 input and output 242 job control statements 243 parameters 249 printing a data set 241 punching a data set 241 return codes 242 utility control statements 246, 247, 248 EXITS 246 LABELS 248 MEMBER 247 PRINT 245 PUNCH 246 RECORD 247 TITLE 246 IEBTCRIN program 267 error records 274 examples 290 input and output 279 invoking 15 job control statements 280 parameters 284 return codes 279 special codes 269 utility control statements EXITS 283 TCRGEN 283 IEBUPDTE program 293 data statement 303 detail statement 301 examples 311 function statement 298 input and output 293 job control statements 294 parameters 306 return codes 294 UPDATE parameter 304 utility control statements ADD 298 ALIAS 305 CHANGE 298 DELETE 301 ENDUP 306 LABEL 303 NUMBER 301 REPL 298 REPRO 298 IEHATLAS program 325 examples 330 input and output 325 job control statements 327 parameters 329 return codes 326 utility control statements TRACK 328 VTOC 328 IEHINITT program 333 examples 340 input and output 335 job control statements 336 parameters 338 return codes 335 utility control st~tements INITT 337 IEHLIST program 345 examples 357 input and output 351 job control statements 352 parameters 355 return codes 351 244, 245, 283 297 327 337 Index 455 utility control statements 354, 355 LISTCTLG 354 LISTPDS 354 LISTVTOC 355 IEHMOVE program 361 examples 393 input and output 373 job control statements 374 parameters 387 return codes 374 using RACF with 365 utility control statements 378 COPY CATALOG 384 COPY DSGROUP 381 COPY DSNAME 380 COpy PDS 383 COpy VOLUME 385 EXCLUDE 386 INCLUDE 385 MOVE CATALOG 383 MOVE DSGROUP 381 MOVE DSNAME 379 MOVE PDS 382 MOVE VOLUME 384 REPLACE 386 SELECT 386 IEHPROGM program 404 examples 426 input and output 412 job control statements 413 parameters 421 return codes 412 utility control statements 415 ADD 420 BLDA 418 BLDG 419 BlDX 418 CATLG 417 CONNECT 419 DELETEP 421 DLTA 418 DLTX 418 LIST 421 RELEASE 419 RENAME 415 REPLACE 420 SCRATCH 415 UNCATLG 417 IFASMFDP tape 435 IFHSTATR program 435 example 437 input and output 436 job control statements 436 sample printed output 436 image library system 168 INCLUDE parameter EDIT statement 135 INCLUDE statement CVOL parameter 388 DELSEG parameter 197 DSNAME parameter 389 FROM parameter 390 IEBIMAGE program 191 IEHMOVE program 385 MEMBER parameter 391 module name 202 including modules to be copied 191 INCR parameter NUMBER statement 306 INDD parameter COPY statement 57 COPYMOD statement 57 independent utility programs 456 MVS/370 Utilities summary 2 INDEX parameter BLDA statement 423 BLDG statement 423 BlDX statement 423 CONNECT statement 423 DlTX statement 423 FD statement 115 RELEASE statement 423 index, generation data group in an OS CVOl 407 index, OS CVOl al i as name " 405 building 405 deleting 405 INDEXDSN parameter LISTVTOC statement 356 INHDR parameter ADD statement 306 CHANGE statement 306 EXITS statement 32, 154, 253 REPl statement 306 REPRO statement 306 initial volume label information INITPG parameter PRINT statement 253 INITT statement ACCESS parameter 339. ddname parameter 339 DISP parameter 339 IEHINITT program 337 LABTYPE parameter 339 NUMBTAPE parameter 339 OWNER parameter 340 SER parameter 340 input and output ICAPRTBl program 19 IEBCOMPR program 28 IEBCOPY program 45 IEBDG program 100 IEBEDIT program 131 IEBGENER program 144 IEBIMAGE program 183 IEBISAM program 234 IEBPTPCH program 242 IEBTCRIN program 279 IEBUPDTE program 293 IEHATlAS program 325 IEHINITT program 335 IEHlIST program 351 IEHMOVE program 373 IEHPROGM program 412 IFHSTATR program 436 INPUT parameter CREATE statement 117 DSD statement 116 FD statement 116 INREC parameter EXITS statement 253 INSERT parameter CHANGE statement 307 NUMBER statement 307 restrictions 302 installation considerations 6 INTLR parameter ADD statement 307 CHANGE statement 307 EXITS statement 32, 155, 253 REPL statement 307 REPRO statement 307 invoking utility programs from a problem program 13 IOERROR parameter EXITS statement 155 337 ISAM data set printing records 233 cataloging in an OS CVOL 405 converting to sequential data set examples 238 copying 231 example 238 creating 233 from unloaded data set example 239 printing logical records example 240 scratching 404 ITEM parameter TITLE statement 253 JES2 or JES3 control statements 133 IEBEDIT program 132 job control language for track overflow feature 378 job control statements 4 IEBCOMPR program 29 IEBCOPY program 46 IEBDG program 101 IEBEDIT program 132 IEBGENER program 145 IEBIMAGE program 184 IEBISAM program 235 IEBPTPCH program 243 IEBTCRIN program 280 IEBUPDTE program 294 IEHATLAS program 327 IEHINITT program 336 IEHLIST program 352 IEHMOVE program 374 IEHPROGM program 413 IFHSTATR program 436 JOB statement ICAPRTBL program 20 IEBCOMPR program 29 IEBCOPY program 47 IEBDG program 101 IEBEDIT program 132 IEBGENER program 146 IEBIMAGE program 184 IEBISAM program 235 IEBPTPCH program 243 IEBTCRIN program 281 IEBUPDTE program 295 IEHATLAS program 327 IEHINITT program 337 IEHLIST program 353 IEHMOVE program 375 IEHPROGM program 414 IFHSTATR program 437 job step copying to output data set example 136 output data set 134 KEY parameter EXITS statement 155 keyword variable 6 label , utility control statement 4 label processing routine parameters 438 LABEL statement IEBUPDTE program 303 LABELS parameter RECORD statement 155 LABELS statement CONY parameter 249 DATA parameter 31, 151, 250 IEBCOMPR program 31 IEBGENER program 149 IEBPTPCH program 248 LABTYPE parameter INITT statement 339 LENGTH parameter FD statement 117 LEVEL parameter ADD statement 307 CHANGE statement 307 REPL statement 307 REPRO statement 307 library character set 181 library character set module 166 creating 181, 190 examples of building and listing 226-230 IEBIMAGE listing 182 structure 181 line overrun conditions 187, 191, 192, 202 LINECNT parameter IEHMOVE program 375 LINES parameter COPYMOD statement 199 FCB statement 199 LINK macro format 13 invoking utility programs with 13 parameter lists 14 linking to an exit routine LIST parameter ADD statement 307 ALTERMOD statement 57 CHANGE statement 307 COpy statement 57 COPYMOD statement 57 REPL statement 307 REPRO statement 307 LIST statement DSNAME parameter 423 IEHPROGM program 421 PASWORD1 parameter 424 list variable 6 LISTCTLG statement IEHLIST program 354 NODE parameter 357 VOL parameter 357 listing a VTOC 347 listing OS CVOl entries 345, 354 Index 457 examples 358 listing partitioned data set directory 345 example 359 listing partitioned data set directory entries 354 listing password entries 411 listing VTOC entries 355 example 359 LISTPDS statement DSNAME parameter 356 DUMP parameter 356 FORMAT parameter 356 IEHLIST program 354 VOL parameter 357 LISTVTOC statement DATE parameter 355 DSNAME parameter 356 DUMP parameter 356 FORMAT parameter 356 IEHLIST program 355 INDEXDSN parameter 356 VOL parameter 357 LNCH parameter FCB statement 22 LOAD macro format 15 invoking IEBTCRIN with 15 load modules altering in place 43 copying and reblocking 43 requirements for IEBCOPY 44 load operation example 92 recreating partitioned data sets 39 loading forms control buffer 21 images to buffers examples 24-26 universal character set buffer 21 LOC parameter TABLE statement 200 logical record length changing 144 logical records ISAM data set example 240 printing 233 LPI parameter FCB statement 23, 201 magnetic data inscriber editing criteria 267 editing restrictions 268 using IEBTCRIN with 267 magnetic tape selectric typewriter using IEBTCRIN ~ith 267 maintaining data set passwords 409 MAXBLK parameter COPYMOD statement 58 MAXFLDS parameter GENERATE statement 155 PRINT statement 253 PUNCH statement 253 MAXGPS parameter GENERATE statement 155 PRINT ·statement 254 PUNCH statement 254 MAXLINE parameter 458 MVS/370 Utilities PRINT statement 254 MAXLITS parameter GENERATE statement 155 PRINT statement 254 PUNCH statement 254 MAXLN parameter TCRGEN statement 286 MAXNAME parameter GENERATE statement 156 PRINT statement 254 PUNCH statement 254 MEMBER parameter ADD statement 308 CHANGE statement 308 EXCLUDE statement 59, 391 INCLUDE statement 391 RENAME statement 424 REPL statement 308 REPLACE statement 391 REPRO statement 308 SCRATCH statement 424 SELECT statement 58, 391 MEMBER statement IEBGENER program 149 IEBPTPCH program 247 NAME parameter 156, 254 merging partitioned data sets IEBCOPY program 39, 43 MINBLK parameter COPYMOD statement 59 MINLN parameter TCRGEN statement 287 modifying a data set 293 module naming conventions 169 structure 169 module name specifying in INCLUDE statement 202 specifying in NAME statement 202 modules altering in place 43 copying and reblocking 43 requirements for IEBCOPY 44 mountable device defining 443 MOVE CATALOG sta!ement CATALOG parameter 387 COPYAUTH parameter 387 CVOL parameter 388 FROM parameter 390 FROMDD parameter 390 IEHMOVE program 383 TO parameter 391 TODD parameter 392 UNLOAD parameter 392 MOVE DSGROUP statement COPYAUTH parameter 387 CVOL parameter 388 DSGROUP parameter 388 IEHMOVE program 381 PASSWORD parameter 391 TO parameter 391 TODD parameter 392 UNCATLG parameter 392 UNLOAD parameter 392 MOVE DSNAME statement COPYAUTH parameter 387 CVOL parameter 388 DSNAME parameter 389 FROM parameter 390 FROMDD parameter 390 IEHMOVE program 379 RENAME parameter 391 TO parameter 391 TODD parameter 392 UNCATLG parameter 392 UNLOAD parameter 392 MOVE PDS statement COPYAUTH parameter 387 CVOL parameter 388 EXPAND parameter 389 FROM parameter 390 FROMDD parameter 390 IEHMOVE program 382 PDS parameter 391 RENAME parameter 391 TO parameter 391 TODD parameter 392 UNCATLG parameter 392 UNLOAD parameter 392 MOVE VOLUME statement COPYAUTH parameter 387 IEHMOVE program 384 PASSWORD parameter 391 TO parameter 391 TODD parameter 392 UNLOAD parameter 392 VOLUME parameter 392 moving a sequential data set 366 BDAM data sets 369 with variable-spanned records cataloged data sets 370 data sets 365 multivolume data sets 369 OS CVOL 371 partitioned data sets 366 unloaded data sets 370 unmovable data sets 370 volume of data sets 372 multiple copy operations examples 81-90 multivolume data set copying 369 moving 369 NAME parameter ADD statement 308 ALIAS statement 308 CHANGE statement 308 CREATE statement 118 FD statement 118 MEMBER statement 156, 254 REPL statement 308 REPRO statement 308 NAME statement IEBIMAGE program 191 module name 202 R parameter 203 naming a new library module 191 naming conventions for modules IEBIMAGE program 169 NEW parameter ADD statement 308 CHANGE statement 308 REPL statement 308 REPRO statement 308 NEWNAME parameter RENAME statement 424 NEW! parameter NUMBER statement 308 NODE parameter LISTCTLG statement 357 nonlabel processing routine parameters 439 NOPRINT parameter EDIT statement 133 notation conventions 5 NUMBER statement IEBUPDTE program 301 INCR parameter 306 INSERT parameter 307 NEW1 parameter 308 SEQ1 parameter 309 SEQ2 parameter 309 NUMBTAPE parameter INITT statement 339 373 operand utility control statement 4 operation utility control statement 4 operation groups IEBIMAGE program 185 OPTION statement DEVICE parameter 197 IEBIMAGE program 191 OVERRUN parameter 192, 202 optionaddr subparameter CALL macro 16 PARAM parameter ATTACH macro 13 LINK macro 13 OPTLIST 13, 16 OS CVOL alias name for index 405 building an index 405 cataloging data sets in 405 connecting or releasing 406 copying 371 deleting an index 405 generation data group index 407 listing entries 345, 354 examples 358 moving 371 OUTDO parameter ALTERMOD statement 59 COPY statement 59 COPYMOD statement 59 OUTHDR parameter ADD statement 309 CHANGE statement 309 EXITS statement 156 REPL statement 309 REPRO statement 309 OUTHDR2 parameter EXITS statement 287 OUTHDR3 parameter EXITS statement 287 output data set contents 135 creating 131 reblocking 144 output data sets including job steps 133 OUTPUT parameter DSD statement 118 output partitioned member example 125 output records creating Index 459 example 123, 127 example 129 generating 110 OUTREC parameter EXITS statement 254, 287 OUTTLR parameter ADD statement 309 CHANGE statement 309 EXITS statement 156 REPL statement 309 REPRO statement 309 OUTTLR2 parameter EXITS statement 288 OUTTLR3 parameter EXITS statement 288 OVERRUN parameter OPTION statement 192, 202 OWNER parameter INITT statement 340 page margins 206 PARAM parameter ATTACH macro 13 LINK macro 13 parinset DO statement IEBDG program 103 PARM parameter (EXEC statement) IEBCOPY program 46 IEBDG program 102 IEBIMAGE program 237 IEBISAM program 236 IEBUPDTE program 295 IEHINITT program 336 IEHlIST program 352 IEHMOVE program 375 IEHPROGM program 413 parout DD statement IEBDG program 103 partitioned data set cataloging in an OS CVOL 405 changing to sequential 293 comparing 27 examples 36-38 compressing 42 copying 366 examples 62, 79 IEBCOPY program 39, 40 copying members examples 63-77 creating from sequential input 141 creating a backup copy example 78 creating a library 293 creating from sequential input examples 160-162 expanding 142 merging IEBCOPY program 39, 43 modifying 293 moving 366 multiple copy operations examples 81-90 printing 241 example 260-261 punching 241 renaming members 42 replacing identically named members 41 460 MVS/370 Utilities replacing selected members 42 scratching 404 unloading example 91 partitioned data set directory comparing data sets 27 edited format 346 listing entries 345, 354 example 359 printing 242 example 263 punching 242 unedited format 347 partitioned output 149 PASSWORD data set listing entries 411 PASSWORD parameter COPY DSGROUP statement 391 COPY VOLUME statement 391 MOVE DSGROUP statement 391 MOVE VOLUME statement 391 password-protected data set scratching 404 passwords data set 409 adding 410 deleting 411 replacing 411 listing entries 411 PASWORD1 parameter DELETEP statement 424 LIST statement 424 REPLACE statement 424 PASWORD2 parameter ADD statement 424 REPLACE statement 424 patterns of test data IBM supplied 97, 114 PDS parameter COPY PDS statement 391 MOVE PDS statement 391 PICTURE parameter CREATE statement 119 FD statement 119 picture, user specified 98 example 128 POS parameter COPYMOD statement 203 POSITION parameter EDIT statement 135 POWER parameter IEHMOVE program 375 PRECOMP parameter EXITS statement 32 PREFORM parameter PRINT statement 255 PUNCH statement 255 PRINT statement CNTRl parameter 249 IEBPTPCH program 245 INITPG parameter 253 MAXFlDS parameter 253 MAXGPS parameter 254 MAXLINE parameter 254 MAXLITS parameter 254 MAXNAME parameter 254 PREFORM parameter 255 SKIP parameter 255 STOP AFT parameter 256 STRTAFT parameter 256 TOTCONV parameter 257 TYPORG parameter 257 printing data set 241 logical records ISAM data set 233 partitioned data set example 260-261 partitioned data set directory example 263 records 242 sequential data set examples 258, 261 PUNCH statement CDINCR parameter 249 CDSEQ parameter 249 CNTRL parameter 249 IEBPTPCH program 246 MAXFLDS parameter 253 MAXGPS parameter 254 MAXLITS parameter 254 MAXNAME parameter 254 PREFORM parameter 255 SKIP parameter 255 STOPAFT parameter 256 STRTAFT parameter 256 TOTCONV parameter 257 TYPORG parameter 257 punching data set 241 partitioned data set directory sequential data set examples 259, 262 PURGE parameter SCRATCH statement 424 QUANTITY parameter CREATE statement REPEAT statement 242 242 120 120 R parameter NAME statement 203 RACF protection IEHMOVE program 365 RANGE parameter FD statement 115 reblocking data sets 364 load modules 43 output data set 144 record defining contents 107 printing 242 quantity 120 record format changing 48 record group defining 150, 247 dividing sequential data sets printing example 264 record heading buffer 234 RECORD statement FIELD parameter 152-154, 251 IDENT parameter 154, 252 IEBGENER program 150 IEBPTPCH program 247 LABELS parameter 155 141 recreating a data set 43 REF parameter CHARSET statement 204 GRAPHIC statement 205 RELEASE statement CVOL parameter 422 IEHPROGM program 419 INDEX parameter 423 releasing two OS CVOLs 406 relocation dictionary inserting counts 45 RENAME parameter COPY DSNAME statement 391 COpy PDS statement 391 MOVE DSNAME statement 391 MOVE PDS statement 391 RENAME statement DSNAME parameter 423· IEHPROGM program 415 MEMBER parameter 424 NEWNAME parameter 424 VOL parameter 426 renaming data sets 404 members 404 renaming members selected 42 REPEAT statement CREATE parameter 113 IEBDG program 110 QUANTITY parameter 120 REPL statement IEBUPDTE program 298 INHDR parameter 306 INTLR parameter 307 LEVEL parameter 307 LIST parameter 307 MEMBER parameter 308 NAME parameter 308 NEW parameter 308 OUTHDR parameter 309 OUTTLR parameter 309 SEQFLD parameter 310 SOURCE parameter 310 SSI parameter 311 TOTAL parameter 311 REPLACE parameter TCRGEN statement 288 REPLACE statement CPA SWORD parameter 421 CVOL parameter 388 DATA parameter 422 DSNAME parameter 389, 423 FROM parameter 390 IEHMOVE program 386 IEHPROGM program 420 MEMBER parameter 391 PASWORD1 parameter 424 PASWORD2 parameter 424 TYPE parameter 425 VOL parameter 426 replacing data set passwords 411 replacing members identically named 41 selected 42 REPRO statement IEBUPDTE program 298 INHDR parameter 306 INTLR parameter 307 LEVEL parameter 307 LIST parameter 307 MEMBER parameter 308 NAME parameter 308 NEW parameter 308 Index 461 OUTHDR parameter 309 OUTTlR parameter 309 SEQFlD parameter 310 SOURCE parameter 310 SSI parameter 311 TOTAL parameter 311 restrictions detai! statement 302 function statement 299 return codes IEBCOMPR program 28 IEBCOPY program 46 IEBDG program 100 IEBDG user exit routine 107 IEBEDIT program 131 IEBGENER program 145 IEBIMAGE program 183 IEBISAM program 235 IEBISAM user exit routine 234 IEBPTPCH program 242 IEBTCRIN program 279 IEBUPDTE program 294 UPDATE parameter 304 IEHATlAS program 326 IEHINITT program 335 IEHlIST program 351 IEHMOVE program 374 IEHPROGM program 412 totaling routine 447 user exit routine 440 RETURN macro format 440 returning from an exit routine 440 ripp!e action 112 example 122 RlD counts inserting 45 roll action 112 rrkk parameter TRACK statement 329 VTOC statement 329 S parameter TRACK statement 329 SCRATCH statement DSNAME parameter 423 IEHPROGM program 415 MEMBER parameter 424 PURGE parameter 424 SYS parameter 424 VOL parameter 426 VTOC parameter 426 scratching data sets 404 members 404 SELECT statement IEBCOPY program 54 IEHMOVE program 386 MEMBER parameter 58, 391 selecting members to be loaded or unloaded 40 selecting members to be moved or copied 40 selective copy or load processing SEQ parameter CHARSET statement 205 GRAPHIC statement 205 SEQFLD parameter 462 MVS/370 Utilities 41 ADD statement 310 CHANGE statement 310 REPL statement 310 REPRO statement 310 seqout DD statement IEBDG program 103 sequential data set as backup copy 231 cataloging in an OS CVOL 405 changing to partitioned 293 comparing 27 examples 33-35 copying 366 examp!es 158-160 defining fields example 121 editing and copying examp!es 162-165 from ISAM data set examples 238 loading example 92 modifying 293 moving 366 printing examp!es 258, 261 punching examples 259, 262 scratching 404 sequinset DD statement IEBDG program 102 SEQI parameter DELETE statement 309 NUMBER statement 309 SEQ2 parameter DELETE statement 309 NUMBER statement 309 SER parameter INITT statement 340 SETPRT SVC instruction 169 shift left action 112 shift right action 112 SIGN parameter FD statement 120 SIO usage count 436 SIZE parameter FCB statement 206 size, volume 362 SKIP parameter PRINT statement 255 PUNCH statement 255 SMF (system management facilities) type 21 records format 435 SOURCE parameter ADD statement 310 CHANGE statement 310 REPL statement 310 REPRO statement 310 space allocation IEBCOPY program 49 IEHMOVE program 363 special codes for IEBTCRIN 269 SSI parameter ADD statement 311 CHANGE statement 311 REPL statement 311 REPRO statement 311 standard label set placing on magnetic tape 334 START parameter EDIT statement 134 start-of-record in IEBTCRIN program 267 STARTLOC parameter FD statement 120 STEPNAME parameter EDIT statement 134 stop code 273 STOPAFT parameter PRINT statement 256 PUNCH statement 256 storage requirements IEBIMAGE program 166 SYS1.IMAGELIB data set 167 STRTAFT parameter PRINT statement 256 PUNCH statement 256 SYNAD routine 436 SYS parameter SCRATCH statement 424 SYSCTLG data set defining 419 SYSIN DO statement' IEBCOMPR program 29 IEBCOPY program 48 IEBDG program 102 IEBEDIT program 132 IEBGENER program 147 IEBIMAGE program 185 IEBPTPCH program 244 IEBTCRIN program 282 IEBUPDTE program 297 IEHATLAS program 327 IEHINITT program 337 IEHLIST program 354 IEHMOVE program 378 IEHPROGM program 415 SYSOUT data set printing example 266 ~YSPRINT DD statement IEBCOMPR program 29 IEBCOPY program 46 IEBDG program 102 IEBEDIT program 132 IEBGENER program 145 IEBIMAGE program 184 IEBISAM program 235 IEBPTPCH program 244 IEBTCRIN program 281 IEBUPDTE program 295 IEHATlAS program 327 IEHINITT program 336 IEHLIST program 353 IEHMOVE program 376 IEHPROGM program 414 system utility programs summary 1 SYSUT1 DD statement IEBCOMPR program 29 IEBEDIT program 132 IEBGENER program 145 IEBIMAGE program 185 IEBISAM program 235 IEBPTPCH program 244 IEBTCRIN program 281 IEBUPDTE program 296 IEHATLAS program 327 IEHMOVE program 376 IFHSTATR program 437 SYSUT2 DD statement IEBCOMPR program 29 IEBEDIT program 132 IEBGENER program 146 IEBISAM program 235 IEBPTPCH program 244 IEBTCRIN program 282 IEBUPDTE program 296 IFHSTATR program 437 SYSUT3 DD statement IEBTCRIN program 282 SYS1.IMAGELIB data set maintaining 168 storage requirements 167 SYS1.MAN tape 435 SYS1.VTOCIX data set 356 TABLE statement CGMID parameter 194 DELETE parameter 196 GCMLIST parameter 198 IEBIMAGE program 188 LOC parameter 200 tape cartridge reader editing data from 267 reading input from 267 tape DD statement IEHMOVE program 377 tape labels 333 creating 341, 344 examples 341-344 tapes assessing quality 435 TCRGEN statement EDIT parameter 284 ERROPT parameter 285 IEBTCRIN program 283 MAXLN parameter 286 MINLN parameter 287 REPLACE parameter 288 TRANS parameter 289 TYPE parameter 289 VERCHK parameter 290 TEXT parameter COPYMOD statement 207 TITLE statement IEBPTPCH program 246 ITEM parameter 253 TO parameter COpy CATALOG statement 391 COPY DSGROUP statement 391 COpy DSNAME statement 391 COpy PDS statement 391 COPY VOLUME statement 391 MOVE CATALOG statement 391 MOVE [)'S'GROUP statement 391 MOVE D:S'NAME statement 391 MOVE PDS statement 391 MOVE VOLUME statement 391 TODD parameter COPY CATALOG statement 392 COpy DSGROUP statement 392 COpy DSNAME statement 392 COPY PDS statement 392 COpy VOLUME statement 392 MOVE CATALOG statement 392 MOVE DSGROUP statement 392 MOVE DSNAME statement 392 MOVE PDS statement 392 MOVE VOLUME statement 392 TOTAL parameter ADD statement 311 CHANGE statement 311 EXITS statement 156 REPL statement 311 Index 463 REPRO statement 311 totaling routine 447 return codes 447 TOTCONV parameter PRINT statement 257 PUNCH statement 257 track assigning an alternate 325 examples 330-332 replacing defective 325 track overflow feature 378 TRACK statement bbbb parameter 329 cccc parameter 329 dddd parameter 329 hhhh parameter 329 IEHATLAS 328 rrkk parameter 329 S parameter 329 TRANS parameter TCRGEN statement 289 translate table structure in module 175 truncate left action 112 truncate right action 112 TYPE parameter ADD statement 425 EDIT statement 135 REPLACE statement 425 TCRGEN statement 289 TYPORG parameter COMPARE statement 32 PRINT statement 257 PUNCH statement 257 UCS parameter DFN statement 23 UCS statement ICAPRTBL program 20 ucs-image parameter 23 ucs-image parameter UCS statement 23 UNCATLG parameter COPY DSGROUP statement 392 COPY DSNAME statement 392 COpy PDS statement 392 MOVE DSGROUP statement 392 MOVE DSNAME statement 392 MOVE PDS statement 392 UNCATLG statement CVOL parameter 422 DSNAME parameter 423 IEHPROGM program 417 universal character set buffer , loading 21 unload operation creating sequential data sets example 91 UNLOAD parameter COPY CATALOG statement 392 COPY DSGROUP statement 392 COPY DSNAME statement 392 COPY PDS statement 392 COpy VOLUME statement 392 MOVE CATALOG statement 392 MOVE DSGROUP statement 392 MOVE DSNAME statement 392 MOVE PDS statement 392 MOVE VOLUME statement 392 464 MVS/370 Utilities ~9 unloaded data set 361 converting to ISAM data set example 239 copying 370 moving 370 unmovable data set cop~ti ng 370 movlng 370 UPDATE parameter CHANGE statement 311 restrictions 299 updating data set libraries 293 user labels 151 processing 149, 446 as data 447 as data set descriptors 446 treated as data 250 user language modifications 293 user specified picture 98, 119 example 128 user-information· parameter END statement 23 JOB statement 23 utility control statements 4 coding 5 continuing 5 utility control statements (ICAPRTBL) DFN 20 END 21 FCB 21 JOB 20 UCS 20 utility control statements (IEBCOMPR) COMPARE 30 EXITS 30 LABELS 31 utility control statements (IEBCOPY) ALTERMOD 53 COPY 51 COPYMOD 53 EXCLUDE 56 SELECT 54 utility control statements (IEBDG) CREATE 107 DSD 104 END 110 FD 105 REPEAT 110 utility control statements (IEBEDIT) EDIT 133 utility control statements (IEBGENER) EXITS 148 GENERATE 148 LABELS 149 MEMBER 149 RECORD 150 utility control statements (IEBIMAGE) CHARSET 190 COPYMOD 187 FCB 186 GRAPHIC 189 INCLUDE 191 NAME 191 OPTION 191 TABLE 188 utility control ~tatements (IEBPTPCH) EXITS 246 LABELS 248 MEMBER 247 PRINT 245 PUNCH 246 RECORD 247 TITLE 246 utility control statements (IEBTCRIH) EXITS 283 TCRGEN 283 utility control statements ADD 298 ALIAS 305 CHANGE 298 DELETE 301 ENDUP 306 LABEL 303 NUMBER 301 REPL 298 REPRO 298 utility control statements TRACK 328 VTOC 328 utility control statements INITT 337 utility control statements LISTCTLG 354 LISTPDS 354 LISTVTOC 355 utility control statements COPY CATALOG 384 COPY DSGROUP 381 COPY DSNAME 380 COpy PDS 383 COPY VOLUME 385 EXCLUDE 386 INCLUDE 385 MOVE CATALOG 383 MOVE DSGROUP 381 MOVE DSNAME 379 MOVE PDS 382 MOVE VOLUME 384 REPLACE 386 SELECT 386 utility control statements ADD 420 BLDA 418 BLDG 419 BLDX 418 CATLG 417 CONNECT 419 DELETEP 421 DLTA 418 DLTX 418 LIST 421 RELEASE 419 RENAME 415 REPLACE 420 SCRATCH 415 UNCATLG 417 utility programs introduction 1 invoking 13 selecting 3 summary 8, 12 variable-spanned records BDAM data sets with 373 VERCHK parameter TCRGEN statement 290 ve"ri fyi ng a backup copy IEBCOMPR program 27 (IEBUPDTE) (IEHATLAS) (IEHINITT) (IEHLIST) (IEHMOVE) (IEHPROGM) vertical line spacing IEBIMAGE program 170 VL parameter ATTACH macro 14 CALL macro 16 LINK macro 14 VOL parameter ADD statement 426 CATLG statement 426 CONNECT statement 426 DELETEP statement 426 LISTCTLG statement 357 LISTPDS statement 357 LISTVTOC statement 357 RENAME statement 426 REPLACE statement 426 SCRATCH statement 426 volume copying 372 movlng 372 volume label set placing on magnetic tape 333 VOLUME parameter COPY VOLUME statement 392 MOVE VOLUME statement 392 volume size compatibility 362 volume table of contents (VTOC) listing 347 edited format 347 unedited format 350 listing entries 355 example 359 VTOC parameter SCRATCH statement 426 VTOC statement bbbb parameter 329 cccc parameter 329 dddd parameter 329 hhhh parameter 329 IEHATLAS program 328 rrkk parameter 329 wait state codes ICAPRTBL program wave action 113 18 2495 tape cartridge reader editing data from 267 reading input from 267 3800 Model 3 printer 191 Index 465 GC26-4065-1 ==.= =<8> -- -------....... _-- -- -----~-.- MVS/370 Utilities GC26-4065-1 Reader's Comment Form This manual is part of a library that serves as a reference source for systems analysts, programmers, and operators of IBM systems. You may use this form to communicate your comments about this publication, its organization, or subject matter, with the understanding that IBM may use or distribute whatever information you supply in any way it believes appropriate without incurring any obligation to you. Your comments will be sent to the author's department for whatever review and action, if any, are deemed appropriate. Note: Copies of IBM publications are not stocked at the location to which this form is addressed. Please direct any requests for copies of publications, or for assistance in using your IBM system, to your IBM representative or to the IBM branch office serving your locality. Q; o z List TNLs here: If you have applied any technical newsletters (TNLs) to this book, please list them here: ustTNL ___________________ Previous TNL _ _ _ _ _ _ _ __ Previous TNL _ _ _ _ _ _ _ __ Fold on two lines, tape, and mail. No postage stamp necessary if mailed in the U.S.A. (Elsewhere, an IBM office or representative will be happy to forward your comments or you may mail directly to the address in the Edition Notice on the back of the title page.) Thank you for your cooperation. GC26-4065-1 Reader's Comment Form Fold and tape Fold and tape Please do not staple .......................................................................................................................................... ""II NO POSTAGE NECESSARY IF MAILED INTHE UNITED STATES BUSINESS REPLY MAIL FIRST CLASS PERMIT NO. 40 ARMONK, N.Y. POSTAGE WILL BE PAID BY ADDRESSEE I BM Corporation P.O. Box 50020 Programming Publishing San Jose, California 95150 Fold and tape Please do not staple Fold and tape --...------ -- ----- -------~-,- GC26-4065-1 8r'f~ / Technical Newsletter This Newsletter No. Date GN26 -1133 30 March 1914 Base Publication No. File No. GC26-4065-1 5370-32 Prerequisite Newsletters None MYS,370 utiliti.s Copyright IBM Corp. 1983 = This technical newsletter (TNL) provides replacement page. for the subject pUblication to support Release 1.1 of MV5'370 Data Facility Product, Program Product 5665-295. These replacement pages remain in effect for any subsequent releases unless specifically altered. Pages to be inserted and/or removed are. cover-2 9,10 95-96.1 (96.1 added) 165-172.2 (172.1 to 172.2 added) 183-208.2 (208.1 to 208.2 added) 213-214.1 (214.1 added) Each technical change is indicated by a vertical bar to the left of the change. S~.ry \ : / of AIIandlnants Technical changes .ffect~ve with this newsletter are noted in the ·Summary of Amendments· following the preface. Nota: Please file this cover letter at the back of the publication to provide a record of changes. ~I IBM Corporation; P.O. Box 50020, Programming Publishing, San Jose, California 95150 Printed in U.S.A. •
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.3 Linearized : No XMP Toolkit : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37 Create Date : 2012:06:08 15:51:41-08:00 Modify Date : 2012:06:08 21:23:31-07:00 Metadata Date : 2012:06:08 21:23:31-07:00 Producer : Adobe Acrobat 9.51 Paper Capture Plug-in Format : application/pdf Document ID : uuid:39f442d3-6a9c-4d66-86e1-bf00fb39b8a6 Instance ID : uuid:f4c533f4-f063-4b27-9573-64d3e06865ba Page Layout : SinglePage Page Mode : UseNone Page Count : 496EXIF Metadata provided by EXIF.tools