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 PDF.
Page Count: 496

DownloadGC26-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
Open PDF In BrowserView 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                      : 496
EXIF Metadata provided by EXIF.tools

Navigation menu