GC26 3793 1_OS_VS_Data_Management_Macro_Instructions_Sep72 1 OS VS Data Management Macro Instructions Sep72

User Manual: GC26-3793-1_OS_VS_Data_Management_Macro_Instructions_Sep72

Open the PDF directly: View PDF PDF.
Page Count: 280

DownloadGC26-3793-1_OS_VS_Data_Management_Macro_Instructions_Sep72 GC26-3793-1 OS VS Data Management Macro Instructions Sep72
Open PDF In BrowserView PDF
GC26-3793-1

Systems

OS/ VS Data Management
Macro Instructions
VS1 Release 2
VS2 Release 1

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

Second Edition (September 1972)

I

This edition, as amended by technical newsletter GN26-0748, applies both to Release 2 of OS/VS1
and to Release 1 of OSNS2, and to all subsequent releases of either system unless otherwise
indicated in new editions or technical newsletters.
Significant system changes are summarized under "OS/VS1 Summary of Changes" or "OSNS2
Summary of Changes" following the Preface.

Information in this publication is subject to significant change. Any such changes will be published
in new editions or technical newsletters. Before using the publication, consult the latest IBM SRL
Newsletter, GN20.0360, that amends IBM Systemj360 and Systemj370 Bibliography, GA22-6822,
to learn which editions and technical newsletters are applicable and current.
Requests for copies of IBM publications should be made to the IBM branch office that serves you.
Forms for readers' comments are provided at the back of this publication. If the forms have been
removed, comments may be addressed to IBM Corporation, Programming Center-Publishing,
Department 058, Monterey and Cottle Roads, San Jose, California 95114. All comments become
the property of IBM.

© Copyright International Business Machines Corporation 1972

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

PREFACE
This publication contains descriptions and definitions for the data management macro
instructions available in the assembler language. It provides application and system
programmers with the necessary information to code the macro instructions.
Most of the information in this book applies to both OS/VSl and OS/VS2.
Information that applies only to OS/VSl or OS/VS2 is explicitly identified in the text.
This publication is divided into these parts:
"Introduction," which contains a general description of macro instructions, the rules
to be followed when macro instructions are coded, and a description of the
notational conventions used throughout the publication.
•

"Macro Instruction Descriptions," which describes the function of each macro
instruction and defines how each macro instruction is to be coded. The macro
instructions are presented in alphabetic order with each macro instruction beginning
on a right-hand page. The standard form of each macro instruction is described
first, followed by the description of the list and execute form instruction; the list
and execute forms are available only for those macro instructions that pass
parameters in a list.

•

"Appendix A: Status Information Following an Input/Output Operation," which
includes information about error indications available following an input/output
operation.

•

"Appendix B: Data Management Macro Instructions Available by Access
Methods," which lists the macro instructions available for each of the data
management access methods.

•

"Appendix C: Device Capacities," which lists device capacities that can be used as
a guide when coding the blocksize and logical record length operands in the DCB
macro instruction.

•

"Appendix D: DCB Exit List Format and Contents," which describes the format
and content of the data control block exit list.

•

"Appendix E: Control Characters," which contains information about the control
characters used to control spacing and skipping (printers) and stacker selection
(card read punch or card punch).

•

"Appendix F: Data Control Block Symbolic Field Names," which lists the location,
alignment, and description of the data control block symbolic field names.

•

"Appendix G: Event Control Block," which lists the location, alignment, and
description of the event control block symbolic field names.
"Index," which provides topic references to information in this book.

Prerequisite Publications
Before coding data management macro instructions, you should be familiar with the
information in the following publications:
• OS/VS and DOS/VS Assembler Language, GC33-4010
• OS/VS Data Management Services Guide, GC26-3783
• OS/VS Supervisor Services and Macro Instructions, GC27-6979

Preface iii

Related Macro Instruction Publications
The following publications contain descriptions of macro instructions for specialized
applications such as teleprocessing, graphics, and magnetic/optical character
recognition devices:
• OS/VS BTAM, GC27-6980
OS Data Management Services and Macro Instructions for IBM
1285/1287/1288, GC21-S004
• OS Data Management Services and Macro Instructions for IBM 1419/1275,
GC21-S006
• OS/VS Graphic Programming Services (GPS) for IBM 2250 Display Unit,
GC27-6971
• OS/VS Graphic Programming Services (GPS) for IBM 2260 Display Station
(Local Attachment), GC27-6972

Related System Publications
This book refers to other publications that contain additional information about the
operating system. Depending on the requirements of the individual installation, an
application or system programmer may need these publications to code programs
for the data management access methods.
In the list that follows, books designated OS/VS apply to both VSl and VS2; books
designated OS/VSl apply only to VSl; and books designated OS/VS2 apply only to
VS2.
• OS/VS Checkpoint/Restart, GC26-3784
• OS/VS Data Management for System Programmers, GC28-0631
• OS/VS1 Debugging Guide, GC24-S093
• OS/VS2 Debugging Guide, GC28-0632
• OS/VS Linkage Editor and Loader, GC26-3813
• OS/VS1 System Generation Reference, GC26-3791
• OS /VS2 System Generation Reference, GC26-3792
• OS/VS Utilities, GC3S-000S

iv OS/VS Data Management Macro Instructions

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

OS/VSl SUMMARY OF CHANGES

Release 2
New Devices
•

The 3505 Card Reader and the 3525 Card Punch are now supported by VS1; the
macro instructions affected by this change are CLOSE, CNTRL, DCB (BSAM and
QSAM), OPEN, and PRTOV.

•

The 2305-1 Drum Storage and the new 3333 Disk Storage are also now supported
by VS 1; capacity data for these devices has been added to the tables in Appendix
C.

•

DEB validity checking, a data protection feature formerly supported only by VS2, is
now supported by VS 1; this change affects the OPEN macro instruction.

New Function

Miscellaneous Changes
•

Describe register contents upon entry to an EODAD routine (DCB macro
instruction for BPAM, BSAM, QISAM, and QSAM).

•

Restrict use of the temporary close (TYPE=T) option in a SYNAD routine
(CLOSE macro instruction).

•

Expand the description of the LEAVE option (FEOV macro instruction for BSAM
and QSAM).

•

Define a new return code for the CHKPT macro instruction.

•

Delete tape labels as a source of buffer alignment (BF ALN) data (DCB macro
instruction for all access methods).

OS/VS 1 Summary of Changes v

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

CONTENTS
Page

iv
iv

Preface
Prerequisite Publications
Related Macro Instruction Publications
Related System Publications

v
v
v
v
v

OSNSI Summary of Changes
Release 2
New Devices
New Function
Miscellaneous Changes

iii
iii

ix

Figures

1
1
1
2
4
5

Introduction
Data Management Macro Instructions
Coding Aids
Coding Macro Instructions
Rules for Register Usage
Rules for Continuation Lines

7
9
13
15
17
19
21
23
25
29
31
33
37
39
41
45
53
59
67
83
93
109
111
113
115

Macro Instruction Descriptions
BLDL - Build a Directory Entry List (BP AM)
BSP - Backspace a Physical Record (BSAM - Magnetic Tape and Direct
Access Only)
BUILD - Build a Buffer Pool (BDAM, BISAM, BP AM, BSAM,
QISAM, and QSAM)
BUILDRCD - Build a Buffer Pool and a Record Area (QSAM)
BUILDRCD - List Form
BUILDRCD - Execute Form
CHECK - Wait for and Test Completion of a Read or Write Operation
(BDAM, BISAM, BPAM, and BSAM)
CHKPT - Take a Checkpoint for Restart Within a Job Step (BDAM,
BISAM, BP AM, BSAM, QISAM, and QSAM)
CHKPT - List Form
CHKPT - Execute Form
CLOSE - Logically Disconnect a Data Set (BDAM, BISAM, BPAM,
BSAM, QISAM, and QSAM)
CLOSE - List Form
CLOSE - Execute Form
CNTRL - Control Online Input/Output Device (BSAM and QSAM)
DCB - Construct a Data Control Block (BDAM)
DCB - Construct a Data Control Block (BISAM)
DCB - Construct a Data Control Block (BP AM)
DCB - Construct a Data Control Block (BSAM)
DCB - Construct a Data Control Block (QISAM)
DCB - Construct a Data Control Block (QSAM)
DCBD - Provide Symbolic Reference to Data Control Blocks
(BDAM, BISAM, BPAM, BSAM, QISAM, and QSAM)
ESETL - End Sequential Retrieval (QISAM)
FEOV - Force End of Volume (BSAM and QSAM)
FIND - Establish the Beginning of a Data Set Member (BP AM)
Contents vii

Page
117
119
121
123
125
127
129
131
133
137
139
141
143
145
147
149
151
155
157
159
161
163
165
167
169
171
175
177
179
183
187
189
191
195
197
199
203
205

FREEBUF - Return a Buffer to a Pool (BDAM, BISAM,
BP AM, and BSAM)
FREEDBUF - Return a Dynamically Obtained Buffer (BDAM
and BISAM)
FREEPOOL - Release a Buffer Pool (BDAM, BISAM, BPAM, BSAM,
QISAM, and QSAM)
GET - Obtain Next Logical Record (QISAM)
GET - Obtain Next Logical Record (QSAM)
GETBUF - Obtain a Buffer (BDAM, BISAM, BPAM, and BSAM)
GETPOOL - Build a Buffer Pool (BDAM, BISAM, BP AM, BSAM,
QISAM, and QSAM)
NOTE - Provide Relative Position (BP AM and BSAM - Tape and Direct
Access Only)
OPEN - Logically Connect a Data Set (BDAM, BISAM, BPAM,
BSAM, QISAM, and QSAM)
OPEN - List Form
OPEN - Execute Form
POINT - Position to a Relative Block (BP AM and BSAM - Tape
and Direct Access Only)
PRTOV - Test for Printer Carriage Overflow (BSAM and QSAM - Online
Printer and 3525 Card Punch, Print Feature)
PUT - Write Next Logical Record (QISAM)
PUT - Write Next Logical Record (QSAM)
PUTX - Write a Record From an Existing Data Set (QISAM and QSAM)
READ - Read a Block (BDAM)
READ - Read a Block of Records (BISAM)
READ - Read a Block (BP AM and BSAM)
READ - Read a Block (Offset Read of Keyed BDAM Data Set Using
BSAM)
READ - List Form
READ - Execute Form
RELEX - Release Exclusive Control (BDAM)
RELSE - Release an Input Buffer (QISAM and QSAM Input)
SETL - Set Lower Limit of Sequential Retrieval (QISAM Input)
SETPRT - Load UCS and FCB Images (BSAM and QSAM)
SETPRT - List Form
SETPRT - Execute Form
STOW - Update Partitioned Data Set Directory (BP AM)
SYNADAF - Perform SYNAD Analysis Function (BDAM, BISAM, BPAM,
BSAM, QISAM, and QSAM)
SYNADRLS - Release SYNADAF Buffer and Save Areas (BDAM, BISAM,
BP AM, BSAM, QISAM, and QSAM)
TRUNC - Truncate an Output Buffer (QSAM OutputFixed- or V ariable-Length Blocl~ed Records)
WRITE - Write a Block (BDAM)
WRITE - Write a Logical Record or Block of Records (BISAM)
WRITE - Write a Block (BPAM and BSAM)
WRITE - Write a Block (Create a BDAM Data Set with BSAM)
WRITE - List Form
WRITE - Execute Form

viii OS/VS Data Management Macro Instructions

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

Page
207

XLATE - Translate to and from ASCII (BDAM, BISAM, BP AM,
BSAM, QISAM, and QSAM)

209
209

Appendix A: Status Information Following an Input/Output Operation
Data Event Control Block

219

Appendix B: Data Management Macro Instructions Available by Access
Method

221

Appendix C: Device Capacities

223

Appendix D: DCB Exit List Format and Contents

225

Appendix E: Control Characters

227

Appendix F: Data Control Block Symbolic Field Names

241 ;' Appendix G: Event Control Block
243

Index

Contents ix

Page of GC26-3793-1
Revised December 15,1972
By TNL GN26-0748

FIGURES
Page

210
212
214
215
215
216

Figure
Figure
Figure
Figure
Figure
Figure

4.
5.
6.

217

Figure

7.

1. Exception Code Bits -

BISAM
QISAM
Exception Code Bits - BDAM
Register Contents on Eutry to SYNAD Routine - QISAM
Register Contents on Entry to SYNAD Routine - BISAM
Register Contents on Entry to SYNAD Routine - BDAM,
BPAM, BSAM, and QSAM
Status Indicators for the SYNAD Routine - BDAM,
BP AM, and BSAM

2. Exception Code Bits 3.

Figures xi

HOW OS/VS MACROS DIFFER FROM OS/MFf AND OS/MVT
MACROS
The functional differences between VS and MFT and MVT macros are minimal. The
HIARCHY operand (DCB and GETPOOL macro instructions), which in MFT and
MVT allows you to specify the storage hierarchy in which a buffer pool is constructed,
is not necessary in VS because of the pageable storage feature in VS.

How OS/VS Macros Differ from OS/MFT and OS/MVT Macros xiii

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

INTRODUCTION
Data Management Macro Instructions
A set of macro instructions is provided by IBM for communicating service requests to
the data management access method routines. These macro instructions are available
only when the assembler language is being used, and they are processed by the
assembler program using macro definitions supplied by IBM and placed in the macro
library when the operating system is generated.
The processing of the macro instruction by the assembler program results in a macro
expansion, generally consisting of executable instructions and data in the form of
assembler-language statements. The data fields are the parameters to be passed to the
access method routine; the executable instructions generally consist of a branch around
the data fields, instructions to load registers, and either a branch instruction or
supervisor call (SVC) to give control to the proper program. The exact macro
expansion appears as a part of the assembler listing.
A listing of a macro definition from SYS 1.MACLIB (the library in which macro
definitions are stored) can be obtained by using the utility program IEBPTPCH, which
is described in OS /VS Utilities.
Before macro instructions are coded using this publication, the user should be familiar
with the information contained in OS/VS Data Management Services Guide.
When programs that request supervisor services are being coded, the user should be
familiar with the information contained in OS /VS Supervisor Services and Macro
Instructions.
When programs are being coded for more specialized applications such as
teleprocessing, graphics, and character recognition, the publication that describes the
specific access method and/or device type should be used. Publications containing
descriptions of the macro instructions for teleprocessing, graphics, and character
recognition devices are listed in the preface of this publication.
The operation of some macro instructions depends on the options selected when the
macro instruction is coded. For these macro instructions, either separate descriptions
are provided or the differences are listed within a single description. If no differences
are explicitly listed, none exist. The description of each macro instruction starts on a
right-hand page; the descriptions that do not apply to the access methods being used
can be removed. Appendix B provides a list of the macro instructions available for
each access method.

Coding Aids
The symbols [ ], { }, and ,... are used in this publication to help defined the macro
instructions. These symbols are not coded; they are only to indicate how a macro
instruction may be written; their general definitions are given below:
[]

indicates optional operands. The operand enclosed in the brackets mayor may
not be coded, depending on whether or not the associated option is desired.
If more than one item is enclosed in brackets, for example, [REREAD], one
[LEAVE]
or none of the items may be coded.

Introduction 1

{}

indicates that a choice must be made. One of the operands from the vertical
stack within braces, for example, {INPUT}, must be coded, depending on
{OUTPUT}
which of the associated services is desired.
indicates that more than one set of operands may be designated in the same
macro instruction.

Coding Macro Instructions
Data management macro instructions are written in the assembler language and, as
such, are subject to the rules contained in OS/VS and DOS/VS Assembler Language.
Data management macro instructions, like all assembler language instructions, are
written in the following format:
Name

Operation

Operands

symbol
or
blank

Macro name

None, one or more operands separated
by commas

Comments

The operands are used to specify services and options to be used and are written
according to the following general rules:
• If the selected operand is shown in bold capital letters (for example, MACRF=WL),

code the operand exactly as shown.
• If the selected operand is a character string in bold type (for example, if the type

operand of a READ macro instruction is SF), code the operand exactly as shown.
• If the operano is shown in italic lowercase letters (for example, deb address),

substitute the indicated address, name, or value.
• If the operand is a combination of bold capital letters and italic lowercase letters (for
example, LRECL= absexp), code the capital letters and equal sign exactly as shown

and substitute the apporpriate address, name, or value for the italic lowercase letters.
• Commas and parentheses are coded exactly as shown, except that the comma
following the last operand coded should be omitted. The use of commas and
parentheses is indicated by brackets and braces in the same manner as brackets and
braces indicate the use of operands.
• Several macro instructions contain the designation'S'. This operand, when used,
must have the apostrophe on both sides of the S.
When substitution of a name, value, or address is required, the notation used to specify
the operand depends on the operand being coded. The following shows two examples
of the notations used to indicate how an operand can be coded.
DDNAME= symbol
In the above example, the only type of operand that can be coded is a valid
assembler-language symbol.

2 OS/VS Data Management Macro Instructions

deb address -

RX-Type Address, (2-12), or (1)

In the above example, the operand that can be substituted can be an RX-type address,
any of the general registers 2 through 12,. or general register 1.
The following describes the meaning of each notation used to show how an operand
can be coded.
symbol
When this notation is shown, the operand can be any valid assembler-language symbol.
decimal digit
When this notation is shown, the operand can be any decimal digit up to the maximum
value allowed for the specific operand being described.
(2-12)
When this notation is shown, the operand specified can be any of the general registers
2 through 12. All registers as operands must be coded in parentheses; for example, if
register 3 is coded, it is coded as (3). When one of the registers 2 through 12 is used,
it can be coded as a decimal digit, symbol (equated to a decimal digit), or an expression
that results in a value of 2 through 12.
(1)

When this notation is shown, general register 1 can be used as an operand. When used
as an operand in a macro instruction, the register must be specified as the decimal digit
1 enclosed in parentheses as shown above.
(0)

When this notation is shown, general register 0 can be used as an operand. When used
as an operand in a macro instruction, the register must be specified as the decimal digit
o enclosed in parentheses as shown above.
RX-Type Address
When this notation is shown, the operand can be specified as any valid
assembler-language RX-type address. The following shows examples of each valid
RX-type address:
Name

Operation

Operand

ALPHAI
ALPHA2
BETA1
BETA2
GAMMAI
GAMMA2
GAMMA3
LAMBDA1

L
L

1,39(4,10)
REG 1,39( 4,TEN)
2,ZETA(4)
REG2,ZET A(REG4)
2,ZETA
REG2,ZETA
2,=F'1000'
3,20(,5)

L

L
L

L
L

L

Both ALPHA instructions specify explicit addresses; REG 1 and TEN are absolute
symbols. Both BET A instructions specify implied addresses, and both use index
registers. Indexing is omitted from the GAMMA instructions. GAMMA 1 and
GAMMA2 specify implied addresses. The second operand of GAMMA3 is a literal.
LAMBDA1 specifies an explicit address with no indexing.
Introduction 3

A-Type Address
When this notation is shown, the operand can be specified as any address that can be
written as a valid assembler-language A-type address constant. An A-type address
constant can be written as an absolute value, a relocatable symbol, or relocatable
expression. Operands that require an A-type address are inserted into an A-type
address constant during the macro expansion process. For more details about A-type
address constants, refer to OS/VS and DOS/VS Assembler Language.
absexp
When this notation is shown, the operand can be an absolute value or expression. An
absolute expression can be an absolute term or an arithmetic combination of absolute
terms. An absolute term can be a nonrelocatable symbol, a self-defining term, or the
length attribute reference. For more details about absolute expressions, refer to
OS/VS and DOS/VS Assembler Language.
relexp
When this notation is shown, the operand can be a relocatable symbol or expression.
A relocatable symbol or expression is one whose value changes by n if the program in
which it appears is relocated n bytes away from its originally assigned area of storage.
For more details about relocatable symbols and expressions, refer to OS/VS and
DOS / VS Assembler Language.

Rules for Register Usage
Many macro instruction expansions include instructions that use a base register
previously defined by a USING statement. The USING statement must establish
address ability so that macro expansion can include a branch around the in line
parameter list, if present, and refer to data fields and addresses specified in the macro
instruction operands.
Macro instructions that use a BAL or BALR instruction to pass control to an access
method routine, normally require that register 13 contain the address of an 18-word
register-save area. The READ, WRITE, CHECK, GET, and PUT macro instructions
are of this type.
Macro instructions that use a supervisor call (SVC) instruction to pass control to an
access method routine may modify general registers 0, 1, 14, and 15 without restoring
them. Unless otherwise specified in the macro instruction description, the contents of
these registers are undefined when the system returns control to the problem program.
When an operand is specified as a register, the problem program must have inserted the
value or address to be used into the register as follows:
•

If the register is to contain a value, it must be placed in the low-order portion of

the register unless the macro instruction description states otherwise. Any unused
bits in the register should be set to zero.
•

If the register is to contain an address, the address must be placed in the low-order

three bytes of the register, and the high-order byte of the register should be set to
zero.

4 OS/VS Data Management Macro Instructions

Rules for Continuation Lines
The operand field of a macro instruction can be continued on one or more additional
lines as follows:
1. Enter a continuation character (not blank, and not part of the operand coding) in
column 72 of the line.
2. Continue the operand field on the next line, starting in column 16. All columns to
the left of column 16 must be blank.
The operand field being continued can be coded in one of two ways. The operand
field can be coded through column 71, with no· blanks, and continued in column 16 of
the next line, or the operand field can be truncated by a comma, where a comma
normally falls, with at least one blank before column 71, and then contiriued in column
16 of the next line. An example of each method is shown in the following illustration:

I

Name

Operation

Operand

Comments

NAME 1

OPl

OPERAND1,OPERAND2,OPERAND3,OPERAND4,OPERAND5,OPERAND6,OPX
ERAND7
THIS IS ONE WAY

NAME 2

OP2

OPERAND1,OPERAND2, THIS IS ANOTHER WAY
OPERAND3,
OPERAND4

x
X

Introduction 5

MACRO INSTRUCTION DESCRIPTIONS

Macro Instruction Descriptions 7

BLDL

BLDL -

Build a Directory Entry List (BPAM)
The BLDL macro instruction is used to complete a list of information from the
directory of a partitioned data set. The problem program must supply a storage area;
the area must include information about the number of entries in the list, the length of
each entry, and the name of each data set member (or alias) before the BLDL macro
instruction is issued. Data set member names in the list must be in alphameric order.
All read and write operations using the same data control block must have been tested
for completion before the BLDL macro instruction is issued.
The BLDL macro instruction is written as follows:

BLDL

[symbol]

deb address -

deb address, list address

RX-type Address, (2-12), 0), or the Decimal Digit 0

The deb address operand specifies the address of the data control block for an open
partitioned, data set, or zero can be specified to indicate that the data set is in a job
library, step library, or link library.
list address -

RX-Type Address, (2-12), or (0)

The list address operand specifies the address of the list to be completed when the
BLDL macro instruction is issued. The list address must be on a halfword
boundary. The following illustration shows the format of the list:

List

List
Description

0 or
More

List

Address ~_ _ _ _ _ _ _ _E~n.....
tr_Y_(_LL_b_Y_t_es_)_ _ _~y.,-_ _ _E_n_tr_ie.....s.....(_FF_to_ta_I-..,)

lengj FF
{bytes}

2

I

Lli

NAME 1

2

8

I I+H
TTR
3

1 1 1

USER DATA

o

NAME 2

)

0

to 62

Macro Instruction Descriptions 9

FF

This field must contain a binary value indicating the total number of
entries in the list.

LL

This field must contain a binary value indicating the length, in bytes, of
each entry in the list (must be an even number of bytes). If the exact
length of the entry is known, specify the exact length. Otherwise,
specify at least 58 bytes (decimal) if the list is to be used with an
ATTACH, LINK, LOAD, or XCTL macro instruction. The minimum
length for a list is 12 bytes.

NAME This field must contain the member name or alias to be located. The
name must start in the first byte of the name field and be padded to the
right with blanks (if necessary) to fill the 8-byte field.
When the BLDL macro instruction is executed, five fields of the directory entry list are
filled in by the system. The specified length (LL) must be at least 14 to fill in the Z
and C fields. If the LL field is 12, only the NAME, IT, R, and K fields are returned.
The five fields are:

I

IT

Indicates the relative track number where the beginning of the data set
member is located.

R

Indicates the relative block (record) number on the track indicated by
IT.

K

Indicates the concatenation number of the data set. For the first or only
data set, this value is zero.

Z

Indicates where the system found the directory entry:

o

Private library
1
Link library
2
Job, task, or step library
3-255 Job, task, or step library of parent task n, where n = Z-2

C

Indicates the type (member or alias) for the name, the number of note
list fields (TTRNs), and the length of the user data field (indicated in
halfwords). The following describes the meaning of the eight bits:
Bit 0=0
Bit 0=1
Bits 1-2
Bits 3-7

Indicates a member name.
Indicates an alias.
Indicate the number of TTRN fields (maximum of
three) in the user data field.
Indicate the total number of halfwords in the user
data field. If the list entry is to be used with an
ATTACH, LINK, LOAD, or XCTL macro
instruction, the value in bits 3 through 7 is 22
(decimal).

USER DATA The user data field contains the user data from the directory entry.
If the length of the user data field in the BLDL list is equal to or greater than

the user data field of the directory entry, the entire user data field is entered
into the list. Otherwise, the list contains only the user data for which there is
space.

10 OS/VS Data Management Macro Instructions

BLDL

Completion Codes
When the system returns control to the problem program, the low-order byte of
register 15 contains a return code; the three high-order bytes of register 15 are set to
zero. The return codes are:
Hexadecimal Meaning
Code

00

Successful completion.

04

One or more entries in the list could not be filled; the list supplied may
be invalid. If a search is attempted but the entry is not found, the R field
(byte 11) for that entry is set to zero.

08

A permanent input/output error was detected when the system attempted
to search the directory.

Macro Instruction Descriptions 11

BSP

BSP - Backspace a Physical Record (BSAM Access Only)

Magnetic Tape and Direct

The BSP macro instruction causes the current volume to be backspaced one data block
(physical record). All input and output operations must be tested for completion
before the BSP macro instruction is issued. The BSP macro instruction should not be
used if the CNTRL, NOTE, or POINT macro instructions are being used.
Magnetic Tape: A backspace is always made toward the load point.
Direct Access: A BSP macro instruction must not be issued for a data set created by
using track overflow.
With SYSIN or SYSOUT data sets a BSP macro instruction is ignored, but a
completion code is returned.
The BSP macro instruction is written as follows:

BSP

[symbol]

deb address -

I

deb address

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block for the
volume to be backspaced. The data set on the volume to be backspaced must be
opened before issuing the BSP macro instruction.

Completion Codes
When the system returns control to the problem program, the low-order byte of
register 15 contains a return code; the three high-order bytes of register 15 are set to
zero. The return codes are:
Hexadecimal Meaning
Code
00

Successful completion.

04

Unsuccessful completion (includes encountering a tapemark or beginning
of an extent).

08

A backspacing request was ignored on a SYSIN or SYSOUT data set.

Macro Instruction Descriptions 13

BUILD

BUILD QSAM)

Build a Buffer Pool (BDAM, BISAM, BPAM, BSAM, QISAM, and

The BUILD macro instruction is used to construct a buffer pool in an area provided by
the problem program. The buffer pool may be used by more than one data set through
separate data control blocks. Individual buffers are obtained from the buffer pool
using the GETBUF macro instruction, and buffers are returned to the buffer pool using
a FREEBUF macro instruction. Refer to OS/VS Data Management Services Guide
for an explanation of the interaction of the DeB, BUILD, and GETBUF macro
instructions in each access method, as well as the buffer size requirements.
The BUILD macro instruction is written as follows:

BUILD

[symbol]

area address -

1

area address, {number of buffers, buffer length
(0)

J

RX-Type Address, (2-12), or (1)

The area address operand specifies the address of the area to be used as a buffer
pool. The area must start on a fullword boundary. The following illustration shows
the format of the buffer pool:
Area Address

I
Buffer Pool
Control
Block

I--

8 b les

y

Buffer

-L

Buffer

length

~

[

I

L

Buffer

length

Area length
Area length=(Buffer Length) x (Number of Buffers) + 8

number of buffers -

Buffer

j

I

symbol, decimal digit, absexp, or (2-12)

The number-of-buffers operand specifies the number of buffers in the buffer pool up
to a maximum of 255.

Macro Instruction Descriptions 15

buffer length -

symbol, decimal digit, absexp, or (2-12)

The buffer length operand specifies the length, in bytes, of each buffer in the buffer
pool. The value specified for the buffer length must be a fullword multiple;
otherwise the system rounds the value specified to the next higher fullword multiple.
The maximum length that can be specified is 32,760 bytes. For QSAM, the buffer
length must be at least as large as the value specified in the blocksize (DCBBLKSI)
field of the data control block.
(0) -

Coded as shown

The number of buffers and buffer length can be specified in general register O. If
(0) is coded, register 0 must contain the binary values for the number of buffers
and buffer length as shown in the following illustration.
Register

a
Buffer Length

Number of Buffers

Bits:

a

16 OS/VS Data Management Macro Instructions

15

16

31

BUILDRCD

BUILDRCD -

Build a Buffer Pool and a Record Area (QSAM)
The BUILDRCD macro instruction causes a buffer pool and a record area to be
constructed in a user-provided storage area. The macro is used only for
variable-length, spanned records processed in QSAM locate mode. Use of this macro
before the data set is opened, or before the end of the DCBEXIT routine, will
automatically invoke a logical-record interface rather than a segment interface for
variable-length, spanned records.
The standard form of the BUILDRCD macro instruction is written as follows (the list
and execute forms are shown following the description of the standard form):

BUILDRCD

[symbol]

area address, number of buffers, buffer length,
record area address[, record area length]

area address -- A~Type Address or (2-12)

The area address operand specifies the address of the area to be used as a buffer
pool. The area must start on a fullword boundary. The following illustration shows
the format of the buffer pool:
Area

Addre~

~--B-u-ff-er~p-o-o-I--~------------~-------~-'~

I

;_I~_:_t~_OI____~____B_u_ff_e_r___-+-__--' '(

Buffer

L -__

--12 bYte,--1-- ~~:;~ -l

l- ~~:;;h

...-------------------Area Length ------------~
Area Length={Buffer Length) x (Number of Buffers) + 12

Macro Instruction Descriptions 17

The buffer control block contains the address of the record area and a flag that
indicates logical-record interface processing of variable-length, spanned records.
number of buffers -

symbol, decimal digit, absexp, or (2-12)

The number of buffers operand specifies the number of buffers, up to a maximum
of 255, to be in the buffer pool.
buffer length -

symbol, decimal digit, absexp, or (2-12)

The buffer length operand specifies the length, in bytes, of each buffer in the buffer
pool. The value specified for the buffer length must be a fullword multiple;
otherwise, the system rounds the value specified to the next higher fullword
mUltiple. The maximum length that can be specified is 32,760.
record area address -

A-Type Address or (2-12)

The record area address operand specifies the address of the storage area to be
used as a record area. The area must start on a doubleword boundary and have a
length of the maximum logical record (LRECL) plus 32 bytes.
record area length -

symbol, decimal, digit, absexp, or (2-12)

The record area length operand specifies the length of the record area to be used.
The area must be as long as the maximum length logical record plus 32 bytes for
control information. If the record area length operand is omitted, the problem
program must store the record area length in the first four bytes of the record area.
Note: It is the user's responsibility to release the buffer pool and the record area after
a CLOSE macro instruction has been issued for all the data control blocks using the
buffer pool and the record area.

18 OS/VS Data Management Macro Instructions

BUILDRCD -

BUILDRCD -

List Form

List Form
The list form of the BUILDRCD macro instruction is used to construct a program
parameter list. The description of the standard form of the BUILDRCD macro
instruction provides the explanation of the function of each operand. The description
of the standard form also indicates which operands are totally optional and those
required in at least one of the pair of list and execute forms. The format description
below indicates the optional and required operands in the list form only.
The list form of the BUILDRCD macro instruction is written as follows:
[symbol]

BUILDRCD

area address, number of buffers, buffer length,
record area address[,record area length]
,MF=L

area address -

A-Type Address

number of buffers buffer length -

symbol, decimal digit, or absexp

record area address record area length -

MF=L -

symbol, decimal digit, or absexp

A-Type Address
symbol, decimal digit, or absexp

Coded as shown

The MF=L operand specifies that the BUILDRCD macro instruction is used to
create a control program parameter list that will be referenced by an execute form
instruction.
Note: A control program parameter list can be constructed by coding only the MF=L
operand (without the preceding comma); in this case, the list is constructed for the
area address, number of buffers, buffer length, and record area address operands.
If the record area length operand is also required, the operands can be coded as
follows:
[symbol] BUILDRCD

""O,MF = L

The preceding example shows the coding to construct a list containing address
constants with a value of 0 in each constant. The actual values can then be supplied by
the execute form of the BUILDRCD macro instruction.

Macro Instruction Descriptions 19

BUILDRCD -

BUILDRCD -

Execute Form

Execute Form
A remote control program parameter list is referred to, and can be modified by, the
execute form of the BUILDRCD macro instruction. The description of the standard
form of the BUILDRCD macro instruction provides the explanation of the function of
each operand. The description of the standard form also indicates which operands are
totally optional and those required in at least one of the pair of list and execute forms.
The format description below indicates the optional and required operands for the
execute form only.
The execute form of the BUILDRCD macro instruction is written as follows:
[symbol]

BUILDRCD

[area address], [number of buffers],
[buffer length], [record area addressl,
[record area length],
MF=(E, {control program I ist address})

(1)

area address -

RX-Type Address or (2-12)

number of buffers buffer length -

absexp

record area address record area length -

MF=(E,

absexp

RX-Type Address or (2-12)
absexp

I control program list address })
I(I)

}

This operand specifies that the execute form of the BUILDRCD macro instruction
is used, and an existing control program parameter list (created by a list-form
instruction) will be used. The MF= operand is coded as described in the following:
E-

Coded as shown

control program list address -

RX-Type Address, (2-12), or (1)

Macro Instruction Descriptions 21

CHECK

CHECK - Wait for and Test Completion of a Read or Write Operation
(BDAM, BISAM, BPAM, and BSAM)
The CHECK macro instruction causes the active task to be placed in the wait
condition, if necessary, until the associated input or output operation is completed. The
input or output operation is then tested for errors and exceptional conditions. If the
operation is completed successfully, control is returned to the instruction following the
CHECK macro instruction. If the operation is not completed successfully, the error
analysis (SYNAD) routine is given control or, if no error analysis routine is provided,
the task is abnormally terminated. The error analysis routine is discussed in the
SYNAD operand of the DCB macro instruction.
The following conditions are also handled for BP AM and BSAM only:
When Reading: Volume switching is automatic. The end-of-data-set (EODAD)
routine is given control if an input request is made after all the records have been
retrieved.
When Writing: Additional space on the device is obtained when the current space is
filled and more WRITE macro instructions have been issued.
For BPAM and BSAM, a CHECK macro instruction must be issued for each input and
output operation, and must be issued in the same order as the READ or WRITE macro
instructions were issued for the data set. For BDAM or BISAM, either a CHECK or
WAIT macro instruction can be used. However, if both a CHECK and WAIT macro
instruction are used, the CHECK macro instruction must be issued after the WAIT
macro instruction.
If the ASCII translation routines are included when the operating system is generated,

translation can be requested by coding LABEL=(,AL) or (,AUL) in the DD statement,
or it can be requested by coding OPTCD=Q in the DCB macro instruction or DCB
subparameter of the DO statement. If translation is requested, the Check routine
automatically translates BSAM records, as they are read, from ASCII code to EBCDIC
code, provided that the record format is F, FB, 0, DB, or U. Translation occurs as
soon as the Check routine determines that the input buffer is full. For translation to
occur correctly, all input data must be in ASCII code.
The CHECK macro instruction is written as follows:

[symbol]

decb address -

CHECK

decb address [,DSORG=

{~~L}

RX-Type Address, (2-12), or (1)

The decb address operand specifies the address of the data event control block
created by the associated READ or WRITE macro instruction or used by the
associated input or output operation.

Macro Instruction Descriptions 23

DSORG=

{IS}
{ALL}

The DSORG operand specifies the type of data set organization. The following
describes the characters that can be coded.
IS

I

~

Specifies that the program generated is for BISAM use only.

ALL - Specifies that the program generated is for BDAM, BISAM, BPAM, or
BSAM use only.
If the DSORG operand is omitted, the program generated is for BDAM, BP AM, and

BSAM use only.

24 OS/VS Data Management Macro Instructions

CHKPT

CHKPT - Take a Checkpoint for Restart Within a Job Step (BDAM, BISAM,
BPAM, BSAM, QISAM, and QSAM)
The CHKPT macro instruction establishes a checkpoint for the job step. If the step
terminates abnormally, it is automatically restarted from the checkpoint. On restart,
execution resumes with the instruction that follows the CHKPT instruction. If the step
again terminates abnormally (before taking another checkpoint), it is again restarted
. from the checkpoint. When several checkpoints are taken, the step is automatically
restarted from the most recent checkpoint.
Automatic restart from a checkpoint is suppressed if:
1. The job step completion code is not one of a set of codes specified at system
generation.
2. The operator does not authorize the restart.
3. The restart definition parameter of the JOB or EXEC statement specifies no restart
(RD=NR) or no checkpoint (RD=NC or RD=RNC).
4. The CANCEL operand appears in the last CHKPT macro instruction issued before
abnormal termination.
Under any of these conditions, automatic checkpoint restart does not occur. Automatic
step restart (restart from the beginning of the job step) can occur, except under
condition 1 or 2, or when the job step was restarted from a checkpoint prior to
abnormal termination. Automatic step restart is requested' through the restart definition
parameter of the JOB or EXEC statement (RD=R or RD=RNC).
When automatic restart is suppressed or unsuccessful, a deferred restart can be
requested by submitting a new job. .The new job can specify restart from the beginning
of the job step or from any checkpoint for which there is an entry in the checkpoint
data set.
The checkpoint data set contains the information necessary to restart the job step from
a checkpoint. The control program records this information when the CHKPT macro
instruction is issued. The macro refers to the data control block for the data set, which
must be on a magnetic tape or direct-access volume. A tape can have standard labels,
nonstandard labels, or no labels.
If the checkpoint data set is not open when CHKPT is issued, the control program
opens the data set and then closes it after writing the checkpoint entry. If the data set

is physically sequential and is opened by the control program, the checkpoint entry is
written over the previous entry in the data set, unless the DD statement specifies
DISP=MOD. By writing entries alternately into two checkpoint data sets, it is possible
to keep the entries for the two most recent checkpoints while deleting those for earlier
checkpoints.
The data control block for the checkpoint data set must specify:
DSORG=PS or PO, RECFM=U or UT, MACRF=(W), BLKSIZE= nnn, and
DDNAME= any name
where nnn is at least 600 bytes, but not more than 32,760 bytes for magnetic tape and
not more than the track length for direct access. (If the data set is opened by the
Macro Instruction Descriptions 25

control program, blocksize need not be specified; the device-determined maximum
blocksize is assumed if no blocksize is specified.) For seven-track tape, the data control
block must specify TRTCH=C; for direct access, it must specify or imply
KEYLEN=O. Torequest chained scheduling, OPTCD=Cand NCP=2 must be
specified. With direct access, OPTCD= W can be specified to request validity checking
for write operations, and OPTCD= WC can be specified to combine validity checking
and chained scheduling.
The standard form of the CHKPT macro instruction is written as shown below.
Information about the list and execute forms follows this description.
[symbol]

CHKPT

1deb
address f·eheekid address[,eheekid length]] I
CANCEL
,'$'

deb address

is the address of the data control block for the checkpoint data set.
eheekid address

is the address of the checkpoint identification field. The contents of the field are
used when the job step is to be restarted from the checkpoint. They are used by
the control program in requesting operator authorization for automatic restart. You
can use it for requesting deferred restart.
If the next operand specifies the length of the field (checkid length), or if it is

omitted to imply a length of eight bytes, the field must contain the checkpoint
identification when the CHKPT macro instruction is issued. If the next operand is
written as'S', the identification is generated and placed in the field by the control
program. If both operands are omitted, the control program generates the
identification, but does not make it available to the problem program. In each case,
the identification is written in a message to the operator.
The control program writes the checkpoint identification as part of the entry in the
checkpoint data set. For a sequential data set, the identification can be any
combination of up to 16 letters, digits, printable special characters, and blanks. For
a partitioned data set, it must be a valid member name of up to eight letters and
digits, starting with a letter. The identification for each checkpoint should be
unique.
If the control program generates the identification, the identification is eight bytes
in length. It consists of the letter C followed by a seven-digit decimal number.

The number is the total number of checkpoints taken by the job, including the
current checkpoint, checkpoints taken earlier in the job step, and checkpoints taken
by any previous job steps.
eheekid length

is the length in bytes of the checkpoint identification field. The maximum length is
16 bytes if the checkpoint data set is physically sequential, 8 bytes if it is
partitioned. For a partitioned data set, the field can be longer than the actual
identification, .if the unused portion is blank. If the operand is omitted, the implied
length is eight bytes.

26 OS/VS Data Management Macro Instructions

CHKPT
If you code '8' the control program supplies the checkpoint identification. The

implied field length is eight bytes.

CANCEL
cancels the request for automatic restart from the most recent checkpoint. If
another checkpoint is taken before abnormal termination, the job step can be
restarted at that checkpoint.
When control is returned, register 15 contains one of the following return codes:
Hexadecimal
Code

Meaning

00

Successful completion. Code 00 is also returned if the RD parameter
was coded as RD=NC or RD=RNC to totally suppress the function of
CHKPT.

04

Restart has occurred at the checkpoint taken by the CHKPT macro
instruction during the original execution of the job. A request for
another restart of the same checkpoint is normally in effect. If a
deferred restart was performed and RD=NC, NR, or RNC was
specified in the resubmitted deck, a request for another restart is not in
effect.

08

Unsuccessful completion. A checkpoint entry was not written, and a
restart from this checkpoint was not requested. A request for an
automatic restart from a previous checkpoint remains in effect.

One of the following conditions exists:
• The parameters passed by the CHKPT macro instruction are
invalid.

OC

•

The CHKPT macro instruction was executed in an exit routine
other than the end-of-volume exit routine.

•

A STIMER macro instruction has been issued, and the time interval
has not been completed.

•

A WTOR macro instruction has been issued, and the reply has not
been received.

•

The checkpoint data set is on a direct-access volume and is full.
Secondary space allocation was requested and performed.
(Secondary space allocation is performed for a checkpoint data set,
but the allocated space is not used. However, had secondary
allocation not been requested, the job step would have been
abnormally terminated.)

•

The CHKPT macro instruction was issued for a data set on a
graphics device.

Unsuccessful completion. An uncorrectable error occurred in writing
the checkpoint entry or in completing queued access method
input/ output operations that were begun before the CHKPT macro
instruction was issued. A partial, invalid checkpoint entry may have

Macro Instruction Descriptions 27

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

been written. If the entry has a programmer-specified checkid, and
the checkpoint data set is sequential, a different checkid should be
specified the next time CHKPT is executed. If the data set is
partitioned, a different checkid need not be specified. This code is also
returned if the checkpoint routine tries to open the checkpoint data set
and the DD statement for the data set is missing.
10

Successful completion with possible error condition. The task has
control, by means of an explicit or implied use of the ENQ macro
instruction, of a serially reusable resource; if the task terminates
abnormally, it will not have control of the resource when the job step
is restarted. The user's program must, therefore, reissue the ENQ
macro instruction.

14

Checkpoint not taken. End of volume occurred while writing the
checkpoint entry on a tape data set.

When one of the errors indicated by code 08, OC, 10, or 14 occurs, the system prints
an error message on the operator's console. The message indicating code 08 or OC
contains a code that further identifies the error. The operator should report the
message contents to the programmer.
Note: Successful use of the CHKPT macro instruction requires some care in the
selection of checkpoints. For a detailed discussion of checkpoint requirements, refer to
OS / VS Checkpoint/Restart.

28 OS/VS Data Management Macro Instructions

CHKPT -

CHKPT -

List Form

List Form
The list form of the CHKPT instruction is used to construct a control program
parameter list.
The description of the standard form of the CHKPT macro provides the explanation of
the function of each operand. The description of the standard form also indicates
which operands are optional and which are required in at least one of the list and
execute forms. The format description below indicates the optional and required
operands in the list form only. Note that the CANCEL operand, which can be coded
in the standard form, cannot be coded in the list form.
The list form of the CHKPT macro instruction is written as follows:

[symbol]

CHKPT

[deb address ],[ eheekid address] ,[eheekid length]
MF=L
'5'

symbol

is any symbol valid in the assembler language.
address

is any address that may be written in an A-type address constant.
length

is any absolute expression that is valid in the assembler language.
MF=L

indicates the list form of the CHKPT macro instruction.

Macro Instruction Descriptions 29

CHKPT -

CHKPT -

Execute Form

Execute Form
A control program parameter list is referred to, and can be modified by, the execute
form of the CHKPT macro.
The description of the standard form of the CHKPT macro provides the explanation of
the function of each operand. The description of the standard form also indicates
which operands are optional and which are required in at least one of the list and
execute forms. The format description below indicates the optional and required
operands for the execute form only. Note that the CANCEL operand, which can be
coded in the standard form, cannot be coded in the execute form.·
The execute form of the CHKPT macro instruction is written as follows:
CHKPT

[symbol]

[deb address] ,[ eheekid address], [checkid lenglh]
·'5'
, MF=(E , co nlro I program Ii sl address!)
(1)

1

symbol

is any symbol valid in assembler language.
address

is any address that is valid in an RX-type instruction, or one of the general registers
2 through 12, previously loaded with the indicated address. You may designate the
register symbolically or with an absolute expression; always code it in parentheses.
length

is any absolute expression that is valid in assembler language, or one of the general
registers 2 through 12, previously loaded with the indicated value. You may
designate the register symbolically or with an absolute expression; always code it in
parentheses.

MF=(E,

t control
t

program list address D
(1)

J

indicates the execute form of the macro instruction using a control program
parameter list. The address of the control program parameter list can be coded as
described under address, or can be loaded into register I, in which case code
MF=(E,(1

».

Macro Instruction Descriptions 3 1

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

CLOSE

CLOSE - Logically Disconnect a Data Set (BDAM, BISAM, BPAM, BSAM,
QISAM, and QSAM)
The CLOSE macro instruction causes output data set labels to be created, and volumes
to be positioned as specified by the user. The fields of the data control block are
restored to the condition that existed before the OPEN macro instruction was issued,
and the data set is disconnected from the processing program. Final volume positioning
for the current volume can be specified to override the positioning implied by the DD
control statement DISP parameter. Any number of deb address operands and
associated options may be specified in the CLOSE macro instruction.
Associated data sets for a 3525 card punch can be closed in any sequence, but if one
data set is closed, I/O operations cannot be initiated for any of its associated data sets.
Additional information about closing associated data sets is contained in OS / VS Data
Management Services Guide.
A FREEPOOL macro instruction should normally follow a CLOSE macro instruction
to regain the buffer pool storage space and to allow a new buffer pool to be built if the
DCB is reopened with different record size attributes.
A special operand, TYPE = T, is provided for processing with BSAM.
The standard form of the CLOSE macro instruction is written as follows (the list and
execute forms are shown following the description of the standard form):

[ symbol]

deb address -

CLOSE

(deb address, [option] , ... )

L, TYPE=T]

A-Type Address or (2-12)

The deb address operand specifies the address of the data control block for the
opened data set that is to be closed.
option
One of four options can be specified for a data set on magnetic tape or a
direct-access device only. These options indicate the volume positioning that is to
occur when the data set is closed. The option operand is ignored for ISAM data
sets. The options are:

REREAD -

Specifies that the current volume is to be positioned to reprocess the
data set.

LEAVE

Specifies that the current volume is to be positioned to the logical
end of the data set.

REWIND -

Specifies that the current volume is to be positioned at the load
point, regardless of the direction of processing. REWIND cannot be
specified when TYPE =T is specified.

Macro Instruction Descriptions 33

Page of GC26-3793-1
Revised December 15, 1972
By TNL_ GN26-0748

DISP

Specifies that the current volume is to be positioned according to
the position implied by the DISP parameter of the corresponding
DD statement, as follows:
DISP Parameter

Action

PASS

Forward space to the end of data set on
the current volume.

DELETE

Rewind the current volume.

KEEP, CATLG, or
UNCATLG

Rewind and unload the current volume.

When the option operand is omitted, the following volume positioning occurs:
•

If TYPE = T is coded, LEAVE is assumed.

•

If TYPE=T is not coded, DISP is assumed.

TYPE=T -

Coded as shown

You can code CLOSE (TYPE=T) and temporarily close sequential data sets on
magnetic tape and direct-access volumes processed with BSAM. When you use
TYPE=T, the DCB used to process the data set maintains its open status, and you
don't have to issue another OPEN macro instruction to continue processing the
same data set. This option cannot be used in a SYNAD routine.
A request to temporarily close a data set causes the system control program to
process labels, modify some of the fields in the system control blocks for that data
set, and reposition the volume (or current volume in the case of multivolume data
sets) in much the same way that the normal CLOSE macro does. When you code
TYPE = T, you can specify that the volume either be positioned at the end of data
(the LEAVE option) or be repositioned at the beginning of data (the REREAD
option). Magnetic-tape volumes are repositioned either immediately before the first
data record or immediately after the last data record; the presence of tape labels has
no effect on repositioning. The following figure, which assumes a sample data set
containing 1000 records, illustrates the relationship between each positioning option
and the point at which you resume processing the data set after issuing the
temporary close.

34 OS/VS Data Management Macro Instructions

CLOSE

Beg i n process i ng
tape data set
(open for read

Begin
processing

d7

bee kw ard) " ' "
c

I

J

J

Record

Record

Record

I

2

3

Record

c
I

(

999

Record
1000

I

If you issue CLOSE (TYPE=T)
and specify

After temporary close, you
will resume processing

LEAVE

Immediately after record 1000

LEAVE (with tape data set open
for read backward)

Immediatel y before record I

REREAD

Immediately before record I

REREAD (with tape data set open
for read backward)

Immediately after record 1000

If you code the release (RLSE) operand on the DO statement for the data set, it is
ignored by temporary close, but any unused space will be released when you finally
issue the normal CLQSE macro instruction.
It is possible to use BSAM to process a data set that is not physical-sequential; if
you use CLOSE (TYPE=T) for them, the following restrictions apply;

The DCB for the data set you are processing must specify OSORG=PS or
DSORG=PSU.
•

The DCB for the partitioned data set you are processing must be open to the
entire partitioned data set, not just a member.

•

If you open the data set for output and issue CLOSE (TYPE=T), the volume
will be repositioned only if the identifier (format-I) OSCB for your data set
specifies DSORG=PS or DSORG=PSU. (This restriction prohibits the use of
temporary close following or during the building of a BOAM data set.)

•

If you open the data set for input and issue CLOSE (TYPE= T) with the
LEAVE option, the volume will be repositioned only if the identifier
(format-I) DSCB for your data set specifies DSORG=PS or OSORG=PO.

Note: When a data control block is shared among multiple tasks, the task that opened
the data set must also close it; however, a- subtask of the task that opened the DCB can
issue the CLOSE macro instruction with the TYPE = T option.

Macro Instruction Descriptions 35

CLOSE -

CLOSE -

List Form

List Form
The list form of the CLOSE macro instruction is used to construct a data management
parameter list. Any number of operands (data control block addresses and associated
options) can be specified.
The CLOSE macro instruction can be used with a variable-length parameter list. The
length of a list generated by a list-form instruction must be equal to the maximum
length required by an execute-form instruction that refers to the same list. A
maximum length list can be constructed by one of two methods:
Code a list-form instruction with the maximum number of parameters that are
required by an execute-form instruction that refers to the list.
Code a maximum length list by using commas in a list-form instruction to acquire a
list of the appropriate size. For example, coding ("""",) would provide a list of five
fullwords (five dcb addresses and five options).
A parameter list constructed by a CLOSE macro instruction, list form, can be referred
to by either an OPEN or CLOSE execute-form instruction.
The description of the standard form of the CLOSE macro instruction provides the
explanation of the function of each operand. The description of the standard form also
indicates which operands are completely optional and those required in at least one of
the pair of list and execute forms. The format description below indicates the optional
and required operands in the list form only.
The list form of the CLOSE macro instruction is written as follows:

~ymbolJ

CLOSE

deb address option -

([deb address], [option], ... ) [, TYPE=T] ,MF=L

A-Type Address

Same as standard form

TYPE=T -

Coded as shown

The TYPE=T operand can be coded in the list-form instruction to allow the
specified option to be checked for validity when the program is assembled.
MF=L -

Coded as shown

The MF=L operand specifies that the CLOSE macro instruction is used to create a
data management parameter list that will be referred to by an execute-form
instruction.

Macro Instruction Descriptions 37

CLOSE -

CLOSE -

Execute Form

Execute Form
A remote data management parameter list is used in and can be modified by the
execute form of the CLOSE macro instruction. The parameter list can be generated by
the list form of either an OPEN macro instruction or a CLOSE macro instruction.
The description of the standard form of the CLOSE macro instruction provides the
explanation of the function of each operand. The description of the standard form also
indicates which operands are totally optional and those required in at least one of the
pair of list and execute forms. The format description below indicates the optional and
required operands in the execute form only.
The execute form of the CLOSE macro instruction is written as follows:

CLOSE

[symbol]

[( [deb address], [option], ... )]

r, TYPE=T]

,MF=(E, { data management Iist address} )
(1 )

deb address option -

Same as standard form

TYPE=T MF=(E,

RX-Type Address or (2-12)

Same as standard form
{data management list address })
{

(1)

}

This operand specifies that the execute form of the CLOSE macro instruction is
being used, and an existing data management parameter list (created by a list-form
instruction) will be used. The MF= operand is coded as described in the following:
E-

Coded as shown

data management list address -

RX-Type Address, (2-12), or (1)

Macro Instruction Descriptions 39

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

CNTRL

CNTRL -

Control Online Input/Output Device (BSAM and QSAM)
The CNTRL macro instruction is used to control magnetic tape drives (BSAM only)

I and to control online card readers, 3525 card punches (read and print features), and
printers (BSAM and QSAM). The MACRF operand of the DCB macro instruction
must specify a C. The CNTRL macro instruction is ignored for SYSIN or SYSOUT
data sets. For BSAM, all input and output operations must be tested for completion
before the CNTRL macro instruction is issued. The control facilities available are as
follows:
Card Reader: Provides stacker selection.
QSAM - The CNTRL macro instruction is issued whenever it is necessary to read
a new card. For unblocked records, a CNTRL macro instruction should be issued
after every input request except the last. For blocked records, a CNTRL macro
instruction is issued after the last logical record on each card is retrieved, except for
the last input request. The move mode of the GET macro instruction must be used,
and the number of buffers (BUFNO field of the DCB) must be one.
BSAM - The CNTRL macro instruction should be issued after every input
request. If, however, the device is allocated to SYSIN, the CNTRL macro
instruction does not need to be issued after the request because the CLOSE macro
instruction places the last card in the same stacker as the preceding card.
Printer: Provides line spacing or a skip to a specific carriage control channel. A
CNTRL macro instruction cannot be used if carriage control characters are
provided in the record. If the printer contains the universal character set feature,
data checks should be blocked (OPTCD=U should not appear in the data control
block).
Magnetic Tape: Provides method of forward spacing and backspacing (BSAM only).
If OPTCD=H is indicated in the data control block, the CNTRL macro instruction

can be used to perform record positioning on DOS tapes that contain embedded
checkpoint records. Embedded checkpoint records encountered during the record
positioning are bypassed and are not counted as blocks spaced over. OPTCD=H
must be specified in a job control language DD statement. The CNTRL macro
instruction cannot be used to backspace DOS 7-track tapes that are written in data
convert mode that contain embedded checkpoint records (BSAM).
3525 Printing: Provides line spacing or a skip to a specific printing line on the card.
The card contains 25 printing lines; the odd numbered lines 1 through 23
correspond to the printer skip channels 1 through 12 (see the SK operand). For
additional information about 3525 printing operations, refer to OS jVS Data
Management Services Guide.

Macro Instruction Descriptions 41

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

The CNTRL macro instruction is written as follows:

[symbol]

CNTRL

dcb address,

55,

{~}

sp,G}
, SK,

{;;OU9h }

B5M
F5M
B5R [, number of blocks]
F5R [, number of blocks]
-'

deb address

The deb address operand specifies the address of the data control block for the data
set opened for the online device.
SS,

HJ
12J
The SS operand is coded as shown to indicate that the control function requested
is stacker selection on a card reader; either 1 or 2 must be coded to indicate
which stacker is to be selected.

SP,

HJ
12J
13J
The SP operand is coded as shown to indicate that the control function requested
is printer line spacing or 3525 card punch line spacing; either 1, 2, or 3 must be
coded to indicate the number of spaces for each print line.

HJ
SK, Ithrough}

H2J
The SK operand is coded as shown to indicate that the control function requested is
a skip operation on the printer or 3525 card punch, print feature; a number (1
through 12) must be coded to indicate the channel or print line to which the skip is
to be taken.
BSM -

Coded as shown

The BSM operand indicates that the control function requested is to backspace the
magnetic tape past a tapemark, then forward space over the tapemark. When this
operand is specified, the DCBBLKCT field in the data control block is set to zero.

42 OS/VS Data Management Macro Instructions

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

CNTRL
FSM -

Coded as shown

The FSM operand indicates that the control function requested is to forward space
the magnetic tape over a tapemark, then backspace past the tapemark. When this
operand is specified, the DCBBLKCT field in the data control block is set to zero.
BSR -

Coded as shown

The BSR operand indicates that the control function requested is to backspace the
magnetic tape the number of blocks indicated in the number-oj-blocks operand.
FSR -

Coded as shown

The FSR operand indicates that the control function requested is to forward space
the magnetic tape the number of blocks indicated in the number-oj-blocks operand.

number oj blocks -

symbol, decimal digit, absexp, or (2-12)

The number-oj-blocks operand specifies the number of blocks to backspace (see
BSR operand) or forward space (see FSR operand) the magnetic tape. The
maximum value that can be specified is 32,767. If the number-oj-blocks operand is

omitted, one is assumed.
If the forward space or backspace operation is not completed successfully, control is

passed to the error analysis (SYNAD) routine; if no SYNAD routine is designated, the
task is abnormally terminated. Register contents, when control is passed to the error
analysis routine, are shown in Appendix A. If a tapemark is encountered for BSR or
FSR, control is returned to the processing program, and register 15 contains a count of
the uncompleted forward spaces or backspaces. If the operation is completed normally,
register 15 contains the value zero.

Macro Instruction Descriptions 43

DCB-BDAM

DCB -

Construct a Data Control Block (BDAM)
The data control block for a basic direct access method (BDAM) data set is
constructed during assembly of the problem program. The DCB macro instruction
must not be coded within the first 16 bytes of a control section (CSECT). The
DSORG and MACRF operands must be coded in the DCB macro instruction, but the
other operands can be supplied from other sources. Each of the BDAM DCB operand
descriptions contains a heading, "Source." The information under this heading describes
the sources from which an operand can be supplied to the data control block.
Before a DCB macro instruction for a BDAM data set is coded, the following
characteristics of direct data sets should be considered.
•

The problem program must synchronize I/O operations by issuing a CHECK or
WAIT macro instruction to test for completion of read and write operations.

•

A BDAM data set is created using the basic sequential access method (BSAM). A
special operand (MACRF=WL) specifies that BSAM is being used to create a
BDAM data set. Operand descriptions for the BDAM DCB macro instruction
include information about both creating and processing a BDAM data set.

•

Although a BDAM data set can contain blocked records, the problem program must
perform all blocking and deblocking of records. BDAM provides only the capability
to read or write a data block, but the data block can contain mUltiple logical records
assembled by the problem program.

•

When a BDAM data set is being created, buffers can be acquired automatically, but
buffer control must be provided by the problem program. The problem program
must place data in the output buffer before issuing a WRITE macro instruction to
write the data block.

•

When a BDAM data set is being processed, the problem program can control all
buffering, or dynamic buffering can be specified in the DCB macro instruction and
subsequently requested in a READ macro instruction.

•

The actual organization of a direct data set is determined by the programmer to
meet the needs of the application. The data set can be processed by using one of
the following addressing methods:

•

Actual device addresses (in the form MBBCCHHR).

•

Relative track addresses (in the form TTR). These addresses specify a track (and a
record on the track) of the direct-access device relative to the beginning of the data
set.

•

Relative block addresses can be used with fixed-length records. These addresses
specify a data block relative to the beginning of the data set.

For additional information about the characteristics of BDAM data sets, refer to
OS/VS Data Management Services Guide.

Macro Instruction Descriptions 45

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

The following describes the DeB operands that can be specified for creating and
processing a BDAM data set:
{F}

BFALN= {D}

The BFALN operand specifies the boundary alignment for each buffer in the buffer
pool. The BFALN operand can be specified when (I) BSAM is being used to
create a BDAM data set and buffers are acquired automatically, (2) when an
existing BDAM data set is being processed and dynamic buffering is requested, or
(3) when the GETPOOL macro instruction is used to construct the buffer pool. If
the BFALN operand is omitted, the system provides doubleword alignment for each
buffer. The following describes the characters that can be specified:
F

Specifies that each buffer is aligned on a fullword boundary that is not
also a doubleword boundary.

D

Specifies that each buffer is aligned on a doubleword boundary.

If the BUILD macro instruction is used to construct the buffer pool or if the

problem program controls all buffering, the problem program must provide the area
for the buffers and control buffer alignment.
Source: The BFALN operand can be supplied in the DeB macro instruction, in the
DeB subparameter of a DD statement, or by the problem program before completion
of the data control block exit routine. If both the BFALN and BFTEK operands are
specified, they must be supplied from the same source.
BFTEK=R

The BFTEK operand specifies that the data set is being created for or contains
variable-length spanned records. The BFTEK operand can be coded only when the
record format is specified as RECFM= VS.
When variable-length spanned records are written, the data length can exceed the
total capacity of a single track on the direct-access device being used, or it can
exceed the remaining capacity on a given track. The system divides the data block
into segments (if necessary), writes the first segment on a track, and writes the
remaining segment(s} on the following track(s}.
When a variable-length spanned record is read, the system reads each segment and
assembles a complete data block in the buffer designated in the area address
operand of a READ macro instruction.
Note: Variable-length spanned records can also be read using BSAM. When BSAM is
used to read a BDAM variable-length spanned record, the record is read one segment
at a time, and the problem program must assemble the segments into a complete data
block. This operation is described in the section for the BSAM DeB macro instruction.
Source: The BFTEK operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before completion
of the data control block exit routine. If both the BFTEK and BFALN operands are
specified, they must be supplied from the same source.
BLKSIZE= absexp (maximum value is 32,760)

The BLKSIZE operand specifies the length, in bytes, of each data block for
fixed-length records, or it specifies the maximum length, in bytes, of each data

46 OS/VS Data Management Macro Instructions

DCB-BDAM
block for variable-length or undefined-length records. If keys are used, the length
of the key is not included in the value specified for the BLKSIZE operand.
The actual value that can be specified in the BLKSIZE ope~and depends on the
record format and the type of direct-access device being used. If the
track-overflow feature is being used or if variable-length spanned records are being
used, the value specified in the BLKSIZE operand can be up to the maximum. For
all other record formats(F, V, VBS, and U), the maximum value that can be
specified in the BLKSIZE operand is determined by the track capacity of a single
track on the direct-access device being used. Device capacity for direct-access
devices is described in Appendix C of this publication. For additional information
about device capacity and space allocation, refer to OS/VS Data Management
Services Guide.
Source: The BLKSIZE operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a'DD statement, by the problem program before completion of
the data control block exit routine, or by the data set label of an existing data set.
BUFCB= relexp
The BUFCB operand specifies the address of the buffer pool control block when
the buffer pool is constructed by a BUILD macro instruction.
If the buffer pool is constructed automatically, dynamically, or by a GETPOOL

macro instruction, the system places the address of the buffer pool control block
into the data control block, and the BUFCB operand is not required. The BUFCB
operand is not required if the problem program controls all buffering.
Source: The BUFCB operand can be supplied in the DCB macro instruction or by the
problem program before completion of the data control block exit routine.
BUFL= absexp (maximum value is 32,760)
The BUFL operand specifies the length, in bytes, of each buffer in the buffer pool
when the buffers are acquired automatically (create BDAM) or dynamically
(existing BDAM).
When buffers are acquired automatically (create BDAM), the BUFL operand is
optional; if specified, the value must be at least as large as the sum of the values
specified for the KEYLEN and BLKSIZE operands. If the BUFL operand is
omitted,the system constructs buffers with a length equal to the sum of the values
specified in the KEYLEN and BLKSIZE operands.
The BUFL operand must be specified when an existing BDAM data set is being
processed and dynamic buffering is requested. Its value must be at least as large as
the value specified for the BLKSIZE operand when the READ or WRITE macro
instruction specifies a key address, or the value specified in the BUFL operand must
be at least as large as the sum of the values specified in the KEYLEN and BLKSIZE
operands if the READ and WRITE macro instructions specify'S' for the key
address.
The BUFL operand can be omitted if the buffer pool·is constructed by a BUILD or
GETPOOL macro instruction or if the problem program controls all buffering.
Source: The BUFL operand can be supplied in the DCB macro instruction, in the DCB
subparameter of a DD statement, or by the problem program before completion of the
data control block exit routine.

Macro Instruction Descriptions 47

BUFNO= absexp (maximum value is 255)
The BUFNO operand specifies the number of buffers to be constructed by a
BUILD macro instruction, or it specifies the number of buffers and/or segment
work areas to be acquired by the system.
If the buffer pool is constructed by a BUILD macro instruction or if buffers are

acquired automatically when BSAM is used to create a BDAM data set, the number
of buffers must be specified in the BUFNO operand.
If dynamic buffering is requested when an existing BDAM data set is being

processed, the BUFNO operand is optional; if omitted, the system acquires two
buffers.
If variable-length spanned records are being processed and dynamic buffering is
requested, the system also acquires a segment work area for each buffer. If

dyanmic buffering is not requested, the system acquires the number of segment
work areas specified in the BUFNO operand. If the BUFNO operand is omitted
when variable-length spanned records are being processed and dynamic buffering is
not requested, the system acquires two segment work areas.
If the buffer pool is constructed by a GETPOOL macro instruction or if the

problem program controls all buffering, the BUFNO operand can be omitted, unless
it is required to acquire additional segment work areas· for variable-length spanned
records.
Source: The BUFNO operand can be supplied in the DeB macro instruction, in the
DeB subparameter of a DD statement, or by the problem program before completion
of the data control block exit routine.
DDNAME= symbol
The DDNAME operand specifies the name used to identify the job control language
data definition (DD) statement that defines the data set being created or processed.
Source: The DDNAME operand can be supplied in the DeB macro instruction or by
the problem program before an OPEN macro instruction is issued to open the data set.
IDA}
DSORG= IDAU}
The DSORG operand specifies the data set organization and if the data set contains
any location-dependent information that would make it unmovable. For example,
if actual device addresses are used to process a BDAM data set, the data set may be
unmovable. The following describes the characters that can be specified:
DA

Specifies a direct organization data set.

DAU -

Specifies a direct organization data set that contains location-dependent
information.

When a BDAM data set is created, the basic sequential access method (BSAM) is
used. The DSORG operand in the DeB macro instruction must be coded as
DSORG=PS or PSU when the data set is created, and the DeB subparameter in
the corresponding DD statement must be coded as DSORG=DA or DAU. This
creates a data set with a data set label identifying it as a BDAM data set.
Source: The DSORG operand must be specified in the DeB macro instruction. See
the above comment about creating a BDAM data set.

48 OS/VS Data Management Macro Instructions

DCB-BDAM
EXLST = relexp
The EXLST operand specifies the address of the problem program exit list. The
EXLST operand must be specified if the problem program processes user labels
during the Open or Close routine, if the data control block exit routine is used for
additional processing, or if the DCB ABEND exit is used for ABEND condition
analysis.
Refer to Appendix 0 of this publication for the format and requirements of exit list
processing. For additional information about exit list processing, refer to OS / VS
Data Management Services Guide.
Source: The EXLST operand can be supplied in the DCB macro instruction or by the
problem program before the exit is needed.
KEYLEN= absexp (maximum value is 255)
The KEYLEN operand specifies the length, in bytes, of all keys used in the data set.
When keys are used, a key is associated with each data block in the data set. If
the key length is not supplied by any source, no input or output requests that
require a key can be specified in a READ or WRITE macro instruction.
Source: The KEYLEN operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DO statement, by the problem program before the completion
of the data control block exit routine, or by an existing data set label.
LIMCT= absexp
The LIMCT operand specifies the number of blocks or tracks to be searched when
the extended search option (OPTCD=E) is requested.
When the extended search option is requested and relative bloc~ addressing is used,
the records must be fixed-length record format. The system converts the number
of blocks specified in the LIMCT operand into the number of tracks required to
contain the blocks, then proceeds in the manner described below for relative track
addressing.
When the extended search option is requested and relative track addressing is used
(or the number of blocks has been converted to the number of tracks), the system
searches for the block specified in a READ or WRITE macro instruction (type DK),
or it searches for available space in which to add a block (WRITE macro
instruction, type DA). The search is as follows:
•

The search begins at the track specified by the block address operand of a
READ or WRITE macro instruction.

•

The search continues until the search is satisfied, the number of tracks
specified in the LIMCT operand have been searched, or the entire data set has
been searched. If the search has not been satisfied when the last track of the
data set is reached, the system continues the search by starting at the first track
of the data set. This operation allows the number specified in the LIMCT
operand to exceed the size of the data set, causing the entire data set to be
searched.

Macro Instruction Descriptions 49

The problem program can change the DCBLIMCT field in the data control block at
any time, but if the extended search option is used, the DCBLIMCT field must not
be zero when a READ or WRITE macro instruction is issued.
If the extended search option is not requested, the system ignores the LIMCT

operand, and the search for a data block is limited to a single track.
Source: The LIMCT operand can be supplied in the DCB macro instruction, the DCB
subparameter of a DD statement, or by the problem program before the count is
required by a READ or WRITE macro instruction.
MACRF= {(R {K

U
{KI
{(W {A
{K

U

}
}
}

IX I
IS I
IXS I

IC))

} IC))
}
}

{AK }
{AI }
{KI }
{AKI}
{(R {K

U
{KI

}
}
}

IX I
IS I
IXS I

ICI

,W

{A
{K

U

}
}
}

IC)) }

{AK }
{AI }
{KI }
{AKI}
The MACRF operand specifies the type of macro instructions (READ, WRITE,
CHECK, and WAIT) used when the data set is processed. The MACRF operand
also specifies the type of search argument and BDAM functions used with the data
set. When BSAM is used to create a BDAM data set, the BSAM operand
MACRF= WL is specified. This special operand invokes the BSAM routine that can
create a BDAM data set. The following describes the characters that can be
specified:
A

Specifies that data blocks are to be added to the data set.

C

Specifies that CHECK macro instructions are used to test for completion
or read and write operations. If C is not specified, WAIT macro
instructions must be used to test for completion of read and write
operations.

I

Specifies that the search argument is to be the block identification portion
of the data block. If relative addressing is used, the system converts the
relative address to a full device address (MBBCCHHR) before the
search.

K

Specifies that the search argument is to be the key portion of the data
block. The location of the key to be used as a search argument is
specified in a READ or WRITE macro instruction.

50 OS/VS Data Management Macro Instructions

DCB-BDAM
R

Specifies that READ macro instructions are used. READ macro
instructions can be issued when the data set is opened for INPUT,
OUTPUT, or UPDAT.

S

Specifies that dynamic buffering is requested by specifying'S' in the area
address operand of a READ or WRITE macro instruction.

W

-

X

Specifies that WRITE macro instructions are used. WRITE macro
instructions can be issued only when the data set is opened for OUTPUT
OR UPDAT.
Specifies that READ macro instructions request exclusive control of a
data block. When exclusive control is requested, the data block must be
released by a subsequent WRITE or RELEX macro instruction.

Source: The MACRF operand must be supplied in the DCB macro instruction.
OPTCD= [R)(E)[F)(W]
(A]

The OPTCD operand specifies the optional services that are to be used with the
BDAM data set. These options are related to the type of addressing used, the
extended search option, block position feedback, and write-validity checking. The
following describes the characters that can be specified; the characters can be
specified in any order and no commas are required between characters.
A

Specifies that actual device addresses (MBBCCHHR) are provided to the
system when READ or WRITE macro instructions are issued.

E

Specifies that the extended search option is used to locate data blocks or
available space into which a data block can be added. When the
extended search option is specified, the number of blocks or tracks to be
searched must be specified in the LIMCT operand. The extended search
option is ignored if actual addressing (OPTCD=A) is also specified.

F

Specifies that block position feedback requested by a READ or WRITE
macro instruction is to be in the same form that was originally presented
to the system in the READ or WRITE macro instruction. If the F
operand is omitted, the system provides feedback, when requested, in the
form of an 8-byte actual device address.

R

Specifies that relative block addresses (in the form of a 3-byte binary
number) are provided to the system when a READ or WRITE macro
instruction is issued.

W

-

Specifies that the system performs a validity check for each record
written.

Note: If OPTCD=A and R are both omitted, the system requires that READ and
WRITE macro instructions provide 3-byte relative track addresses (in the form TTR).
Source: The OPTCD operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before an OPEN
macro instruction is issued to open the data set.

Macro Instruction Descriptions 51

RECFM= {V
{V (S)

J
J

(BS)
{F IT)

}

The RECFM operand specifies the format and characteristics of the records in the
data set. The following describes the characters that can be coded; if the optional
characters are. coded, they must be coded in the order shown above.
B

Specifies that the data set contains blocked records. The record format
RECFM= VBS is the only combination in which B can be specified.
RECFM= VBS does not cause the system to process spanned records; the
problem program must block and segment the records. RECFM= VBS is
treated as a variable-length record by BDAM.

F

Specifies that the data set contains fixed-length records.

S

Specifies that the data set contains variable-length spanned records when
it is coded as RECFM= VS. When RECFM= VBS is coded, the records
are treated as variable-length records, and the problem program must
block and segment the re.cords.

T

Specifies that the tr~ck-overflow feature is used with the data set. The
track-overflow feature allows a record to be partially written on one
track and the remainder is written on the following track (if required).

V

Specifies that the data set contains undefined-length records.

V

Specifies that the data set contains variable-length records.

Source: The RECFM operand can be supplied in the DCB macro instruction, in the
DeB subparameter of a DD statement, by the problem program before completion of
the data control block exit routine, or by the data set label of an existing data set.
SYNAD= relexp

The SYNAD operand specifies the address of the error analysis routine to be given
control when an uncorrectable input/output error occurs. The contents of the
registers when the error analysis routine is given control are described in Appendix
A of this publication.
The error analysis routine must not use the save area pointed to by register 13
because this area is used by the system. The system does not restore registers when
it regains control from the error analysis routine .. The error analysis routine can
issue a RETURN macro instruction which uses the address in register 14 to return
control to the system. When control is returned in this manner, the system returns
control to the problem program and proceeds as though no error had been
encountered. When a BDAM data set is being created, a return from the error
analysis routine to the system causes abnormal termination of the task.
If the SYNAD operand is omitted, the task is abnormally terminated when an

uncorrectable input/output error occurs.
Source: The SYNAD operand can be supplied in the DCB macro instruction or by the
problem program. The problem program can also change the error routine address at
any time.

52 OS/VS Data Management Macro Instructions

DCB-BISAM

DCB -

Construct a Data Control Block (BISAM)
The data control block for the basic indexed sequential access method (BISAM) is
constructed during assembly of the problem program. The DCB macro instruction
must not be coded within the first 16 bytes of a control section (CSECT). The
DSORG and MACRF operands must be coded in the DCB macro instruction, but the
other DCB operands can be supplied from other sources. Each BISAM DCB operand
description contains a heading, "Source." The information under this heading describes
the sources from which the operand can be supplied to the data control block.
Before a DCB macro instruction for a BISAM data set is coded, the following
characteristics of BISAM data sets should be considered:
•

BISAM cannot be used to create an indexed sequential data set.

•

BISAM performs the functions of direct retrieval of a logical record by key, direct
update-in-place for a block of records, direct insertion of a new record in its
correct key sequence.

•

Buffering can be controlled by the problem program, or dynamic buffering can be
specified in the DCB macro instruction and subsequently requested in a READ
macro instruction.

•

The problem program must synchronize I/O operations by issuing a CHECK or
WAIT macro instruction to test for completion of Read and Write operations.

•

Additional DCB operands provide the capability of reducing input/output
operations by defining work areas to contain the highest level master index and the
records being processed.

For additional information about the characteristics of BISAM processing, refer to
OS/VS Data Management Services Guide.
The following describes the DCB operands that can be supplied when the basic indexed
sequential access method is used.
{F}

BFALN= {D}
The BFALN operand specifies the boundary alignment for each buffer in the buffer
pool when the buffer pool is acquired for use with dynamic buffering or when the
buffer pool is constructed by a GETPOOL macro instruction. If the BFALN
operand is omitted, the system provides doubleword alignment for each buffer. The
following describes the characters that can be specified.
F

Specifies that each buffer is on a fullword boundary that is not also a
double word boundary.

D

Specifies that each buffer is on a doubleword boundary.

If the BUILD macro instruction is used to construct the buffer pool or the problem
program controls all buffering, the problem program must provide an area for the
buffers and control buffer alignment.

Macro Instruction Descriptions 53

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

I

Source: The BFALN operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before completion
of the data control block exit routine.
BUFCB= relexp
The BUFCB operand specifies the address of the buffer pool control block when
the buffer pool is constructed by a BUILD macro instruction.
If dynamic buffering is requested or the buffer pool is constructed by a GETPOOL

macro instruction, the system places the address of the buffer pool control block
into the data control block, and the BUFCB operand must be omitted. The BUFCB
operand must be omitted if the problem program controls all buffering.
Source: The BUFCB operand can be supplied in the DCB macro instruction or by the
problem program before completion of the data control block exit routine.
BUFL= absexp (maximum value is 32,760)
The BUFL operand specifies the length of each buffer to be constructed by a
BUILD or GETPOOL macro instruction. When the data set is opened, the system
computes the minimum length required and verifies that the length in the buffer
pool control block is equal to or greater than the minimum required. The system
then inserts the computed length into the BUFL field of the data control block.
If dynamic buffering is requested, the system computes the buffer length required,

and the BUFL operand is not required.
If the problem program controls all buffering, the BUFL operand is not required.

However, an ISAM data set requires additional buffer space for system use. For a
description of the buffer length required for various ISAM operations, refer to
OS/VS Data Management Services Guide.
Source: The BUFL operand can be supplied in the DCB macro instruction, in the DCB
subparameter of a DD statement, or by the problem program before completion of the
data control block exit routine.
BUFNO= absexp (maximum value is 255)
The BUFNO operand specifies the number of buffers requested for use with
dynamic buffering, or it specifies the number of buffers to be constructed by a
BUILD macro instruction. If dynamic buffering is requested but the BUFNO
operand is omitted, the system automatically acquires two buffers for use with
dynamic buffering.
If the GETPOOL macro instruction is used to construct the buffer pool, the

BUFNO operand is not required.
Source: The BUFNO operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before completion
of the data control block exit routine.
DDNAME= symbol
The DDNAME operand specifies the name used to identify the job control language
data definition statement that defines the ISAM data set to be processed.

54 OS/VS Data Management Macro Instructions

DCB -

BISAM

Source: The DDNAME operand can be supplied in the DCB macro instruction or by
the problem program before an OPEN macro instruction is issued to open the data set.
DSORG=IS
The DSORG operand specifies the indexed sequential organization of the data set.
IS is the only combination of characters that can be coded for BISAM.
Source: The DSORG operand must be coded in the DCB macro instruction.
EXLST= relexp
The EXLST operand specifies the address of the problem program exit list. The
EXLST operand is required if the problem program uses the data control block exit
routine for additional processing or if the DCB ABEND exit is used for ABEND
condition analysis.
Refer to Appendix D of this publication for the format and requirements for exit list
processing. For additional information about exit list processing, refer to OS / VS
Data Management Services Guide.
Source: The EXLST operand can be supplied in the DCB macro instruction or by the
problem program before the associated exit is required.
{(R
MACRF=

[S) [CD

{U}
{(W {A} [CD
{UA}
{(R

LS) [C),W {U} [CD}
[U)
{A}
[US)
{UA}

TheMACRF operand specifies the type of macro instructions (READ, WRITE,
CHECK, WAIT, and FREEDBUF) and type of processing (add records, dynamic
buffering, and update records) to be used with the data set being processed. The
operand can be coded in any of the combinations shown above; the following
describes the characters that can be coded.
A

Specifies that new records are to be added to the data set. This character
must be coded if WRITE KN macro instructions are used with the data
set.

C

Specifies that the CHECK macro instruction is used to test I/O
operations for completion. If C is not coded, WAIT macro instructions
must be used.

R

Specifies the READ macro instructions are used. When R is coded, the
routines that allow the FREEDBUF macro instruction to be used are also
included.

S

Specifies that dynamic buffering is requested in READ macro
instructions.

U

Specifies that records in the data set will be updated in place. If U is
coded in combination with R, it must also be coded in combination with
W. For example, MACRF=(RU,WU).

W

-

Specifies that WRITE macro instructions are used.
Macro Instruction Descriptions 55

Source: The MACRF operand must be coded in the DCB macro instruction.
MSHI = relexp
The MSHI operand specifies the address of the storage area used to contain the
highest level master index for the data set. The system uses this area to reduce the
search time required to find a given record in the data set. The MSHI operand is
coded only when the SMSI operand is coded.
Source: The MSHI operand can be supplied in the DCB macro instruction or by the
problem program before completion of the data control block exit routine.
MSW A= relexp
The MSW A operand specifies the address of the storage work area to be used by
the system when new records are being added to the data set. This operand is
optional, but the system acquires a minimum-size work area if the operand is
omitted. The MSW A operand is coded only when the SMSW operand is coded.
Processing efficiency can be increased if more than a minimum-size work area is
provided. For more detailed information about work area size, refer to OS/VS
Data Management Services Guide.
Note: QISAM uses the DCBMSW A, DCBSMSI, and DCBSMSW fields in the data
control block as a work area; these fields contain meaningful information only when
the data set is opened for BISAM.
Source: The MSW A operand can be supplied in the DCB macro instruction or by the
problem program before completion of the data control block exit routine.
NCP= absexp (maximum value is 99)
The NCP operand specifies the maximum number of READ/WRITE macro
instructions that are issued before the first CHECK (or WAIT) macro instruction is
issued to test for completion of the I/O operation. The maximum number that can
be specified may be less than 99 depending on the limit established when the
operating system is generated. If the NCP operand is omitted, one is assumed. If
dynamic buffering is used, the value specified for the NCP operand must not exceed
the number of buffers specified in the BUFNO operand.
Source: The NCP operand can be supplied in the DCB macro instruction, in the DCB
subparameter of a DD statement, or by the problem program before an OPEN macro
instruction is issued to open the data set.
SMSI= absexp (maximum value is 65,535)
The SMSI operand specifies the length, in bytes, required to contain the highest
level master index for the data set being processed. The size required can be
determined from the DCBN CRHI field of the data control block. When an ISAM
data set is created (with QISAM), the size of the highest level index is inserted into
the DCBNCRHI field. If the value specified in the SMSI operand is less than the
value in the DCBNCRHI field, the task is abnormally terminated.
Note: QISAM uses the DCBMSW A, DCBSMSI, and DCBSMSW fields as a work
area; these fields contain meaningful information only when the data set is opened for
BISAM.

56 OS/VS Data Management Macro Instructions

DCB -

BISAM

Source: The SMSI operand can be supplied in the DCB macro instruction or by the
problem program before completion of the data control block exit routine.
SMSW= absexp (maximum value is 65,535)
The SMSW operand specifies the length, in bytes, of a work area that is used by
BISAM. This operand is optional, but the system acquires a minimum-size work
area if the operand is omitted. The SMSW operand is coded only when the MSW A
operand is also coded. If the SMSW operand is coded but the size specified is less
than the minimum required, the task is abnormally terminated. OS / VS Data
Management Services Guide describes the methods of calculating the size of the
work area.
If unblocked records are used, the work area must be large enough to contain all

the count fields (eight bytes each), key fields, and data fields contained on one
direct-access device track.
If blocked records are used, the work area must be large enough to contain all the

count fields (eight bytes each) and data fields contained on one direct-access device
track plus additional space for one logical record (LRECL value).
Note: QISAM uses the DCBMSW A, DCBSMSI, and DCBSMSW fields in the data
control block as a work area; these fields contain meaningful information only when
the data set is opened for BISAM.
Source: The SMSW operand can be supplied in the DCB macro instruction or by the
problem program before completion of the data control block exit routine.
SYNAD= relexp
The SYNAD operand specifies the address of the error anlaysis routine given
control when an uncorrectable input/output error occurs. The contents of the
registers when the error analysis routine is given control are described in Appendix
A of this publication.
The error anlaysis routine must not use the save area pointed to by register 13
because this area is used by the system. The system does not restore registers when
it regains control from the error analysis routine. The error analysis routine can
issue a RETURN macro instruction which uses the address in register 14 to return
control to the system. When control is returned in this manner, the system returns
control to the problem program and proceeds as though no error had been
encountered. If the error analysis routine continues processing, the results are
unpredictable.
For ISAM data sets, if the error analysis routine receives control from the Close
routine, bit 3 of the IOBFLAG 1 field in the input/output block is set to one. In
this case, the error analysis routine must not issue a CLOSE macro instruction. To
complete Close processing, the error analysis routine must return control to the
Close routine with a branch to the address in register 14.
If the SYNAD operand is omitted, the task is abnormally terminated when an

uncorrectable input/output error occurs.
Source: The SYNAD operand can be supplied in the DCB macro instruction or by the
problem program. The problem program can also change the error analysis routine
address at any time.
Macro Instruction Descriptions 57

DCB-BPAM

DCB -

Construct a Data Control Block (BPAM)
The data control block for the basic partitioned access method (BP AM) is constructed
during assembly of the problem program. The DCB macro instruction can be coded at
any point in a control section (CSECT). The DSORG and MACRF operands must be
specified in the DCB macro instruction, but the other DCB operands can be supplied
from other sources. Each of the BP AM DCB operand descriptions contains a heading,
"Source." The information under this heading describes the sources which can supply
the operand to the data control block.
Before a DCB macro instruction for a BP AM data set is coded, the following
characteristics of partitioned data sets should be considered:
•

The entire partitioned data set must reside on one direct-access volume, but several
such data sets, on the same or different volumes, can be concatenated for input.

•

When a partitioned data set is being created, the first (or only) DD statement for
the data set must contain a SPACE parameter defining the size of the entire data
set and its directory. From this information, the system allocates space for the data
set and pre-formats the data set directory. As subsequent data set members are
added, they are added in the space originally allocated.

•

A single member of a partitioned data set can be added or retrieved using BSAM or
QSAM without using the BLDL, FIND, or STOW macro instructions. In this case,
the data set member is being processed as a sequential data set (DSORG=PS).
Processing a member in this manner does not provide the full capability of the basic
partitioned access method. For more information about processing a member using
BSAM or QSAM, refer to OS/VS Data Management Services Guide.

•

A single member or multiple members can be added, retrieved, or updated using
BPAM (many of the routines used by BPAM are actually BSAM routines).

•

Buffers for a BPAM data set can be acquired automatically, but buffer control must
be provided by the problem program. The problem program must issue a READ
macro instruction that provides a buffer address to fill an input buffer, and it must
place the data in an output buffer before issuing a WRITE macro instruction to
write a data block.

•

Although a BPAM data set can contain blocked records, the problem program must
perform all blocking and deblocking of records. BPAM provides only the capability
to read or write a data block, but the data block can contain multiple logical records
assembl~d by the problem program.

•

The STOW macro instruction can be used to add, delete, change, or replace a
member name or alias in the directory.

•

Multiple members of the data set can be processed by building a list of member
locations (with a BLDL macro instruction) and using the FIND macro instruction
(in conjunction with the list) to locate the beginning of each member.

•

The problem program must synchronize 110 operations by issuing a CHECK macro
instruction for each READ or WRITE macro instruction issued.

Macro Instruction Descriptions 59

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

These characteristics of partitioned data sets and the basic partitioned access method
are described in more detail in OS/VS Data Management Services Guide.
The following describes the DCB operands that can be specified when a BP AM data
set is being created or processed.

{F}
BFALN= {D}

The BFALN operand specifies the boundary alignment for each buffer in the buffer
pool when the buffer pool is constructed automatically or by a GETPOOL macro
instruction. If the BFALN operand is omitted, the system provides double word
alignment for each buffer. The following describes the characters that can be
specified in the BFALN operand.
F

Specifies that each buffer is aligned on a fullword boundary that is not
also a doubleword boundary.

D

Specifies that each buffer is aligned on a doubleword boundary.

If the BUILD macro instruction is used to construct the buffer pool or if the

problem program controls all buffering, the problem program must provide an area
for the buffers and control buffer alignment.
Source: The BFALN operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before completion
of the data control block exit routine.
BLKSIZE= absexp (maximum value is 32,760)

The BLKSIZE operand specifies the length, in bytes, of each data block for
fixed-length records, or it specifies the maximum length, in bytes, for
variable-length or undefined-length records. If keys are used, the length of the key
is not included in the value specified for the BLKSIZE operand.
The actual blocksize that can be specified depends on the record format and the
type of direct-access device being used. If the track-overflow feature is used, the
blocksize can be up to the maximum. If the track-overflow feature is not used, the
maximum blocksize is determined by the track capacity of a single track on the
direct-access device being used. Device capacity for direct-access devices is
described in Appendix C of this publication. For additional information about
device capacity and space allocation, refer to OS/VS Data Management Services
Guide.
For variable-length records, the value specified in the BLKSIZE operand must
include the maximum logical record length (up to 32,756 bytes) plus four bytes for
the block descriptor word (BDW).
For undefined-length records, the value specified for the BLKSIZE operand can be
altered by the' problem program when the actual length becomes known to the
problem program. The value can be inserted into the DCBBLKSI field of the data
control block or specified in the length operand of a READ/WRITE macro
instruction.

60 OS/VS Data Management Macro Instructions

DCB-BPAM
Source: The BLKSIZE operand can be supplied in the DeB macro instruction, in the
DeB subparameter of a DD statement, by the problem program before completion of
the data control block exit routine, or by the data set label of an existing data set.
BUFCB= relexp
The BUFCB operand specifies the address of the buffer pool control block when
the buffer pool is constructed by a BUILD macro instruction.
If the buffer pool is constructed automatically or by a GETPOOL macro

instruction, the system places the address of the buffer pool control block into the
data control block and the BUFCB operand can be omitted. Also, if the problem
program controls all buffering, the BUFCB operand should be omitted.

Source: The BUFCB operand can be supplied in the DeB macro instruction or by the
problem program before completion of the data control block exit routine.
BUFL= absexp (maximum value is 32,760)
The BUFL operand specifies the length, in bytes, of each buffer in the buffer pool
when the buffer pool is acquired automatically. If the BUFL operand is omitted
and the buffer pool is acquired automatically, the system acquires buffers with a
length that is equal to the sum of the values specified in the KEYLEN and
BLKSIZE operands. If the problem program requires longer buffers, the BUFL
operand should be specified.
If the problem program controls all buffering, the BUFL operand is not required.

Source: The BUFL operand can be supplied in the DeB macro instruction, in the DeB
subparameter of a DD statement, or by the problem program before completion of the
data control block exit routine.
BUFNO= absexp (maximum value is 255)
The BUFNO operand specifies the number of buffers to be constructed by a
BUILD macro instruction, or it specifies the number of buffers to be acquired
automatically by the system.
If the problem program controls all buffering or if the buffer pool is constructed by

a GETPOOL macro instruction, the BUFNO operand should be omitted.

Source: The BUFNO operand can be supplied in the DeB macro instruction, in the
DeB subparameter of a DD statement, or by the problem program before completion
of the data control block exit routine.
DDNAME= symbol
The DDNAME operand specifies the name used to identify the job control language
data definition (DD) statement that defines the data set being created or processed.

Source: The DDNAME operand can be supplied in the DeB macro instruction or by
the problem program before an OPEN macro instruction is issued to open the data set.

Macro Instruction Descriptions 61

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-074S

{POI
DSORG= {POUI
The DSORG operand specifies the data set organization and if the data set contains
any location-dependent information that would make it unmovable. The following
describes the characters that can be specified.
PO

Specifies a partitioned data set organization.

POU -

Specifies a partitioned data set organization and that the data set
contains location-dependent information.

Note: If BSAM or QSAM is used to add or retrieve a single member of a partitioned
data set, a sequential access method is being used, and the DSORG operand is
specified as PS or PSU. The name of the member being processed in this manner is
supplied in a DD statement.
Source: The DSORG operand must be specified in the DCB macro instruction.
EODAD= relexp
The EODAD operand specifies the address of the routine given control when the
end of the input data set is reached. Control is given to this routine when an input
request is made (READ macro instruction) and there are no additional input
records to retrieve. The routine is entered when a CHECK macro instruction is
issued and the end of the data set is reached. When your EODAD routine receives
control, register contents (except for register 15) will be the same as they were
when the last CHECK macro instruction was issued. Register 15 will contain a
hexadecimal 4 if you have processed an end-of-volume tape label; otherwise,
register 15 will contain a O. If the end of the data set is reached and no EODAD
address has been supplied, the task is abnormally terminated.
Source: The EODAD operand can be supplied in the DCB macro instruction or by the
problem program before the end of the data set is reached.
EXLST= relexp
The EXLST operand specifies the address of the problem program exit list. The
EXLST operand is required if the problem program uses the data control block exit
routine for additional processing or if the DCB ABEND exit is used for ABEND
condition analysis.
Refer to Appendix D of this publication for the format and requirements of the exit
list processing. For additional information about exit list processing, refer to
OS/VS Data Managetnent Services Guide.
Source: The EXLST operand can be supplied in the DCB macro instruction or by the
problem program before the OPEN macro instruction is issued to open the data set.
KEYLEN= absexp (maximum value is 255)
The KEYLEN operand specifies the length, in bytes, of the key associated with each
data block in the direct-access device data set. If the key length is not supplied
from any source by the end of the data control block exit routine, a key length of
zero (no keys) is assumed.
Source: The KEYLEN operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, by the problem program before the completion
of the data control block exit routine, or by the data set label of an existing data set.
62 OS/VS Data Management Macro Instructions

Page of GC26-3793-1
Added December 15, 1972
By TNL GN26-0748

DCB-BPAM

LRECL= absexp (maximum value is 32,760)
The LRECL operand specifies the length, in bytes, of each fixed-length logical
record in the data set; It is required only for fixed-length records. The value

Macro Instruction Descriptions 62.1

DCB-BPAM
specified in the LRECL operand cannot exceed the value specified in the BLKSIZE
operand.
If the records are unblocked, the value specified in the LRECL operand must equal
the value specified in the BLKSIZE operand. If the records are blocked, the value
specified in the LRECL operand must be evenly divisible into the value specified in
the BLKSIZE operand.

Source: The LRECL operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, by the problem program before completion of
the data control block exit routine, or by the data set label of an existing data set.
MACRF= {(R)}
{(W)}

{(R,W)}
The MACRF operand specifies the type of macro instructions (READ, WRITE, and
NOTE/POINT) that are used to process the data set. The following describes the
characters that can be specified:
R

Specifies that READ macro instructions are used. This operand
automatically provides the capability to use both the NOTE and POINT
macro instructions with the data set.

W

Specifies that WRITE macro instructions are used. This operand
automatically provides the capability to use the NOTE macro instruction
with the data set.

All BP AM READ and WRITE macro instructions issued must be tested for
completion using a CHECK macro instruction. The MACRF operand does not
require any coding to specify that a CHECK macro instruction will be used.
Source: The MACRF operand must be specified in. the DCB macro instruction.
NCP= absexp (maximum value is 99)
The NCP operand specifies the maximum number of READ and WRITE macro
instructions that will be issued before the first CHECK macro instruction is issued.
The maximum number may be less than 99 depending on the limit established when
the operating system is generated. If chained scheduling is specified, NCP must be
specified as more than one. If the NCP operand is omitted, one is assumed.
Source: The NCP operand can be supplied in the DCB macro instruction, in the DCB
subparameter of a DO statement, or by the problem program before an OPEN macro
instruction is issued to open the data set.
OPTCD= {C}
{WI
{WC}
The OPTCD operand specifies the optional services performed by the system. The
following describes the characters that can be specified; they can be specified in any
order and no commas are required between characters.

Macro Instruction Descriptions 63

C

Specifies that chained scheduling is used. OS/VS supports chained
scheduling in nonpageable storage only. If chained scheduling is
requested in page able storage, the request is ignored and normal
scheduling is substituted.

W

Specifies that the system performs a validity check for each record
written.

Source: The OPTCD operand can be supplied in the DCB macro instruction, in the

DCB subparameter of a DO statement, or by the problem program before an OPEN
macro instruction is issued to open the data set. However, all optional services must be
requested from the same source.
RECFM= {U

(T)

(A)
1M)

{V (B)

(A)
(T) (M)
(BT)

{F

(B) (A)
tTl (M)
(BT)

The RECFM operand specifies the record format and characteristics of the data set
being created or processed. All the record formats shown above can be specified,
but in those formats that show blocked records, the problem program must perform
the blocking and deblocking of logical records; BPAM recognizes only data blocks.
The following describes the characters that can be specified.
A

Specifies that the records in the data set contain American National
Standards Institute (ANSI) control characters. Refer to Appendix E for a
description of control characters.

B

Specifies that the data set contains blocked records.

F

Specifies that the data set contains fixed-length records.

M

Specifies that the records in the data set contain machine code control
characters. Refer to Appendix E for a description of control characters.

T

Specifies that the track-overflow feature is used with the data set. The
track-overflow feature allows a record to be written partially on one
track of a direct-access device and the remainder of the record written on
the following track (if required). Chained scheduling (OPTCD=C)
cannot be used if the track-overflow feature is used.

U

Specifies that the data set contains undefined-length records.

V

Specifies that the data set contains variable-length records.

Source: The RECFM operand can be supplied in the DCB macro instruction, in the

DCB subparameter of a DO statement, by the problem program before completion of
the data control block exit routine, or by the data set label of an existing data set.
SYNAD= relexp

The SYNAD operand specifies the address of the error analysis (SYNAD) routine
to be given control when an uncorrectable input/output error occurs. The contents
of the registers when the error analysis routine is given control are described in
Appendix A.
64 OS/VS Data Management Macro Instructions

DCB -

BPAM

The error analysis routine must not use the save area pointed to by register 13,
because this area is used by the system. The system does not restore registers when
it regains control from the error analysis routine. The error analysis routine can
return control to the system by issuing a RETURN macro instruction. If control is
returned to the system, the system returns control to the problem program and
proceeds a~ though no error had been encountered.
If the SYNAD operand is omitted, the task is abnormally terminated when an
uncorrectable input/output error occurs.
Source: The SYNAD operand can be supplied in the DCB macro instruction or by the

problem program. The problem program can also change the error routine address at
any time.

Macro Instruction Descriptions 65

DCB-BSAM

DCB -

Construct a Data Control Block (BSAM)
The data control block for the basic sequential access method (BSAM) is constructed
during assembly of the problem program. The DCB macro instruction must not be
coded within the first 16 bytes of a control section (CSECT). The DSORG and
MACRF operands must be coded in the DCB macro instruction, but the other DCB
operands can be supplied, to the data control block, from other sources. Each DCB
operand description contains a heading, "Source." The information under this heading
describes the sources from which an 'operand can be supplied.
Before a DCB macro instruction for creating or processing a BSAM data set is coded,
the following characteristics of BSAM data sets should be considered:
•

Although several record formats with blocked records can be specified for BSAM,
the problem program must perform all blocking and deblocking of records. BSAM
provides only the capability to read or write a data block, but the block can contain
one or more logical records assembled by the problem program.

•

Buffers for a BSAM data set can be acquired automatically, but buffer control must
be provided by the problem program. The problem program must issue a READ
macro instruction that provides a buffer address to fill an input buffer, and it must
place the data in an output buffer before issuing the WRITE macro instruction to
write a data block.

•

The problem program must synchronize I/O operations by issuing a CHECK macro
instruction for each READ and WRITE macro instruction issued.

•

BSAM provides capability for nonsequential processing by using the NOTE and
POINT macro instructions.

•

Keys for direct-access device records can be read or written using BSAM.

•

Specifying the DEVD operand in the DCB macro instruction can make the program
device dependent.

These characteristics of basic sequential access method data sets are described in more
detail in OS/VS Data Management Services Guide.
The following describes the operands that can be specified in the DCB macro
instruction for a BSAM data set.
BFALN=

IF}
ID}

The BFALN operand specifies the boundary alignment for each buffer in the buffer
pool when the buffer pool is constructed automatically or by a GETPOOL macro
instruction. If the BFALN operand is omitted, the system provides doubleword
alignment for each buffer.
If the data set being created or processed contains ASCII tape records with a block

prefix, the block prefix is entered at the beginning of the buffer, and data alignment
depends on the length of the block prefix. For a description of how to specify the
block prefix length, refer to the DCB BUFOFF operand.

Macro Instruction Descriptions 67

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

The following describes the characters that can be specified.
F

Specifies that each buffer is on a fullword boundary that is not also a
doubleword boundary.

D

Specifies that each buffer is on a double word boundary.

If the BUILD macro instruction is used to construct the buffer pool or if the

problem program controls all buffering, the problem program must provide an area
for the buffers and control buffer alignment.
Source: The BFALN operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before completion
of the data block exit routine. If both the BFALN and BFTEK operands are specified,
they must be supplied by the same source.
BFTEK=R

The BFfEK=R operand specifies that BSAM is used to read unblocked
variable-length spanned records with keys from a BDAM data set. Each read
operation reads one segment of the record and places it in the area designated in
the READ macro instruction. The first segment enters at the beginning of the area,
but all subsequent segments are offset by the length of the key (only the first
segment has a key). The problem program must provide an area in which to
assemble a record, identify each segment, and assemble the segments into a
complete record.
Source: The BYrEK operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before completion
of the data control block exit routine. If both the BYrEK and BFALN operands are
specified, they must be supplied from the same source.
BLKSIZE= absexp (maximum value is 32,760)

The BLKSIZE operands specifies the length, in bytes, for fixed-length records, or it
specifies the maximum length, in bytes, for variable-length or undefined-length
records. The BLKSIZE operand includes only the data block length; if keys are
used, the length of the key is not included in the value specified for the BLKSIZE
operand.
The actual value that can be specified in the BLKSIZE operand depends on the
device type and the record format being used. Device capacity is shown in
Appendix C of this publication. For additional information about device capacity,
refer to OS/VS Data Management Services Guide. For direct-access devices when
the track-overflow feature is used or variable-length spanned records are being
processed, the value specified in the BLKSIZE operand can be up to the maximum
value. For other record formats used with direct-access devices, the value specified
for BLKSIZE cannot exceed the capacity of a single track.
If fixed-length records are used for a SYSOUT data set, the value specified in the
BLKSIZE operand must be an integral multiple of the value specified for the logical
record length (LRECL); otherwise the system will adjust the blocksize downward to

the nearest multiple.
If variable-length records are used, the value specified in the BLKSIZE operand

must include the maximum logical record length (up to 32,756 bytes) plus the four
bytes required for the block descriptor word (BDW). For format-D

68 OS/VS Data Management Macro Instructions

Page of GC26-3793-1
Revised December 15,1972
By TNL GN26-0748

DCB-BSAM
variable-length records (ASCII data sets), the minimum value for BLKSIZE is 18
and the maximum value is 2,048.
If ASCII tape records with a block prefix are processed, the value specified in the

BLKSIZE operand must also include the length of the block prefix.
If BSAM is used to read variable-length spanned records from a BDAM data set,

the value specified for the BLKSIZE operand must be as large as the longest
possible record segment in the BDAM data set, including four bytes for the segment
descriptor word (SDW) and four bytes for the block descriptor word (BDW).
If undefined-length records are used, the value specified for the BLKSIZE operand

can be altered by the problem program when the actual length becomes known to
the problem program. The value can be inserted directly into the DCBBLKSI field
of the data control block or specified in the length operand of a READ /WRITE
macro instruction.

Source: The BLKSIZE operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, by the problem program before completion of
the data control block exit routine, or by the data set label of an existing data set.
BUFCB= relexp
The BUFCB operand specifies the address of the buffer pool control block in a
buffer pool constructed by a BUILD macro instruction.
If the buffer pool is constructed automatically or by a GETPOOL macro
instruction, the system places the address of the buffer pool control block into the
data control block, and the BUFCB operand should be omitted. If the problem
program controls all buffering, the BUFCB operand is not required.

Source: The BUFeB operand can be supplied in the DCB macro instruction or by the
problem program before completion of the data control block exit routine.
BUFL= absexp (maximum value is 32,760)
The BUFL operand specifies the length, in bytes, for each buffer in the buffer pool
when the buffer pool is acquired automatically. The system acquires buffers with a
length equal to the sum of the values specified in the KEYLEN and BLKSIZE
operands if the BUFL operand is omitted; if the problem program requires larger
buffers, the BUFL operand must be specified. If the BUFL operand is specified, it
must be at least as large as the value specified in the BLKSIZE operand. If the data
set is for cardimage mode, the BUFL operand should be specified as 160. The
description of the DEVD operand contains a description of card image mode.
If the data set contains ASCII tape records with a block prefix, the value specified

in the BUFL operand must include the block length plus the length of the block
prefix.
If the problem program controls all buffering or if the buffer pool is constructed by

a GETPOOL or BUILD macro instruction, the BUFL operand is not required.

Source: The BUFL operand can be supplied in the DCB macro instruction, in the DCB
subparameter of a DD statement, or by the problem program before completion of the
data control block exit routine.

Macro Instruction Descriptions 69

BUFNO= absexp (maximum value is 255)
The BUFNO operand specifies the number of buffers constructed by a BUILD
macro instruction or the number of buffers to be acquired automatically by the
system.
If the problem program controls all buffering or if the buffer pool is constructed by

a GETPOOL macro instruction, the BUFNO operand should be omitted.
Source: The BUFNO operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before completion
of the data control block exit routine.
BUFOFF= { absexpJ
{LJ
The BUFOFF operand specifies the length, in bytes, of the block prefix used with
an ASCII tape data set. When BSAM is used to read an ASCII tape data set, the
problem program must use the block prefix length to determine the location of the
data in the buffer. When BSAM is used to write an output ASCII tape data set, the
problem program must insert the block prefix into the buffer followed by the data
(BSAM considers the block prefix as data). The block prefix and data can consist
of any characters that can be translated into ASCII code; any character that cannot
be translated is replaced with a substitute character. The following can be specified
in the BUFOFF operand:
absexp -

Specifies the length, in bytes, of the block prefix. This value can be
from 0 to 99 for an input data set. The value must be 0 for writing an
output data set with fixed-length or undefined-length records (BSAM
considers the block prefix part of the data record).

L

Specifies that the block prefix is 4 bytes long and contains the block
length. BUFOFF=L is used when format-D records (ASCII) are
processed. When BUFOFF=L is specified, the BSAM problem
program can process the data records (using READ and WRITE macro
instructions) in the same manner as if the data were in format-V
variable-length records.
If the BUFOFF operand is omitted for an input data set with format-D

records, the system inserts the record length into the DCBLRECL field of
the data control block; the problem program must obtain the length from
this field to process the record.
If the BUFOFF operand is omitted from an output data set with format-D

records, the problem program must insert the actual record length into the
DCBBLKSI field of the data control block or specify the record length in
the length operand of a WRITE macro instruction.
Source: The BUFOFF operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before an OPEN
macro instruction is issued to open the data set.
DDNAME= symbol
The DDNAME operand specifies the name used to identify the job control language
data definition {DD) statement that defines the data set being created or processed.
Source: The DDNAME operand can be supplied in the DCB macro instruction or by
the problem program before an OPEN macro instruction is issued to open the data set.

70 OS/VS Data Management Macro Instructions

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

DCB-BSAM
DEVD=

{DA [,KEYLEN= absexp]
{TA [,DEN=

I

{OI][,TRTCH= {CI] I
{EI
ttl
{TI
{21
{ETI
{31

I

{PT [,CODE= {Al]
{BI
{CI
{FI

{II
{NI
{TI

I

{PR (,PRTSP= {Ol]
ttl

{21

I

{31

{PC (,MODE= (C]

(R][,STACK=

(E]

{RD [,MODE=[C]
(E]

UI)(,FUNC=

{I

{21

{P
{PW[XT]
{R
{RP(D]
{RW(T]
{RWP[XT](D]
{WIT]

[O]][,STACK= ttl][,FUNC=
(R]

{21

{I

{P
{PW[XT]
{R
{RP(D]
{RW(T]
{RWP(XT](D]
{WIT]

In
I
I
I
I
I
I
I
In
I
I
I
I
I
I
I

The DEVD operand specifies the device type on which the data set can or does
reside. The device types above are shown with the optional operand(s) that can be
coded when a particular device is used. The devices are listed in order of
device-independence. For example, if DEVD=DA is coded in a DeB macro
instruction (or the DEVD operand is omitted, which causes a default to DA), the
data control block constructed during assembly could later be used for any of the
other devices, but if DEVD=RD is coded, the data control block can be used only
with a card reader or card reader punch. Unless you are certain that device
interchangeability is not required, you should either code DEVD=DA or omit the
operand and allow it to default to DA.
If system input is directed to an intermediate storage device, the DEVD operand is
omitted, and the job control language for the problem program designates the
system input device to be used. Likewise, if system output is directed to an
intermediate storage device, the DEVD operand is omitted, and the job control
language for the problem program designates the system output device to be used.

Macro Instruction Descriptions 71

The following describes the device type and the optional operands that can be
specified for each device type:
DA -

Specifies that the data control block can be used for a direct-access
device (or any of the other device types described following DA).
KEYLEN = absexp
The KEYLEN operand can be specified only for data sets that
reside on direct-access devices. Since the KEYLEN is usually
coded without a DEVD operand (default taken), the description
of the KEYLEN operand is in alphabetic sequence with the other
operands.

TA -

Specifies that the data control block can be used for a magnetic tape
data set (or any of the other device types described following TA). If
TA is coded, the following optional operands can be coded.
DEN= to}
{I}

{2}
{3}

The DEN operand specifies the recording density in the number of
bits-per-inch per track as shown in the following chart.
DEN 7-Track Tape 9-Track Tape

o
1
2

200
556
800

9-Track Tape 9-Track Tape
(Phase Encoded) (Dual Density)

800

3

1600

800 (NRZI)
1600 (PE)

NRZI is for non-return-to-zero-inverse mode
PE is for phase encoded mode
Specifying DEN =0 for a 7 track, 3420 tape will result in a 556
bits-per-inch recording density, but corresponding messages and tape
labels will indicate a 200 bits-per-inch recording density.
If the DEN operand is not supplied by any source, the highest

applicable density is assumed.
TRTCH= {C}

{E}
{ET}

{T}
The TRTCH operand specifies the recording technique for 7-track
tape. One of the above four character combinations can be coded. If
the TRTCH operand is omitted, odd parity with no translation or
conversion is assumed. The following describes the characters that can
be specified:
C

Specifies that the data-conversion feature is used with odd
parity and no translation.

E

Specifies even parity with no translation or conversion.

ET

Specifies even parity with BCDIC to EBCDIC translation
required and no data-conversion feature.

T

Specifies that BCDIC to EBCDIC translation is required
with odd parity and no data-conversion feature.

72 OS/VS Data Management Macro Instructions

DCB-BSAM
PI -

Specifies that the data control block is used for a paper tape device (or
any of the other devices following PI). If PI is coded, the following
optional operand can be coded.
CODE=

{AI
{BI
{CI

{F}
01
{N}
{TI
The CODE operand specifies the code in which the data was punched.
The system converts these codes to EBCDIC code. If the CODE
operand is not supplied by any source, CODE=I is assumed. The
following describes the characters that can be specified.

PR-

A

Specifies 8-track tape in ASCII code.

B

Specifies Burroughs 7-track tape.

C

Specifies National Cash Register 8-track tape.

F

Specifies Friden 8-track tape.

I

Specifies IBM BCD perforated tape and transmission code
with 8 tracks.

N

Specifies that no conversion required.

T

Specifies Teletype l 5-track tape.

Specifies that the data control block is used for an online printer (or
any of the other device types following PR). If PR is coded, the
following optional operand can be coded.
PRTSP= {Ol

ttl
{21
{31

The PRTSP operand specifies the line spacing on the printer. This
operand is not valid if the RECFM operand specifies either machine
(RECFM=M) or ANSI (RECFM=A) control characters. If the
PRTSP operand is not specified from any source, one is assumed. The
following describes the characters that can be specified.

1.

o

Specifies that spacing is suppressed (no space).

1

Specifies single-spacing.

2

Specifies double-spacing (one blank line between pnnted
lines).

3

Specifies triple-spacing (two blank lines between printed
lines).

Trademark of Teletype Corporation.

Macro Instruction Descriptions 73

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

PC

-

Specifies that the data control block is used for a card punch (or any
of the other device types following PC). If PC is coded, the following
optional operands can be specified.
MODE= [CnR]
[E]

The MODE operand specifies the mode of operation for the card
punch. The following describes the characters that can be specified. If
the MODE operand is omitted, E is assumed.
C

Specifies that the cards are to be punched in card image
mode. In card image mode, the 12 rows in each card
column are punched from two consecutive bytes in virtual
storage. Rows 12 through 3 are punched from the
low-'-order 6 bits of one byte and rows 4 through 9 are
punched from the low-order 6 bits of the following byte.

E

Specifies that cards are to be punched in EBCDIC code.

IR

Specifies that the program runs in read-column-eliminate
mode (3505 card reader or 3525 card punch, read feature).

Note: If the MODE operand is specified in the DCB subparameter of
a DD statement, either C or E must be specified if R is specified.
STACK= {l}
{2}

The STACK operand specifies the stacker bin into which the card is
placed after punching is completed. If this operand is omitted, stacker
number 1 is used. The following describes the characters that can be
specified:
1

Specifies stacker number 1.

2

Specifies stacker number 2.

FUNC=

U

}

{P
{PW[XT]
{R
{RP[D]
{RW[T]
{RWP[XT][D]
{WIT]

}
}
}
}
}
}
}

I The FUNC operand defines the type of 3525 card punch data sets that
are used. If the FUNC operand is omitted from all sources, a data set
opened for input defaults to read only, and a data set opened for
output defaults to punch only. The following describes the characters
that can be specified in the FUNC operand.
D

74 OS/VS Data Management Macro Instructions

Specifies that the data protection option is to be used. The
data protection option prevents punching information into
card columns that already contain data. When the data
protection option is used, an 80-byte data protection image
(DPI) must have been previously stored in
SYS l.IMAGELIB. Data protection applies only to the

DCB-BSAM
output/punch portion of a read and punch or read punch
and print operation.
I

Specifies that the data in the data set is to be punched into
cards and printed on the cards; the first 64 characters are
printed on line 1 of the card and the remaining 16
characters are printed on line 3.

P

Specifies that the data set is for punching cards. See the
description of the character X for associated punch and
print data sets.

R

Specifies that the data set is for reading cards.

T

Specifies that the two-line print option is used. The
two-line print option allows two lines of data to be printed
on the card (lines 1 and 3). If T is not specified, the
multiline print option is used; this allows printing on all 25
possible print lines. In either case, the data printed may be
the same as the data punched in the card, or it may be
entirely different data.

W

Specifies that the data set is for printing. See the
description of the character X for associated punch and
print data sets.

X

Specifies that an associated data set is opened for output for
both punching and printing. Coding the character X is used
to distinguish the 3525 printer output data set from the
3525 punch output data set.

Note: If data protection is specified, the data protection image (DPI)
must be specified in the FCB subparameter of the DD statement for
the data set.
RD -

Specifies that the data control block is used with a card reader or card
read punch. If RD is specified, the data control block cannot be used
with any other device type. When RD is coded, the following optional
operands can be specified.
MODE= [C][O]
[E][R]

The MODE operand specifies the mode of operation for the card
reader. The following describes the characters that can be specified:
C

Specifies that the cards to be read are in card image mode.
In card image mode, the 12 rows in each card column are
read into two consecutive bytes of virtual storage. Rows 12
through 3 are read into one byte and rows 4 through 9 are
read into the following byte.

E

Specifies that the cards to be read contain data in EBCDIC
code.

Macro Instruction Descriptions 75

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

o

Specifies that the program runs in optical-mark-read mode
(3505 card reader).

R

Specifies that the program runs in read-column-eliminate
mode (3505 card reader and 3525 card reader).

Note: If the MODE operand for a 3505 or 3525 is specified in the
DCB subparameter of a DD statement, either C or E must be specified
if R or 0 is specified.
STACK=

ttl
{21

The STACK operand specifies the stacker bin into which the card is
placed after reading is completed. If this operand is omitted, stacker
number 1 is used. The following describes the characters that can be
specified.
1
Specifies stacker number 1.
2 Specifies stacker number 2.
FUNC=

I
I
{PWIXT]
I
{R
I
{RPID]
I
{RWIT]
I
{RWPIXT]ID] I
{WIT]
I
{I
{P

The FUNC operand defines the type of 3525 card punch data sets that
are used. If the FUNC operand is omitted from all sources, a data set
opened for input defaults to read only, and a data set opened for
output defaults to punch only. The following describes the characters
that can be specified in the FUNC operand.
D

Specifies that the data protection option is to be used. The
data protection option prevents punching information into
card columns that already contain data. When the data
protection option is used, an 80-byte data protection image
(DPI) must have been previously stored in
SYS1.IMAGELIB. Data protection applies only to the
output/ punch portion of a read and punch or read punch
and print operation.

I

Specifies that the data in the data set is to be punched into
cards and printed on the cards; the first 64 characters are
printed on line 1 of the card and the remaining 16
characters are printed on line 3.

P

Specifies that the data set is for punching cards. See the
description of the character X for associated punch and
print data sets.

R

Specifies that the data set is for reading cards.

T

Specifies that the two-line print option is used. The
two-line print option allows two lines of data to be printed

76 OS/VS Data Management Macro Instructions

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

DCB-BSAM
on the card (lines 1 and 3). If T is not specified, the
multiline print option is used; this allows printing on all 25
possible print lines. In either case, the data printed may be
the same as the data punched in the card, or it may be
entirely different data.
W

Specifies that the data set is for printing. See the
description of the character X for associated punch and
print data sets.

X

Specifies that an associated data set is opened for output for
both punching and printing. Coding the character X is used
to distinguish the 3525 printer output data set from the
3525 punch output data set.

Note: If data protection is specified, the data protection image (DPI)
must be specified in the FCB subparameter of the DD statement for
the data set.
Source: The DEVD operand can be supplied only in the DCB macro instruction.
However, the optional operands can be supplied in the DCB macro instruction, the
DCB subparameter of a DD statement, or by the problem program before
completion of the data control block exit routine.
DSORG= IPS}
{PSU}
The DSORG operand specifies the organization of the data set and if the data set
contains any location-dependent information that would make it unmovable. The
following can be specified.
PS

Specifies a physical sequential data set.

PSU -

Specifies a physical sequential data set that contains location-dependent
information that would make it unmovable.

Source: The DSORG operand must be coded in theDCB macro instruction.
EODAD= relexp
The EODAD operand specifies the address of the routine given control when the
end of an input data set is reached. Control is given to this routine when a READ
macro instruction is issued and there are no additional input records to be retrieved.
If the record format is RECFM=FS or FBS, the end-of-data condition is sensed
when a file mark is read or when more data is requested after reading a truncated
block. The end of data routine is entered when the CHECK macro instruction
determines that the READ macro instruction reached the end of the data. When
your EODAD routine receives control, register contents (except for register 15) will
be the same as they were when the last CHECK macro instruction was issued.
Register 15 will contain a hexadecimal 4 if you have processed an end-of-volume
tape label; otherwise, register 15 will contain a O. If the end of the data set is
reached but no EODAD address has been supplied, the task is abnormally
terminated.
When the data set has been opened for UPDAT and volumes are to be switched,
the problem program should issue a FEOV macro instruction after the EOOAD
routine has been entered.
Macro Instruction Descriptions 77

Source: The EODAD operand can be supplied in the DCB macro instruction or by the
problem program before the end of the data set is reached.
EXLST= relexp
The EXLST operand specifies the address of the problem program exit list. The
EXLST operand is· required if the problem program requires additional processing
for user labels, user totaling, data control block exit routine, end-of-volume, block
count exits, to define a forms control buffer (FCB) image, or to use the DCB
ABEND exit for ABEND condition analysis.
Refer to Appendix D of this publication for the format and requirements of exit list
processing. For additional information about exit list processing, refer to OS/VS
Data Management Services Guide.
Source: The EXLST operand can be supplied in the DCB macro instruction or by the
problem program any time before the exit is required by the problem program.
KEYLEN= absexp (maximum value is 255)
The KEYLEN operand specifies the length, in bytes, for the key associated with
each data block in a direct-access device data set. If the key length is not supplied
from any source before completion of the data control block exit routine, a key
length of zero (no keys) is assumed.
Source: The KEYLEN operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, by the problem program before the completion
of the data control block exit routine, or by the data set label of an existing data set.
LRECL= { absexp}
{X}

The LRECL operand specifies the length, in bytes, for fixed-length records, or it
specifies the maximum length, in bytes, for variable-length records. LRECL=X is
used for variable-length spanned records that exceed 32,756 bytes. Except when
variable-length spanned records are used, the value specified for the LRECL
operand cannot exceed the value specified for the BLKSIZE operand.
Except when variable-length spanned records are used, the LRECL operand can be
omitted for BSAM; the system uses the value specified in the BLKSIZE operand. If
the LRECL value is coded, it is coded as described in the following.
For fixed-length records that are unblocked, the value specified in the LRECL
operand should be equal to the value specified in the BLKSIZE operand. For
blocked fixed-length records, the value specified in the LRECL operand should be
evenly divisible into the value specified in the BLKSIZE operand.
For variable-length records, the value specified in LRECL must include include the
maximum data length (up to 32,752 bytes) plus 4 bytes for the RDW.
For undefined-length records, the LRECL operand should be omitted; the actual
length can be supplied dynamically. in a READ/WRITE macro instruction. When
an undefined-length record is read, the actual length of the record is returned by
the system in the DCBLRECL field of the data control block.
When BSAM is used to create a BDAM data set with variable-length spanned
records, the LRECL value should be the maximum data length (up to 32,752) plus
four bytes for the record descriptor word (RDW), or if the logical record length is

78 OS/VS Data Management Macro Instructions

DCB-BSAM
greater than 32,756 bytes, LRECL=X is specified.
Source: The LRECL operand can be supplied in the DCB macro instruction, in the
DCB· subparameter of a DD statement, by the problem program before completion of
the data control block exit routine, or by the data set label of an existing data set.
MACRF= I(R [C))
[P]

{(W [C))

}

[P]

[L]

{(R [C],W

[C)) }

The MACRF operand specifies the type of macro instructions (READ, WRITE,
CNTRL, and NOTE/POINT) that are used with the data set being created or
processed. The BSAM MACRF operand also provides the special form
(MACRF=WL) for creating a BDAM data set. The MACRF operand can be coded
in any of the forms shown above. The following characters can be coded:
C

Specifies that the CNTRL macro instruction is used with the data set. If
C is specified to be used with a card reader, a CNTRL macro instruction
must follow every input request.

L

Specifies that BSAM is used to create a BDAM data set. This character
can be specified only in the combination MACRF=WL.

P

Specifies that POINT macro instructions are used with the data set being
created or processed. Specifying P in the MACRF operand also
automatically provides the capability of using NOTE macro instructions
with the data set.

R

Specifies that READ macro instructions are used.

W

Specifies that WRITE macro instructions are used.

Note: Each READ and WRITE macro instruction issued in the problem program must
be checked for completion by a CHECK macro instruction.
Source: The MACRF operand must be specified in the DCB macro instruction.
NCP= absexp (maximum value is 99)
The NCP operand specifies the maximum number of READ/WRITE macro
instructions that will be issued before the first CHECK macro instruction is issued
to test for completion of the I/O operation. The maximum number may be less
than 99 depending on the limit established when the operating system is generated.
If chained scheduling is specified (OPTCD=C), NCP must be specified as more
than one. If the NCP operand is omitted, one is assumed.
Source: The NCP operand can be supplied in the DCB macro instruction, in the DCB
subparameter of a DD statement, or by the problem program before an OPEN macro
instruction is issued to open the data set.

Macro Instruction Descriptions 79

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

OPTCD= {B}

{T}
{V[C]}

{C[T)[B]}
{H[Z][B]}
{W(C)[T)[B]}
{Z[ C)[T][B]}
{Q[C][B][ {T}]}

{Z}
The OPTCD operand specifies the optional services that are used with the BSAM
data set. Two of the optional services, OPTCD=B and OPTCD=H, cannot be
specified in the DCB macro instruction. They are requested in the DCB
subparameter of a DD statement. Since all optional services requests must be
supplied by the same source, the OPTCD operand must be omitted from the DCB
macro instruction if either of these options is requested in a DD statement. The
following describes the charact~rs that can be specified; these characters can be
specified in any order (in one of the combinations shown above), and no commas
are required between characters.
C

Requests that chained scheduling be used. OPTCD=C cannot be
specified if BFfEK=R is specified for the same data control block. Also,
chained scheduling cannot be specified for associated data sets or printing
on a 3525. OS/VS supports chained scheduling in nonpageable storage
only. If chained scheduling is requested in pageable storage, the request
is ignored and normal scheduling is substituted.

Q

Requests that ASCII tape records in an input data set be converted to
EBCDIC code after the input record has been read. Translation is done
at CHECK time for input. It also requests that an output record in
EBCDIC code be converted to ASCII code before the record is written.

T

Requests the user totaling facility. If this facility is requested, the EXLST
operand should specify the address of an exit list to be used.

V

Specified only for a printer with the universal character set (UCS)
feature. This option unblocks data checks (permits them to be
recognized as errors) and allows analysis by the appropriate error analysis
routine (SYNAD routine). If the V option is omitted, data checks are
not recognized as errors.

W

Specifies that the system performs a validity check on each record written
on a direct-access device.

Z

For magnetic tape, input only, the Z option requests the system to
shorten its normal error recovery procedure to consider a data check as a
permanent I/O error after five unsuccessful attempts to read a record.
This option is available only if it is selected when the operating system is
generated. OPTCD=Z is used when a tape is known to contain errors
and there is no need to process every record. The error analysis routine
(SYNAD) should keep a count of permanent errors and terminate
processing if the number becomes excessive.
For direct-access devices only, the Z option requests the system to use
the search direct option to accelerate the input operations for a data set.

80 OS/VS Data Management Macro Instructions

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

DCB-BSAM
OPTCD=Z cannot be specified when RECFM=UT, FS, FBT, VS, or
VBS.

Note: The following describes the optional services that can be requested in the
DCB subparameter of a DD statement. If either of these options is requested, the
complete OPTCD operand must be ~upplied in the DD statement.
B

If OPTCD=B is specified in the DCB subparameter of a DD statement, it

forces the end-of-volume (EOV) routine to disregard the end-of-file
recognition for magnetic tape. When this occurs, the EOV routine uses
the number of volume serial numbers to determine end of file.
H

If OPTCD=H is specified in the DeB subparameter of a DD statement,
it specifies that the DOS/OS interchange feature is being used with the
data set.

Source: The OPTCD operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before an OPEN
macro instruction is issued to open the data set. However, all optional services must be
requested from the same source.
RECFM= IV [T] [An
[M)

IV [B]
IS]

[An
[M]

[T)

[BS]
(BT)
ID [B)
IF (B]

[An
(An

(S]
[T)

(M]

(BS)
(BT]
The RECFM operand specifies the record format and characteristics of the data set
being created or processed. All the record formats shown above can be specified,
but in those record formats that specify blocked records, the problem program must
perform the blocking and deblocking of logical records; BSAM recognizes only data
blocks. The following describes the characters that can be specified:
A

Specifies that the records in the data set contain American National
Standards Institute (ANSI) control characters. Refer to Appendix E for a
description of control characters.

B

Specifies that the data set contains blocked records.

D

Specifies that the data set contains variable-length ASCII tape records.
See OPTCD=Q and the BVFOFF operand for a description of how to
specify ASCII data sets.

F

Specifies that the data set contains fixed-length records.

M

Specifies that the records in the data set contain machine code control
characters. Refer to Appendix E for a description of control characters.
RECFM=M cannot be used with ASCII data sets.

Macro Instruction Descriptions 81

S

For fixed-length records, S specifies that the records are written as
standard blocks; the data set does not contain any truncated blocks or
unfilled tracks, with the exception of the last block or track in the data
set.
For variable-length records, S specifies that a record can span more than
one block. Spanned records can be read (reading a BDAM data set) or
written (creating a BDAM data set) using BSAM.

T

Specifies that the track-overflow feature is used with the data set. The
track-overflow feature allows a record to be written partially on one
track of a direct-access device and the remainder of the record written on
the following track (if required). Chained scheduling cannot be used if
the track-overflow feature is used.

U

Specifies that the data set contains undefined-length records.

V

Specifies that the data set contains variable-length records.
Note: RECFM=V cannot be specified for a card reader data set or an
ASCII tape data set.

Note: The record format RECFM= VBS does not provide the spanned record function;
if this format is used, the problem program must block and segment the records.
Source: The RECFM operand can be supplied in the DeB macro instruction, in the
DCB subparameter of a DD statement, by the problem program before completion of
the data control block exit routine, or by the data set label of an existing data set.
SYNAD= relexp
The SYNAD operand specifies the address of the error analysis (SYNAD) routine
to be given control when an uncorrectable input/output error occurs. The contents
of the registers when the error analysis routine is given control are described in
Appendix A of this publication.
The error analysis routine must not use the save area pointed to by register 13,
because this area is used by the system. The system does not restore registers when
it regains control from the error analysis routine. The error analysis routine can
issue a RETURN macro instruction which uses the address in register 14 to return
control to the system. If control is returned to the system, the system returns
control to the problem program and proceeds as though no error had been
encountered.
If the SYNAD operand is omitted, the task is abnormally terminated when an
uncorrectable input/output error occurs.

82 OS/VS Data Management Macro Instructions

DCB-QISAM

DCB -

Construct a Data Control Block (QISAM)
The data control block for a queued indexed sequential access method (QISAM) data
set is constructed during assembly of the problem program. The DCB macro
instruction must not be coded within the first 16 bytes of a control section (CSECT).
The DSORG and MACRF operands must be coded in the DeB macro instruction, but
the other DCB operands can be supplied from other sources. Each QISAM DeB
operand description contains a heading, "Source." The information under this heading
describes the sources which can supply the operand to the data control block.
Before a DCB macro instruction for a QISAM data set is coded, the following
characteristics of QISAM should be considered:
•

The characteristics of a QISAM data set are established when the data set is
created; these characteristics cannot be changed without reorganizing the data set.
The following DeB operands establish the characteristics of the data set and can be
coded only when creating the data set: BLKSIZE, CYLOFL, KEYLEN, LRECL,
NTM, OPTCD, RECFM, and RKP.

•

The data set can contain the following record formats: Unblocked fixed-length
records (F), blocked fixed-length records (FB), unblocked variable-length records
(V), or blocked variable-length records (VB).

•

QISAM can create an indexed sequential data set (QISAM, load mode), add
additional data records at the end of the existing data set (QISAM, resume load
mode), update a record in place, or retrieve records sequentially (QISAM, scan
mode).

•

The track-overflow feature cannot be used to create an ISAM data set.

•

When an indexed sequential data set is being created, space for the prime area of
the data set, the overflow area of the data set, and the cylinder/master index(es)
for the data set can be allocated on the same or separate volumes. For information
about space allocation, refer to OS/VS JCL Reference manual.

•

The system automatically creates one track index for each cylinder in the data set
and one cylinder index for the entire data set. The DCB NTM and OPTCD
operands can be specified to indicate that the data set requires a master index(es);
the system creates and maintains up to three levels of master indexes. OS/VS
Data Management Services Guide contains additional information about indexes
for indexed sequential data sets.

•

A record deletion option can be specified (OPTCD=L) when the ISAM data set is
created. This option allows a record to be flagged for deletion by placing a
hexadecimal value of 'FF' in the first data byte of the record (first byte of a
fixed-length record or fifth byte of a variable-length record). Records marked for
deletion are ignored during sequential retrieval by QISAM.

•

Reorganization statistics can be obtained by specifying OPTCD=R when the ISAM
data set is created. These statistics can be used by the problem program to
determine the status of the overflow areas allocated to the data set. Reorganization
of ISAM data sets is described in OS/VS Data Management Services Guide.

Macro Instruction Descriptions 83

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

•

When an ISAM data set is created, the records must be written with the keys in
ascending order.

These characteristics of queued indexed sequential access method data sets are
described in more detail in OS/VS Data Management Services Guide.
The following describes the DCB operands that can be specified when a QISAM data
set is being created or processed.
BFALN= tF}
tD}

The BFALN operand specifies the alignment of each buffer in the buffer pool when
the buffer pool is constructed automatically or by a GETPOOL macro instruction.
If the BFALN operand is omitted, the system provides doubleword alignment for
each buffer. The following describes the characters that can be specified:
F

Specifies that each buffer is on a fullword boundary that is not also a
double word boundary.

D

Specifies that each buffer is on a double word boundary.

If the BUILD macro instruction is used to construct the buffer pool, the problem

program must provide a storage area for the buffers and control buffer alignment.
Source: The BFALN operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before completion
of the data control block exit routine.
BLKSIZE= absexp (maximum value is device-dependent)

The BLKSIZE operand specifies the length, in bytes, for each data block when
fixed-length records are used, or it specifies the maximum length in bytes, for each
data block when variable-length records are used. The BLKSIZE operand must be
specified when an ISAM data set is created. When an existing ISAM data set is
processed, the BLKSIZE operand must be omitted (it is supplied by the data set
label).
Track capacity of the direct-access device being used must be considered when the
BLKSIZE for an ISAM data set is specified. For fixed-length records, the sum of
the key length, data length, and device overhead plus 10 bytes (for ISAM use) must
not exceed the capacity of a single track on the direct-access device being used.
For variable-length records the sum of the key length, block-descriptor word
length, record-descriptor word length, data length, and device overhead plus 10
bytes (for ISAM use) must not exceed the capacity of a single track on the
direct-access device being used. Device capacity and device overhead are described
in Appendix C of this publication. For additional information about device capacity
and space allocation, refer to OS/VS Data Management Services Guide.
If fixed-length records are used, the value specified in the BLKSIZE operand must
be an integral multiple of the value specified in the LRECL operand.

Source: When an ISAM data set is created, the BLKSIZE operand can be supplied in
the DCB macro instruction, in the DCB subparameter of a DD statement, or by the
problem program before completion of the data control block exit routine. When an
existing ISAM data set is processed, the BLKSIZE operand must be omitted from the
other sources, allowing the data set label to supply the value.

84 OS/VS Data Management Macro Instructions

DCB-QISAM
BUFCB= relexp
The BUFCB operand specifies the address of the buffer pool control block
constructed by a BUILD macro instruction.
If the system constructs the buffer pool automatically or if the buffer pool is

constructed by a GETPOOL macro instruction, the system places the address of the
buffer pool control block into the data control block, and the BUFCR operand
should be omitted.
Source: The BUFCB operand can be supplied in the DeB macro instruction or by the
problem program before completion of the data control block exit routine.
BUFL= absexp (maximum value is 32,760)
The BUFL operand specifies the length, in bytes, of each buffer in the buffer pool
when the buffer pool is constructed by a BUILD or GETPOOL macro instruction.
When the data set is opened, the system computes the minimum buffer length
required and verifies that the length in the buffer pool control block is equal to or
greater than the minimum length required. The system then inserts the computed
length into the data control block.
The BUFL operand is not required for QISAM if the system acquires buffers
automatically; the system computes the minimum buffer length required and inserts
the value into the data control block.
If the buffer pool is constructed with a BUILD or GETPOOL macro instruction,

additional space is required in each buffer for system use. For a description of the
buffer length required for various ISAM operations, refer to OS/VS Data
Management Services Guide.
Source: The BUFL operand can be supplied in the DeB macro instruction, in the DeB
subparameter of a DD statement, or by the problem program before completion of the
data control block exit routine.
BUFNO= absexp (maximum value is 255)
The BUFNO operand specifies the number of buffers to be constructed by a
BUILD macro instruction, or it specifies the number of buffers to be acquired
automatically by the system. If the BUFNO operand is omitted, the system
automatically acquires two buffers.
If the GETPOOL macro instruction is used to construct the buffer pool, the

BUFNO operand is not required.
Source: The BUFNO operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before completion
of the data control block exit routine.
CYLOFL= absexp (maximum value is 99)
The CYLOFL operand specifies the number of tracks on each cylinder that is
reserved as an overflow area. The overflow area is used to contain records that are
forced off prime area tracks when additional records are added to the prime area
track in ascending key sequence. ISAM maintains pointers to records in the
overflow area so that the entire data set is logically in ascending key sequence.
Tracks in the cylinder overflow area are used by the system only if OPTCD=Y is
Macro Instruction Descriptions 85

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

specified. For a more complete description of cylinder overflow area, refer to the
space allocation section of OS / VS Data Management Services Guide.
Source: When an ISAM data set is created, the CYLOFL operand can be supplied in
the DCB macro instruction, in the DCB subparameter of a DD statement, or by the
problem program before completion of the data control block exit routine. When an
existing ISAM data set is processed, the CYLOFL operand must be omitted, allowing
the data set label to supply the operand.
DDNAME= symbol
The DDNAME operand specifies the name used to identify the job control language
data definition (DD) statement that defines the data set being created or processed.
Source: The DDNAME operand can be supplied in the DeB macro instruction or by
the problem program before an OPEN macro instruction is issued to open the data set.
DSORG= {IS}
{ISU}
The DSORG operand specifies the organization of the data set and if the data set
contains any location-dependent information that would make it unmovable. The
following characters can be specified.
IS
ISU -

Specifies an indexed sequential data set organization.
Specifies an indexed sequential data set that contains
location-dependent information. ISU can be specified only when an
ISAM data set is created.

Source: The DSORG operand must be specified in the DCB macro instruction. When
an ISAM data set is created, DSORG=IS or ISU must also be specified in the DeB
subparameter of the corresponding DD statement.
EODAD= relexp
The EO DAD operand specifies the address of the routine to be given control
when the end of an input data set is reached. For ISAM, this operand would
apply only to scan mode when a data set is open for an input operation. Control
is given to this routine when a GET macro instruction is issued and there are no
more input records to retrieve. When your EODAD routine receives control,
register contents (except for register 15) will be the same as they were when the
last GET macro instruction was issued. Register 15 will contain a hexadecimal 4
if you have processed an end-of-volume tape label; otherwise, register 15 will
contain a O.
Source: The EODAD operand can be supplied in the DeB macro instruction or by the
problem program before the end of the data set is reached.
EXLST= relexp
The EXLST operand specifies the address of the problem program exit list. The
EXLST operand is required only if the problem program uses the data control
block exit routine for additional processing or if the DCB ABEND exit is used for
ABEND condition analysis.
Refer to Appendix D of this publication for the format and requirements for exit
list processing. For additional information about exit list processing, refer to
OS/VS Data Management Services Guide.
Source: The EXLST operand can be supplied in the DCB macro instruction or by the
problem program before the associated exit is required.
86 OS/VS Data Management Macro Instructions

DCB -QISAM
KEYLEN= absexp (maximum value is 255)
The KEYLEN operand specifies the length, in bytes, of the key associated with
each record in an indexed sequential data set. When blocked records are used,
the key of the last record in the block (highest key) is used to identify the block.
However, each logical record within the block has its own identifying key which
ISAM uses to access a given logical record.
Source: When an ISAM data set is created the KEYLEN operand can be supplied in
the DCB macro instruction, in the DCB subparameter of a DD statement, or by the
problem program before completion of the data control block exit routine. When an
existing ISAM data set is processed, the KEYLEN operand must be omitted, allowing
the data set label to supply the key length value.
LRECL= absexp (maximum value is device-dependent)
The LRECL operand specifies the length, in bytes, for fixed-length records, or it
specifies the maximum length, in bytes, for variable-length records. The value
specified in the LRECL operand cannot exceed the value specified in the
BLKSIZE operand. When unblocked records are used and the relative key
position (as specified in the RKP operand) is zero, the value specified in the
LRECL operand should include only the data length (the key is not written as
part of the record when RKP=O).
The track capacity of the direct-access device being used must be considered if
maximum length logical records are being used. For fixed-length records, the
sum of the key length, data length, and device overhead plus 10 bytes (for ISAM
use) must not exceed the capacity of a single track on the direct-access device
being used. For variable-length records, the sum of the key length, data length,
device overhead, block-descriptor-word length, and record-descriptor-word
length plus 10 bytes (for ISAM use) must not exceed the capacity of a single
track on the direct-access device being used. Device capacity and device
overhead are described in Appendix C of this publication. For additional
information about device capacity and space allocation, refer to OS / VS Data
Management Services Guide.
Source: When an ISAM data set is created, the LRECL operand can be supplied in the
DCB macro instruction, in the DCB subparameter of a DD statement, or by the
problem program before completion of the data control block exit routine. When an
existing ISAM data set is processed, the LRECL operand must be omitted, allowing the
data set label to supply the value.
MACRF= {(PM)
{(PL)
{(GM[,S
{(GL[,S

[K]D
[I]

}
}
}

[K]][,PUD
[1]

The MACRF operand specifies the type of macro instructions, the transmittal mode,
and type of search to be used with the data set being processed. The operand can
be coded in any of the combinations shown above; the following describes the
characters that can be coded.

Macro Instruction Descriptions 87

The following characters can be specified only when the data set is being created
(load mode) or additional records are being added to the end of the data set
(resume load).
PL -

Specifies that PUT macro instructions "are used in the locate transmittal
mode; the system provides the problem program with the address of a
buffer containing the data to be written into the data set.

PM -

Specifies that PUT macro instructions are used in the move transmittal
mode; the system moves the data to be written from the problem
program work area to the buffer being used.

The following characters can be specified only when the data set is being processed
(scan mode) or when records in an ISAM data set are being updated in place.
GL -

Specifies that GET macro instructions are used in the locate transmittal
mode; the system provides the problem program with the address of a
buffer containing the logical record read.

GM -

Specifies that GET macro instructions are used in the move mode; .the
system moves the logical record from the buffer to the problem program
work area.

I

Specifies that actual device addresses (MBBCCHHR) are used to search
for a record (or the first record) to be read.

K

Specifies that a key or key class is used to search for a record (or the first
record) to be read.

PU

Specifies that PUTX macro instructions are used to return updated
records to the data set.

S

Specifies that SETL macro instructions are used to set the beginning
location for processing the data set.

Source: The MACRF operand must be coded in the DCB macro instruction.
NTM= absexp (maximum value is 99)
The NTM operand specifies the number of tracks to be created in a cylinder index
before a higher-level index is created. If the cylinder index exceeds this number, a
master index is created by the system; if a master index exceeds this number, the
next level of master index is created. The system creates up to three levels of
master indexes. The NTM operand is ignored unless the master index option
(OPTCD=M) is selected.
Source: When an ISAM data set is being created, the NTM operand can be supplied in
the DCB macro instruction, in the DCB subparameter of a DD statement, or by the
problem program before completion of the data control block exit routine. When an
ISAM data set is being processed, master index information is supplied to the data
control block from the data set label, and the NTM operand must be omitted.

88 OS/VS Data Management Macro Instructions

DCB -

QISAM

OPTCD= (I)[L)[M)[R)[U)[W)(Y)
The OPTCD operand specifies the optional services performed by the system when
an ISAM data set is being created. The following describes the characters that can
be specified; these characters can be specified in any order, and no commas are
required between characters.
I

Specifies that the system uses the independent overflow areas to contain
overflow records. Allocated independent overflow areas are not used
unless OPTCD=I is specified.

L

Specifies that the data set will contain records flagged for deletion. A
record is flagged for deletion by placing a hexadecimal value of 'FF' in
the first data byte. Records flagged for deletion remain in the data set
until the space is required for another record to be added to the track.
Records flagged for deletion are ignored during sequential retrieval of the
ISAM data set (QISAM, scan mode). This option cannot be specified for
blocked fixed-length records if the relative key position is zero (RKP=O),
or it cannot be specified for variable-length records if the relative key
position is four (RKP=4).
When an IS AM data set is being processed with BISAM, a record with a
duplicate key can be added to the data set (WRITE KN macro
instruction, only when OPTCD=L has been specified and the original
record (the one whose key is being duplicated) has been flagged for
deletion.

M

Specifies that the system creates and maintains a master index(es)
according to the number of tracks specified in the NTM operand.

R

Specifies that the system places reorganization statistics in· the
DCBRORGl, DCBRORG2, and DCBRORG3 fields of the data control
block. The problem program can analyze these statistics to determine
when to reorganize the data set. If· the OPTCD operand is omitted
completely, the reorganization statistics are automatically provided.
However, if the OPTCD operand is supplied, OPTCD=R must be
specified to obtain the reorganization statistics.

U

Specifies that the system accumulates track index entries in storage and
writes them as a group for each .track of the track index. OPTCD=U can
be specified only for fixed-length records. The entries are written in
fixed-length unblocked format.

W

Specifies that the system performs a validity check on each record
written.

Y

Specifies that the system uses the cylinder overflow area(s) to contain
overflow records. If OPTCD=Y is specified, the CYLOFL operand
specifies the number of tracks to be used for the cylinder overflow area.
The reserved cylinder overflow area is not used unless OPTCD= Y is
specified.

Source: When an ISAM data set is created, the OPTCD operand can be supplied in
the DCB macro instruction, in the DCB subparameter of a DD statement, or by the
problem program before an OPEN macro instruction is 'issued to open the data set.
However, all optional services must be requested from the same source. When an
Macro Instruction Descriptions 89

existing ISAM data set is processed, the optional service information is supplied to the
data control block from the dataset label, and the OPTCD operand must be omitted.
{V[B]}
RECFM= {F[B]}
The RECFM operand specifies the format and characteristics of the records in the
data set. If the RECFM operand is omitted, variable-length records (unblocked)
are assumed. The following describes the characters that can be specified.
B

Specifies that the data set contains blocked records.

F

Specifies that the data set contains fixed-length records.

V

Specifies that the data set contains variable-length records.

Source: When an ISAM data set is created, the RECFM operand can be supplied in
the DeB macro instruction, in the DeB subparameter of a DD statement, or by the
problem program before an OPEN macro instruction is issued to open the data set.
When an existing ISAM data set is processed, the record format information is supplied
by the data set label, and the RECFM operand must be omitted.
RKP= absexp
The RKP operand specifies the relative position of the first byte of the key within
each logical record. For example, if RKP=9 is specified, the key starts in the tenth
byte of the record. The delete option (OPTCD=L) cannot be specified if the
relative key position is the first byte of a blocked fixed-length record or the fifth
byte of a variable-length record. If the RKP operand is omitted, RKP=O is
assumed.
If unblocked fixed-length records are used, the key is not written as a part of the
data record, and the delete option can be specified. If blocked fixed-length records

are used, the key is written as part of each data record; either RKP must be greater
than zero or the delete option must not be used.
If variable-length records (blocked or unblocked) are used, RKP must be four or

greater if the delete option is not specified; if the delete option is specified, RKP
must be specified as five or greater. The four additional bytes allow for the block
descriptor word in variable-length records.
Source: When an ISAM data set is created, the RKP operand can be supplied in the
DeB macro instruction, in the DeB sub parameter of a DD statement, or by the
problem program before completion of the data control block exit routine. When an
existing ISAM data set is processed, the RKP information is supplied by the data set
label and the RKP operand must be omitted.
SYNAD= relexp
The SYNAD operand specifies the address of the error analysis routine given
control when an uncorrectable input/output error occurs. The contents of the
registers when the error analysis routine is given control are described in Appendix
A of this publication.
The error analysis routine must not use the save area pointed to by register 13,
because this area is used by the system. The system does not restore registers when
it regains control from the error analysis routine. The error analysis routine can
issue a RETURN macro instruction which uses the address in register 14 to return
control to the system. When control is returned in this manner, the system returns

90 OS/VS Data Management Macro Instructions

DCB -QISAM

control to the problem program and proceeds as though no error had been
encountered; if the error analysis routine continues processing, the results may be
unpredictable.
For ISAM data sets, if the error analysis routine receives control from the Close
routine, bit 3 of the IOBFLAG 1 field in the input/output block is set to one. In
this case, the error analysis routine must not issue a CLOSE macro instruction. To
complete close processing, the error analysis routine must return control to the
Close routine with a branch to the address in register 14.
Source: The SYNAD operand can be supplied in the DCB macro instruction or by the
problem program. The problem program can also change the error1analysis routine
address at any time.

Macro Instruction Descriptions 91

DCB-QSAM

DCB -

Construct a Data Control Block (QSAM)
The data control block for the queued sequential access method (QSAM) is constructed
during assembly of the problem program. The DCB macro instruction must not be
coded within the first 16 bytes of a control section (CSECT). The DSORG and
MACRF operands must be coded in the DCB macro instruction, but the other DCB
operands can be supplied, to the data control block, from other sources. Each DCB
operand description contains a heading, "Source." The information under this heading
describes the sources from which the operand can be supplied.
Before a DCB macro instruction for creating or processing a QSAM data set is coded,
the following characteristics of QSAM data sets should be considered.
•

All record formats can be processed.

•

Automatic blocking and deblocking of records is provided.

•

Automatic buffer control is provided; this function fills input buffers when they are
empty and writes output buffers when they are full.
A logical record interface is provided; a GET macro instruction retrieves the next
sequential logical record from the input buffer, and a PUT macro instruction places
the next sequential logical record in the output buffer.

•

I/O operations are synchronized automatically.

•

Four transmittal modes (move, locate, data, and substitute) are provided. These
transmittal modes provide flexibility in buffer management and data movement
between buffers.

•

Keys for direct-access device records cannot be read or written using QSAM.
Specifying the DEVD operand in the DCB macro instruction can cause the program
to be device-dependent.

These characteristics of queued sequential access method data sets are described in
more detail in OS/VS Data Management Services Guide.
The following describes the operands that can be specified in the DCB macro
instruction for a QSAM data set.

{F}
BFALN= {D}
The BFALN operand specifies the boundary alignment of each buffer in the buffer
pool when the buffer pool is constructed automatically or by a GETPOOL macro
instruction. If the BFALN operand is omitted, the system provides double word
alignment for each buffer.
If the data set being created or processed contains ASCII tape records with a block

prefix, the block prefix is entered at the beginning of the buffer, and data alignment
depends on the length of the block prefix. For a description of how to specify the
block prefix length, refer to the BUFOFF operand.

Macro Instruction Descriptions 93

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

The following describes the characters that can be specified.
F

Specifies that each buffer is on a fullword boundary that is not also a
double word boundary.

D

Specifies that each buffer is on a double word boundary.

When exchange buffering (BFTEK=E) is specified and the records are in blocked
fixed-length format, each buffer segment is aligned as specified in the BFALN
operand.
If the BUILD macro instruction is used to construct the buffer pool, the problem

program must control buffer alignment.
Source: The BFALN operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before completion
of the data control block exit routine. If both the BFALN and BFTEK operands are
specified, they must be supplied from the same source.
lSI
BFTEK= lEI
IAI

The BFTEK operand specifies the buffering technique that is used when the QSAM
data set is created or processed. If the BFTEK operand is omitted, simple buffering
is assumed. The following describes the characters that can be specified.
S

Specifies that simple buffering is used.

E

Specifies that exchange buffering is used. Exchange buffering can be
used only with record formats (RECFM operand) F, FB, FBS, or FS; the
track-overflow feature cannot be used with exchange buffering. If
exchange buffering is used with ASCII tape records, the BUFOFF
operand must be zero (no block prefix).

A

Specifies that a logical record interface is used for variable-length
spanned records. When BFTEK=A is specified, the Open routine
acquires a record area equal to the length specified in the LRECL field
plus 32 additional bytes for control information. When a logical record
interface is requested, the system uses the simple buffering technique.

To use the simple or exchange buffering technique efficiently, the user should be
familiar with the four transmittal modes for QSAM and the buffering techniques as
described in OS/VS Data Management Services Guide.
Source: The BFTEK operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before completion
of the data control block exit routine. If both the BFTEK and BFALN operands are
specified, they must be supplied from the same source.
BLKSIZE= absexp (maximum value is 32,760)

The BLKSIZE operand specifies the length, in bytes, of a data block for
fixed-length records, or it specifies the maximum length, in bytes, of a data block
for variable-length or undefined-length records.

94 OS/VS Data Management Macro Instructions

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

DCB-QSAM
The actual value that can be specified in the BLKSIZE operand depends on the
device type and record format being used. Device capacity is shown in Appendix C
of this publication. For additional information about device capacity, refer to
OSjVS Data Management Services Guide. For direct-access devices when the
track-overflow feature is used or variable-length spanned records are being
processed, the BLKSIZE operand can be up to the maximum value. For other
record formats used with direct-access devices, the value specified in the BLKSIZE
operand cannot exceed the capacity of a single track.
Since QSAM provides a logical record interface, the device capacities shown in
Appendix C also apply to a maximum length logical record. One exception to the
device capacity for a logical record is the size of variable-length spanned records.
Their length can exceed the value specified in the BLKSIZE operand (see the
description of the LRECL operand).
If fixed-length records are used for a SYSOUT data set, the value specified in the

BLKSIZE operand must be an integral multiple of the value specified in the LRECL
operand; otherwise, the system will adjust the blocksize downward to the nearest
multiple. If the records are unblocked fixed-length records, the value specified in
the BLKSIZE operand must equal the value specified in the LRECL operand if the
LRECL operand is specified.
If variable-length records are used, the value specified in the BLKSIZE operand

must include the data length (up to 32,756 bytes) plus four bytes required for the
block descriptor word (BDW). For format-D variable-length records, the minimum
blocksize is 18 bytes and the maximum is 2048 bytes.
If ASCII tape records with a block prefix are processed, the value specified in the

BLKSIZE operand must also include the length of the block prefix.
If variable-length spanned records are used, the value specified in the BLKSIZE

operand can be the best one for the device being used or the processing being done.
When unit record devices (card or printer) are used, the system assumes records are
unblocked; the value specified for the BLKSIZE operand is equivalent to one print
line or one card. A logical record that spans several blocks is written one segment
at a time.
If undefined-length records are used, the problem program can insert the actual
I

record length into the DCBLRECL field. See the description of the LRECL
operand.

Source: The BLKSIZE operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, by the problem program before completion of
the data control block exit routine, or by the data set label of an existing data set.
BUFCB = relexp
The BUFCB operand specifies the address of the buffer pool control block
constructed by a BUILD or BUILDRCD macro instruction.
If the buffer pool is constructed automatically or by a GETPOOL macro

instruction, the system places the address of the buffer pool control block into the
data control block, and the BUFCB operand should be omitted.

Macro Instruction Descriptions 95

Source: The BUFCB operand can be supplied in the DCB macro instruction or by the
problem program before completion of the data control block exit routine.
BUFL= absexp (maximum value is 32,760)
The BUFL operand specifies the length, in bytes, of each buffer in the buffer pool
when the buffer pool is acquired automatically. The system acquires buffers with a
length equal to the value specified in the BLKSIZE operand if the BUFL operand is
omitted; if the problem program requires larger buffers, the BUFL operand is
required. If the data set is for card image mode, the BUFL operand is specified as
160 bytes. The description of the DEVD operand contains a description of card
image mode.
If the data set contains ASCII tape records with a block prefix, the value specified

in the BUFL operand must also include the length of the block prefix.
If the buffer pool is constructed by a BUILD, BUILDRCD, or GETPOOL macro

instruction, the BUFL operand is not required.
Source: The BUFL operand can be supplied in the DCB macro instruction, in the DCB
subparameter of a DD statement, or by the problem program before completion of the
data control block exit routine.
BUFNO= absexp (maximum value is 255)
The BUFNO operand specifies the number of buffers in the buffer pool constructed
by a BUILD or BUILDRCD macro instruction, or it specifies the number of buffers
to be acquired automatically. If the BUFNO operand is omitted and the buffers are
acquired automatically, the system acquires three buffers if the device is a 2540
card read punch or two buffers for any other device type.
If the buffer pool is constructed by a GETPOOL macro instruction, the BUFNO

operand is not required.
Source: The BUFNO operand can be supplied in the DCB macro instruction, in the
DCB sub parameter of a DD statement, or by the problem program before completion
of the data control block exit routine.
{ absexp}
BUFOFF= {L}

The BUFOFF operand specifies the length, in bytes, of the block prefix used with
ASCII tape data sets. When QSAM is used to read ASCII tape records, only the
data portion (or its address) is passed to the problem program; the block prefix is
not available to the problem program. Block prefixes (except BUFOFF=L) cannot
be included in QSAM output records. The following can be specified in the
BUFOFF operand:
absexp -

Specifies the length, in bytes, of the block prefix. This value can be
from 0 to 99 for an input data set. The value must be 0 for writing
an output data set with fixed-length or undefined-length records.

L

Specifies that the block prefix is 4 bytes long and contains the block
length. BUFOFF=L is used when format-D records (ASCII) are
processed. QSAM uses the four bytes as a block-descriptor word
(BDW).

96 OS/VS Data Management Macro Instructions

DeB-QSAM
Source: The BUFOFF operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program before an OPEN
macro instruction is issued to open the data set.
DDNAME= symbol

The DDNAME operand specifies the name used to identify the job control
language data definition (DD) statement that defines the data set being created or
processed.
Source: The DDNAME operand can be supplied in the DCB macro instruction or by

the problem program before an OPEN macro instruction is issued to open the data set.
DEVD=

{DA
{TA (,DEN=

to)]
{l}
{2}
{3}

(,TRTeH=

}
{e}] }

{E}
{T}
{ET}
}

{PT (,eODE= {A}]
{B}
{e}
{F}
{I}
{N}
{T}

{PR (,PRTSP=

to})
{I}
{2}
{3}

{PC (,MODE= (e)
(E)

(R)(,STACK=

{RD (,MODE= (e)
[E)

(O)(,STAeK=
[R)

{I})(,FUNe= {I
{2}
{P
{PWlXT)
{R
{RP(D)
{RW(T)
{RWP(XT)(D)
{WIT)

}n

{I})(,FUNe= {I
{2}
{P
{PW(XT)
{R
{RP(D)
{RW(T)
{RWP[XT)[D)
{WIT)

}n

}
}
}
}
}
}
}

}
}
}
}
}
}
}

The DEVD operand specifies the device type on which the data set can or does

reside. The device types above are shown with the optional operand(s) that can be
coded when a particular device is used. The devices are listed in order of
device-independence. For example, if DEVD=DA is coded in a DCB macro
instruction (or the DEVD operand is omitted, which causes a default to DA), the
Macro Instruction Descriptions 97

-

Revised December 15, 1972
By TNL GN26-0748

data control block constructed during assembly could later be used for any of the
other devices, but if DEVD=RD is coded, the data control block can be used only
with a card reader or card reader punch. Unless you are certain that device
interchangeability is not required, you should either code DEVD=DA or omit the
operand and allow it to default to DA.
If system input is directed to· an intermediate storage device, the DEVD operand is

omitted, and the job control language for the problem program must designate the
system input to be used. Similarly, if system output is directed to an intermediate
storage device, the DEVD operand is omitted, and the job control language for the
problem program must designate the system output to be used.
The following describes the device type and the optional operands that can be
specified for each device type.
DA -

Specifies that the data control block can be used for a direct-access device
(or any of the other device types described following DA).

TA -

Specifies that the data control block can be used for a magnetic tape data
set (or any of the other device types described following TA). If TA is
coded, the following optional operands can be coded:
{OJ

HJ
DEN= {2J
{3J

The DEN operand specifies the recording density in the number of
bits-per-inch per track as shown in the following chart.
DEN

o
1
2
3

7-Track Tape 9-Track Tape 9-Track Tape
9-Track Tape
(Phase Encoded) Dual Density
200
556
800

800
1600

800 (NRZI)
1600 (PE)

NRZI is for non-return-to-zero-inverse mode
PE is for phase encoded mode
Specifying DEN =0 for a 7 track, 3420 tape will result in a 556 bits-per-inch
recording density, but corresponding messages and tape labels will indicate a
200 bits-per-inch recording density.
If the DEN operand is not supplied by any source, the highest applicable

density is assumed.
TRTCH= {CJ
{EJ
{ETJ

tTJ
The TRTCH operand specifies the recording technique for 7-track tape. One
of the above character combinations can be coded. If the TRTCH operand is

98 OS/VS Data Management Macro Instructions

DCB-QSAM
omitted, odd parity with no translation or conversion is assumed. The following
describes the characters that can be specified:

PT -

C

Specifies that the data-conversion feature is used with odd parity
and no translation.

E

Specifies even parity with no translation or conversion.

ET

Specifies even parity with BCDIC to EBCDIC translation required,
but no data-conversion feature.

T

Specifies that BCDIC to EBCDIC translation is required with odd
parity and no data-conversion feature.

Specifies that the data control block is used for a paper tape device (or any of
the other devices following PT). If PT is coded, the following optional
operand can be coded.
CODE=

{AI
{DI
{CI
{FI

tIl
{NI

ITI
The CODE operand specifies the code in which the data was punched. The
system converts these codes to EBCDIC code. If the CODE operand is not
supplied by any source, CODE=I is assumed. The following describes the
characters that can be specified.

PR -

A

Specifies 8-track tape in ASCII code.

D

Specifies Burroughs 7-track tape.

C

Specifies National Cash Register 8-track tape.

F

Specifies Friden 8-track tape.

I

Specifies IBM BCD perforated tape and transmission code with
8-tracks.

N

Specifies that no conversion required.

T

Specifies Teletype I S-track tape.

Specifies that the data control block is used for an on-line printer (or any of
the other device types following PR). If PR is coded, the following optional
operand can be coded.
PRTSP= IOI

ttl

121
131
The PRTSP operand specifies the line spacing on the printer. This operand is
not valid if the RECFM operand specifies either machine (RECFM=M) or
ANSI (RECFM=A) control characters. If the PRTSP operand is not specified
1.

Trademark of Teletype Corporation.

Macro Instruction Descriptions 99

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

from any source, one is assumed. The following describes the characters that can be
specified.

o
1
2
3
PC -

Specifies
Specifies
Specifies
Specifies

that spacing is suppressed (no space).
single-spacing.
double-spacing (one blank line between printed lines).
triple-spacing (two blank lines between printed lines).

Specifies that the data control block is used for a card punch (or any of the
other device types following PC). If PC is coded, the following optional
operands can be specified.
MODE= (CUR]
(E]

The MODE operand specifies the mode of operation for the card punch. The
following describes the characters that can be specified. If the MODE operand
is omitted, E is assumed.
C

Specifies that the cards are punched in card image mode. In card
image mode, the 12 rows in each card column are punched from
two consecutive bytes of virtual storage. Rows 12 through 3 are
punched from the low-order 6 bits of one byte, and rows 4-9 are
punched from the 6 low-order bits of the following byte.

E

Specifies that cards are punched in EBCDIC code.

R

Specifies that the program runs in read-column-eliminate mode
(3505 card reader or 3525 card punch, read feature).

Note: If the MODE operand is specified in the DCB subparameter of a DD
statement, either C or E must be specified if R is specified.
STACK= U}
{2}

The STACK operand specifies the stacker bin into which the card is placed
after punching is completed. If this operand is omitted, stacker number 1 is
used. The following describes the characters that can be specified:
1

Specifies stacker number 1.

2

Specifies stacker number 2.

FUNC=

{I
}
{P
}
{PW(XT]}
{R
}
{RP(D] }
{RW(T] }
{RWP(XT](D ]}
{W(T] }

I The FUNC operand defines the type of 3525 card punch data sets that are
used. If the FUNC operand is omitted from all sources, a data set opened for
input defaults to read only, and a data set opened for output defaults to punch
only. The following describes the characters that can be specified in the FUNC
operand.

100 OS/VS Data Management Macro Instructions

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

DCB-QSAM
D

Specifies that the data protection option is to be used. The data
protection option prevents punching information into card columns
that already contain data. When the data protection option is used,
an 80-byte data protection image (DPI) must have been previously
stored in SYS1.1MAGELIB. Data protection applies only to the
output punch portion of a read and punch or read, punch, and print
operation.

I

Specifies that the data in the data set is to be punched into cards
and printed on the cards; the first 64 characters are printed on line
1 of the card and the remaining 16 characters are printed on line 3.

P

Specifies that the data set is for punching cards. See the description
of the character X for associated punch and print data sets.

R

Specifies that the data set is for reading cards.

T

Specifies that the two-line option is used. The two-line print
option allows two lines of data to be printed on the card (lines 1
and 3). If T is not specified, the multiline print option is used; this
allows printing on all 25 possible print lines. In either case, the data
printed may be the same as the data punched in the card, or it may
be entirely different data.

W

Specifies that the data set is for printing. See the description of the
character X for associated punch and print data sets.

X

Specifies that an associated data set is opened for output for both
punching and printing. Coding the character X is used to
distinguish the 3525 printer output data set from the 3525 punch
output data set.

Note: If data protection is specified, the data protection image (DPI) must be
specified in the FCB subparameter of the DD statement for the data set.
RD-

Specifies that the data control block is used with a card reader or card read
punch. If RD is specified, the data control block cannot be used with any
other device type. When RD is coded, the following optional operands can be
specified.
MODE= IC)(O]
IE)(R]
The MODE operand specifies the mode of operation for the card reader. The
following describes the characters that can be specified.
C

Specifies that the cards to be read are in card image mode. In card
image mode, the 12 rows of each card column are read into two
consecutive bytes of virtual storage. Rows 12 through 3 are read
into the low-order 6 bits of one byte, and rows 4 through 9 are
read into the low-order 6 bits of the following byte.

E

Specifies that the cards to be read contain data in EBCDIC code.

o

Specifies that the program runs in optical mark read mode (3505
card reader).
Macro Instruction Descriptions 101

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

R

Specifies that the program runs in read-column-eliminate mode
(3505 card reader and 3525 card punch, read feature).

Note: If the MODE operand for a 3505 or 3525 is specified in the DeB
subparameter of a DD statement, either C or E must be specified if R or 0 is
specified.
STACK= {II
{2I

The STACK operand specifies the stacker bin into which the card is placed
after reading is completed. If this operand is omitted, stacker number 1 is
used. The following describes the characters that can be specified.
1
Specifies stacker number 1.
2
Specifies stacker number 2.
FUNC=

{I
I
{P
I
{PW[XT]}
{R
I
{RP[D] I
{RW[T] I
{RWP[XT][D]}
{W[T] I

The FUNC operand defines the type of 3525 card punch data sets that are
used. If the FUNC operand is omitted from all sources, a data set opened for
input defaults to read only, and a data set opened for output defaults to punch
only. The following describes the characters that can be specified in the FUNC
operand.
D

Specifies that the data protection option is to be used. The data
protection option prevents punching information into card columns
that already contain data. When the data protection option is used,
an 80-byte data protection image (DPI) must have been previously
stored in SYS 1.1MAGELIB. Data protection applies only to the
output punch portion of a read and punch or read, punch, and print
operation.

I

Specifies that the data in the data set is to be punched into cards
and printed on the cards; the first 64 characters are printed on line
1 of the card and the remaining 16 characters are printed on line 3.

P

Specifies that the data set is for punching cards. See the description
of the character X for associated punch and print data sets.

R

Specifies that the data set is for reading cards.

T

Specifies that the two-line option is used. The two-line print
option allows two lines of data to be printed on the card (lines 1
and 3). If T is not specified, the multiline print option is used; this
allows printing on all 25 possible print lines. In either case, the data
printed may be the same as the data punched in the card, or it may
be entirely different data.

W

Specifies that the data set is for printing. See the description of the
character X for associated punch and print data sets.

102 OS/VS Data Management Macro Instructions

Page of GC26-3793-1
Revised Decem ber 15, 1972
By TNL GN26-0748

DCB-QSAM
X

-Specifies that an associated data set is opened for output for both
punching and printing. Coding the character X is used to
distinguish the 3525 printer output data set from the 3525 punch
output data set.

Note: If data protection is specified, the data protection image (DPI) must be
specified in the FCB subparameter of the DD statement for the data set.
Source: The DEVD operand can be supplied only in the DCB macro instruction.
However, the optional operands can be supplied in the DCB macro instruction, the
DCB subparameter of a DD statement, or by the problem program before
completion of the data control block exit routine.
DSORG= {PSI
{PSU}
The DSORG operand specifies the organization of the data set and if the data set
contains any location-dependent information that would make it unmovable. The
following can be specified in the DSORG operand:
PS

Specifies a physical sequential data set.

PSU

Specifies a physical sequential data set that contains location-dependent
information.

Source: The DSORG operand must be coded in the DCB macro instruction.
EODAD= relexp
The EODAD operand specifies the address of the routine given control when the
end of an input data set is reached. Control is given to this routine when a GET
macro instruction is issued and there are no additional records to be retrieved.
When your EODAD routine receives control, register contents (except for register
15) will be the same as they were when the last GET macro instruction was issued.
Register 15 will contain a hexadecimal 4 if you have processed an end-of-volume
tape label; otherwise, register 15 will contain a O. If the record format is
RECFM=FS or FBS the end-of-data condition is sensed when file mark is read or
if more data is requested after reading a truncated block. A GET macro instruction
should not be issued after an end-of-data condition is sensed. If the end of the
data set has been reached but no EODAD address has been supplied to the data
control block, the task is abnormally terminated.
Source: The EODAD operand can be supplied in the DCB macro instruction or by the
problem program before the end of the data set has been reached.
EROPT =

{ACC}
{SKP}
{ABE}

The EROPT operand specifies the action taken by the system when an
uncorrectable input/output data validity error occurs and no error analysis
(SYNAD) routine address has been provided, or it specifies the action taken by the
system after the error analysis routine has returned control to the system with a
RETURN macro instruction. The specified action is taken for input operations or
for output operations to a printer.

Macro Instruction Descriptions 103

Uncorrectable input/output errors resulting from channel operations or
direct-access operations that make the next record inaccessible cause the task to be
abnormally terminated regardless of the action specified in the EROPT operand.
ACC -

Specifies that the problem program accepts the block causing the error.
This action can be specified when a data set is opened for INPUT,
RDBACK, UPDAT, or OUTPUT (OUTPUT applies to printer data sets
only).

SKP -

Specifies that the block that caused the error is skipped. Specifying
SKP also causes the buffer associated with the data block to be
released. This action can be specified when a data set is opened for
INPUT, RDBACK, or UPDAT.

ABE -

Specifies that the error results in the abnormal termination of the task.
This action can be specified when the data set is opened for INPUT,
OUTPUT, RDBACK, or UPDAT.

If the EROPT operand is omitted, the ABE action is assumed.

Source: The EROPT operand can be specified in the DCB macro instruction, in the
DCB subparameter of a DD statement, or by the problem program at any time. The
problem program can also change the action specified at any time.
EXLST= relexp
The EXLST operand specifies the address of the problem program exit list. The
EXLST operand is required if the problem program requires additional processing
for user labels, user totaling, data control block exit routine, end-of-volume, block
count exits, to define a forms control buffer (FCB) image, or to use the DCB
ABEND exit for ABEND condition analysis.
Refer to Appendix D of this publication for the format and requirements of exit list
processing. For additional information about exit routine processing, refer to
OS / VS Data Management Services Guide.
Source: The EXLST operand can be supplied in the DCB macro instruction or by the
problem program any time before the exit is required by the problem program.
LRECL=

{absexp} {X}

The LRECL operand specifies the length, in bytes, for fixed-length logical records,
or it specifies the maximum length, in bytes for variable-length or
undefined-length (output only) logical records. The value specified in the LRECL
operand cannot exceed the value specified in the BLKSIZE operand except when
variable-length spanned records are used.
For fixed-length records that are unblocked, the value specified in theLRECL
operand must be equal to the value specified in the BLKSIZE operand. For
blocked fixed-length records, the value specified in the LRECL operand must be
evenly divisible into the value specified in the BLKSIZE operand.
For variable-length logical records, the value specified in the LRECL operand must
include the maximum data length (up to 32,752) plus four bytes for the
record-descriptor word (RDW).

104 OS/VS Data Management Macro Instructions

Page of GC26-3793-1
Added December 1 S, 1972
By TNL GN26-0748

DCB-QSAM
For undefined-length records, the problem program must insert the actual logical
record length into the DCBLRECL field before writing the record, or the maximum
length record will be written.
F or variable-length spanned records, the logical record length (LRECL) can exceed
the value specified in the BLKSIZE operand, and a variable-length spanned record
can exceed the maximum blocksize. When the logical record length exceeds the
maximum blocksize, the logical record length is specified as LRECL=X.

Macro Instruction Descriptions 104.1

DCB-QSAM
Source: The LRECL operand can be supplied in the DCB macro instruction, in the
DCB subparameter of a DD statement, by the problem program before completion of
the data control block exit routine, or by the data set label of an existing data set.
MACRF= HG {M} [CI)
{L }

{T }
{D }
HP

{M} [CI) ,P {M} [CD}
{L}
{L }

{T }

{T}

{D }

{D}

HG {M} [CI)
{L }

{T }
{D}
The MACRF operand specifies the type of macro instructions (GET, PUT or
PUTX, CNTRL, RELSE, and TRUNC) and the transmittal modes (move, locate,
data, and substitute) that are used with the data set being created or processed.
The operand can be coded in any of the combinations shown above; the following
describes the characters that can be coded:
C

Specifies that the CNTRL macro instruction is used with the data set. If
the CNTRL macro instruction is specified, the data set should be for a
card reader (stacker selection) or printer (carriage and spacing control).
The CNTRL option can be specified with GET in the move mode only.

D

Specifies that the data transmittal mode is used (only the data portion of
a record is moved to or from the work area). Data mode is used only
with variable-length spanned records.

G

Specifies that GET macro instructions are used. Specifying G also
provides the routines that allow the problem program to issue RELSE
macro instructions.

L

Specifies that the locate transmittal mode is used; the system provides the
address of the buffer containing the data.

M

Specifies that the move transmittal mode is used; the system moves the
data from the buffer to the work area in the problem program.

P

Specifies that PUT or PUTX macro instructions are used. Specifying P
also provides the routines that allow the problem program to issue
TR UN C macro instructions.

T

Specifies that the substitute transmittal mode is used; the system
substitutes a buffer for a work area contained in the problem program.

Note: For data sets on paper tape that are processed by QSAM, only MACRF=(GM)
can be specified.
Source: The MACRF operand can be supplied only in the DCB macro instruction.

Macro Instruction Descriptions 105 "

P~ge of GC26-3793-1
. Revised December 15, 1972
By TNL GN26-0748

{BI
{TI
{VICU
{CIT][BU
OPTCD= {HIZ)[BU
{W[C)[T)[BU
{ZIC)[T)[BU
{QIC)[B)[{TIU
{Zl
The OPTeD operand specifies the optional services used with the QSAM data set.
Two of the optional services, OPTCD=B and OPTCD=H, cannot be specified in
the DCB macro instruction. They are requested in the DCB subparameter of a DD
statement. Since all optional services codes must be supplied by the same source,
the OPTCD operand must be omitted from the DCB macro instruction if either of
these options is requested in a DD statement. The following describes the
characters that can be specified.
C

Requests that chained scheduling be used. OPTCD=C cannot be
specified when either BFTEK=A or BFTEK=R is specified for the same
data control block. Also, chained scheduling cannot be specified for
associated data sets or printing on a 3525. OS/VS supports chained
scheduling in nonpageable storage only. If chained scheduling is
requested in pageable storage, the request is ignored and normal
scheduling is substituted.

Q

Requests that ASCII tape records in an input data set be converted to
EBCDIC code when the input record has been read, or an output record
in EBCDIC code be converted to ASCII code before the record is
written.

T

Requests the user totaling facility. If this facility is requested, the EXLST
operand should specify the address of an exit list to be used.

V

Specified only for a printer with the universal-character-set feature. This
option unblocks data checks (permits them to be recognized as errors)
and allows analysis by the appropriate error analysis routine (SYNAD
routine). If the V option is omitted, data checks are not recognized as
errors.

W
Z

-

Specifies that the system performs a validity check for each record
written on the direct-access device being used.
For magnetic tape, input only, the Z option requests the system to
shorten its normal error recovery procedure to consider a data check as a
permanent I/O error after five unsuccessful attempts to read a record.
This option is available only if it is selected when the operating system is
generated. OPTCD=Z is used when a tape is known to contain errors
and there is no need to process every record. The error analysis routine
(SYNAD) should keep a count of permanent errors and terminate
processing if the number becomes excessive.
For direct-access devices only, the Z option requests the system to use
the search direct option to accelerate the input operations for a data set.
OPTCD=Z cannot be specified when RECFM=VT, FS, FBT, VS, or
VBS.

106 OS /VS Data Management Macro Instructions

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

DCB-QSAM

Note: The following describes the optional services that can be specified in the DCB
subparameter of a DD statement. If either of these options is requested, the complete
OPTCD operand must be supplied in the DD statement.
If OPTCD=B is specified in the DCB subparameter of a DD statement, it

B-

forces the end-of-volumo/(EOV) routine to disregard the end-:-of-file
recognition for magnetic tape. When this occurs, the EOV routine uses the
number of volume serial numbers to determine end of file.
H -

If OPTCD=H is specified in the DCB subparameter of a DD statement, it

specifies that the DOS/OS interchange feature is being used with the data set.
RECFM=

tu

(T

tv

)
(B
)
(S
)
(T
(BS )
(BT )
(ST )
(BST)

{D

(B

{F

(B
(S
(T
(BS
(BT

[Al)
(M)

(Al)
(M)

(Al)

(Al)
(M)

The RECFM operand specifies the record format and characteristics of the data set
being created or processed. All record formats can be used in QSAM. The
following describes the characters that can be specified.
A

Specifies that the records in the data set contain American National
Standards Institute (ANSI) control characters. Refer to Appendix E for a
description of control characters.

B

Specifies that the data set contains blocked records.

D

Specifies that the data set contains variable-length ASCII tape records.
See OPTCD=Q and the BUFOFF operand for a description of how to
specify ASCII data sets.

F

Specifies that the data set. contains fixed-length records.

M

Specifies that the records in the data set contain machine code control
characters. Refer to Appendix E for a description of control characters.
RECFM=M cannot be used with ASCII data sets.

S

For fixed-length records, S specifies that the records are written as
standard blocks; the data set does not contain any truncated blocks or
unfilled tracks, with the exception of the last block or track in the data
set.
For variable-length records, S specifies that a record can span more than
one block. If spanned records are used, exchange buffering (BFTEK=E)
cannot be specified.
Macro Instruction Descriptions 107

T

Specifies that the track-overflow feature is used with the data set. The
track-overflow feature allows a record to be written partially on one
track and the remainder of the record on the following track (if required).
Chained scheduling (OPTCD=C) and exchange buffering (BFTEK=E)
cannot be used if the track-overflow feature is used.

U

Specifies that the data set contains undefined-length records.

V

Specifies that the data set contains variable-length records.
Note: RECFM= V cannot be specified for a card reader data set or an
ASCII tape data set.

Source: The RECFM operand can be supplied in the DCB macro instruction, in the
DeB subparameter of a DD statement, by the problem program before completion of
the data control block exit routine, or by the data set label of an existing data set.
SYNAD= relexp
The SYNAD operand specifies the address of the error analysis routine given
control when an uncorrectable input/output error occurs. The contents of the
registers when the error analysis routine is given control are described in Appendix
A of this publication.
The error analysis routine must not use the save area pointed to by register 13,
because this area is used by the system. The system does not restore registers when
it regains control from the error analysis routine. The error analysis routine can
issue a RETURN macro instruction that uses the address in register 14 to return
control to the system.
If the error condition was the result of a data-validity error, the control program

takes the action specified in the EROPT operand; otherwise, the task is abnormally
terminated. The control program takes these actions when the SYNAD operand is
omitted or when the error analysis routine returns control.
Source: The SYNAD operand can be supplied in the DCB macro instruction or by the
problem program. The problem program can also change the error routine address at
any time.

108 OS/VS Data Management Macro Instructions

DeBD

DCBD - Provide Symbolic Reference to Data Control Blocks (BDAM, BISAM,
BPAM, BSAM, QISAM, and QSAM)
The DCBD macro instruction is used to generate a dummy control section that
provides symbolic names for the fields in one or more data control blocks. The names
and attributes of the fields appear as part of the description of each data control block
in Appendix F of this publication. Attributes of the symbolically named fields in the
dummy section are the same as the fields in the data control blocks, with the exception
of fields containing 3-byte addresses. The symbolically named fields containing 3-byte
addresses have length attributes of four and are aligned on fullword boundaries.
The name of the dummy control section generated by a DCBD macro instruction is
IHADCB. The use of any of the symbolic names provided by the dummy section must
be preceded by a USING instruction specifying IHADCB and a dummy section base
register (which contains the address of the actual data control block). The DCBD
macro instruction can only be issued once within any assembled module; however, the
resulting symbolic names can be used for any number of data control blocks by
changing the address in the dummy section base register. The DCBD macro instruction
can be coded at any point in a control section; if coded at any point other than at the
end of a control section; however, the control section must be resumed by coding a
CSECT instruction.
The DCBD macro instruction is written as follows:

DCBD

blank

[DSORG=«([B~ [, DA] [, IS] [, LR] [, PO] [, Ps] [as]])J
~DEVD=([DA] [,PC] [,PRJ [,PT] [,RD] [, TA] [,MR]B

DSORG=(~~

)
«BS][,DA][,IS)[,LR][,PO][,PS][,QS) )

The DSORG operand specifies the types of data control blocks for which symbolic
names are provided. If the DSORG operand is omitted, the DEVD operand is
ignored, and symbolic names are provided only for the "foundation block" portion
that is common to all data control blocks. One or more of the following pairs of
characters can be specified; each pair of characters must be separated by a comma:
BS

Specifies a data control block for a sequential data set and basic access
method.

DA

Specifies a data control block for a direct data set.

IS

Specifies a data control block for an indexed sequential data set.

LR

Specifies a dummy section for the logical record length field
(DCBLRECL) only.

PO

Specifies a data control block for a partitioned data set.

PS

Specifies a data control block for a sequential data set. PS includes
both BS and QS.

Macro Instruction Descriptions 109

QS

Specifies a data control block for a sequential data set and queued
access method.

GS

Specifies a data control block for graphics; this operand cannot be used
in combination with any of the above.

DEVD= [DA][,PC)[,PR][,PI)[,RD)[,TA][,MR]

The DEVD operand specifies the types of devices on which the data set can reside.
If the DEVD operand is omitted and a sequential data set is specified in the
DSORG operand, symbolic names are provided for all of the device types listed
below. One or more of the following pairs of characters can be specified; each pair
of characters must be separated by a comma:
DA-

Direct-access device

PC

Online punch

PR

Online printer

PI

Paper tape

RD

Online card reader or read punch feed

TA

Magnetic tape

MR

Magnetic character reader

110 OS/VS Data Management Macro instructions

ESETL

ESETL -

End Sequential Retrieval (QISAM)
The ESETL macro instruction ends the sequential retrieval of data from an indexed
sequential data set and causes the buffers associated with the specified data control
block to be released. An ESETL macro instruction must separate SETL macro
instructions issued for the same data control block.
The ESETL macro instruction is written as follows:

[ symbol]

deb address -

ESETL

I

deb address

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block opened for
the indexed sequential data set being processed.

Macro Instruction Descriptions 111

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

FEOV

FEOV -

Force End of Volume (BSAM and QSAM)
The FEOV macro instruction causes the system to assume an end-of-volume
condition, and causes automatic volume switching. Volume positioning for magnetic
tape can be specified by the option operand. If no option is coded, the positioning
specified in the OPEN macro instruction is used. Output labels are created as required
and new input labels are verified. The standard exit routines are given control as
specified in the data control block exit list. For BSAM, all input and output operations
must be tested for completion before the FEOV macro instruction is issued. The
end-of-data-set (EODAD) routine is given control if an input FEOV macro
instruction is issued for the last volume of an input data set.
The FEOV macro instruction is written as follows:
[symbol]

deb address -

FEOV

,REWIND]
deb address [ , LEAVE

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block for an
opened sequential data set.
The following operands request optional services.
REWIND

Requests that the system position the tape at the load point regardless
of the direction of processing.

LEAVE

Requests that the system position the tape at the logical end of the
data set on that volume~ this option causes the tape to be positioned at
a point after the tapemark that follows the trailer labels. Note that
multiple tape units must be available to achieve correct positioning. If
only one tape unit is available, its volume is rewound and unloaded.

Macro Instruction Descriptions 113

FIND

FIND -

Establish the Beginning of a Data Set Member (BPAM)
The FIND macro instruction causes the system to use the address of the first block of a
specified partitioned data set member as the starting point for the next READ macro
instruction for the same set. All previous input and output operations that specified the
same data control block must have been tested for completion before the FIND macro
instruction is issued.
The FIND macro instruction is written as follows:

FIND

[symbol]

deb address -

deb address, {name address, D
}
relative address list,e

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block for the
opened partitioned data set being processed.
name address -

RX-Type Address, (2-12), or (0)

The name address operand specifies the address of a doubleword that contains the
data set member name. The name must start in the first byte of the doubleword
and be padded on the right (if necessary) to complete the eight-byte doubleword.
D

Specifies that only a member name has been supplied, and the access
method must search the directory of the data set indicated in the data
control block to find the location of the member.

relative address list -

RX-Type Address, (2-12), or (0)

The relative address list operand specifies the address of the area that contains
the relative address (TTRK) for the beginning of a data set member. The
relative address can be a list entry completed by using a BLDL macro
instruction for the data set being processed, or the relative address can be
supplied by the problem program.

c

Specifies that a relative address has been supplied, and no directory
search is required. The relative address supplied is used directly by the
access method for the next input operation.

Macro Instruction Descriptions 115

Completion Codes
When the system returns control to the problem program, the low-order byte of
register 15 contains one of the following return codes; the three high-order bytes of
register 15 are set to zero.

name address, D

relative address list, C

00

- Successful execution

04

- Name not found

08

- Permanent input/output
error found during
directory search

00 - At all times. If the relative
address is in error, execution
of the next READ macro
instruction causes control to
be passed to the error
analysis (SYNAD) routine.

116 OS/VS Data Management Macro Instructions

FREEBUF

FREEBUF -

Return a Buffer to a Pool (BDAM, BISAM, BPAM, and BSAM)
The FREEBUF macro instruction causes the system to return a buffer to the buffer
pool assigned to the specified data control block. The buffer must have been acquired
using a GETBUF macro instruction.
The FREEBUF macro instruction is written as follows:

FREEBUF

[symbol]

deb address -

deb address, register

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block for an
opened data set to which the buffer pool has been assigned.
register -

(2-12)

The register operand specifies one of registers 2 through 12 that contains the
address of the buffer being returned to the buffer pool.

Macro Instruction Descriptions 117

FREEDBUF

FREEDBUF -

Return a Dynamically Obtained Buffer (BDAM and BISAM)
The FREEDBUF macro instruction causes the system to return a buffer to the buffer
pool assigned to the specified data control block. The buffer must have been acquired
through dynamic buffering; that is, by coding '8' for the area address operand in the
associated READ macro instruction.
Note: A buffer acquired dynamically can also be released by a WRITE macro
instruction; refer to the description of the WRITE macro instruction for BDAM or
BISAM.
The FREEDBUF macro instruction is written as follows:

[symboU

deeb address -

FREEDBUF

deeb address,{ ~} ,deb address

RX-Type Address, (2-12), or (0)

The deeb address operand specifies the address of the data event control block
(DECB) used or created by the READ macro instruction that acquired the buffer
dynamically.
K

Specifies that BISAM is being used.

D

Specifies that BDAM is being used.

deb address -

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block for the
opened data set being processed.

Macro Instruction Descriptions 119

FREEPOOL

FREEPOOL - Release a Buffer Pool (BDAM, BISAM, BPAM, BSAM,
QISAM, and QSAM)
The FREEPOOL macro instruction causes an area of storage, previously acquired for a
buffer pool for a specified data control block, to be released. The area must have been
acquired either automatically or by the execution of a GETPOOL macro instruction.
For queued access methods, the FREEPOOL macro instruction must not be issued
until after a CLOSE macro instruction has been issued for all the data control blocks
using the buffer pool. For basic access methods, the FREEPOOL macro instruction
can be issued as soon as the buffers are no longer required. A buffer pool should be
released only once, regardless of the number of data control blocks sharing the buffer
pool.

If BFALN=F is supplied from a source other than the DCB macro instruction, the
CLOSE macro instructions removes the bit that designates fullword alignment from the
data control block. In this case, if a FREEPOOL macro instruction is issued after the
CLOSE macro instruction, the system does not release the complete buffer area (eight
bytes are not released).
The FREEPOOL macro instruction is written as follows:

[symbol]

deb address -

FREEPOOL

I deb address

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of a data control block to which the
buffer pool has been assigned.

Macro Instruction Descriptions 121

GET-QISAM

GET -

Obtain Next Logical Record (QISAM)
The GET macro instruction causes the system to retrieve the next record. Control is
not returned to the problem program until the record is available.
The GET macro instruction is written as follows:

GET

[symbol]

deb address -

deb address [, area addres~

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block for the
opened input data set being retrieved.
area address -

RX-Type Address, (2-12), or (0)

The area address operand specifies the storage address into which the system is to
move the record (move mode only). Either the move or locate mode can be used
with QISAM, but they must not be mixed within the specified data control block.
The following describes operations for move and locate modes:
Locate Mode: If the locate mode has been specified in the data control block, the
area address operand must be omitted. The system returns the address of the
buffer segment containing the record in register 1.
Move Mode: If the move mode h'ls been specified in the data control block, the
area address operand must specify the address in the problem program into which
the system will move the record. If the area address operand is omitted, the system
assumes that register 0 contains the area address. When control is returned to the
problem program, register 0 contains the area address, and register 1 contains the
address of the data control block.

Notes:
1. The end-of-data-set (EODAD) routine is given control if the end of the data set is
reached; the data set must be closed or an ESETL macro instruction must be issued.
An attempt to continue to use the data set will have unpredictable results.
2. The error analysis (SYNAD) routine is given control if the input operation could
not be completed successfully. The contents of the general registers when control is
given to the SYNAD routine are described in Appendix A.
3. When the key of an unblocked fixed-length record is retrieved with the data, the
address of the key is returned as follows (see the SETL macro instruction):
Locate mode -

The address of the key is returned in register O.

Move mode -

The key appears in front of the record in your buffer area.

4. If a GET macro instruction is issued for a data set and the previous request issued
for the same data set was an OPEN, ESETL, or unsuccessful SETL (no record
found), a SETL B (key and data) is invoked automatically, and the first record in
the data set is returned.

Macro Instruction Descriptions 123

GET-QSAM

GET -

Obtain Next Logical Record (QSAM)
The GET macro instruction causes the system to retrieve the next record. Various
modes are available and are specified in the DCB macro instruction. In the locate
mode, the GET macro instruction locates the next sequential record or record segment
to be processed. The system returns the address of the record in register 1 and places
the length of the record or segment in the logical-record-Iength (DCBLRECL) field of
the data control block. The user can process the record within the input buffer or
move the record to a work area.
In the move mode, the GET macro instruction moves the next sequential record to the
user's work area. This work area must be big enough to contain the largest logical
record of the data set and its record-descriptor word (variable-length records). The
system returns the address of the work area in register 1. (This feature provides
compatibility with the substitute mode GET.) The record length is placed in the
DCBLRECL field. The move mode can be used only with simple buffering.
In the data mode, which is available only for variable-length spanned records, the GET
macro instruction moves only the data portion of the next sequential record to the
user's work area.
In the substitute mode, the GET macro instruction transfers ownership of the next
sequential record in a data set from the system to the user. In return, the ownership of
a work area is transferred from the user to the system for future use as an input buffer.
There is no movement of data. The address of an input buffer containing the record is
returned to the user in register 1 after the instruction is executed. The system returns
the record length in the DCBLRECL field. For undefined-length records, the
DCBLRECL field is equal to the BLKSIZE field for chained scheduling. The
substitute mode can be used only with exchange buffering and cannot be used with
variable-length records.
If the ASCII translation routines are included when the operating system is generated,

translation can be requested by coding LABEL=(,AL) or (,AUL) in the DD statement,
or it can be requested by coding OPTCD=Q in the DCB macro instruction or DCB
subparameter of the DD statement. When translation is requested, all QSAM records
whose record format (RECFM operand) is F, FB, D, DB, or U are automatically
translated from ASCII code to EBCDIC code as soon as the input buffer is full. For
translation to occur correctly, all input data must be in ASCII code.
The GET macro instruction is written as follows:

[symbo~
deb address -

GET

deb address [,area address]

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the' data control block for the
opened input data set being retrieved.

Macro Instruction Descriptions 125

area address -

RX-Type Address, (2-12), or (0)

The area address operand specifies the address of an area into which the system is
to move the record (move or data mode), or it specifies the address of an area to be
exchanged for the buffer containing the record (substitute mode). The move,
locate, data, or substitute mode can be used with QSAM, but they must not be
mixed within the specified data control block. If the area address operand is
omitted in the move, data, or substitute mode, the system assumes that register 0
contains the area address. The following describes the operation of the four modes:
Locate mode: If the locate mode has been specified in the data control block, the
area address operand must be omitted. The system returns the address of the
buffer segment containing the record in register 1.
When retrieving variable-length spanned records, the records are obtained one
segment at a time. The problem program must retrieve additional segments by
issuing subsequent GET macro instructions, except when a logical record interface
is requested (by specifying BFTEK=A in the DCB macro instruction or by issuing a
BUILDRCD macro instruction.) In this case, the control program retrieves all
record segments and assembles the segments into a complete logical record. The
system returns the address of this record area in register 1. To process a record
when the logical record length is greater than 32,756 bytes, LRECL=X must be
specified in the data control block, and the problem program must assemble the
segments into a complete logical record.
Move mode: If the move mode has been specified in the data control block, the
area address operand specifies the address of an area in the problem program into
which the system will move the record.
For variable-length spanned records, the system constructs the record-descriptor
word in the first four bytes of the area and assembles one or more segments into
the data portion of the logical record; the segment descriptor words are removed.
Data mode: If the data mode has been specified in the data control block (data
mode can be specified for variable-length spanned records only), the area address
operand specifies the address of the area in the problem program into which the
system will move the data portion of the logical record; a record-descriptor word is
not constructed when data mode is used.
Substitute mode: If the substitute mode is specified in the data control block, the
area address operand specifies the address of an area in the problem program that
will be exchanged for the buffer containing the record. The system returns the
address of the buffer containing the record in register 1.

GET Routine Exits
The end-of-data-set (EODAD) routine is given control if the end of the data set is
reached; the data set must be closed. Issuing a GET macro instruction in the EODAD
routine results in abnormal termination of the job step.
The error analysis (SYNAD) routine is given control if the input operation could not be
completed successfully. The contents of the general registers when control is given to
the SYNAD routine are described in Appendix A.

126 OS /VS Data Management Macro Instructions

GETBUF

GETBUF -

Obtain a Buffer (BDAM, BISAM, BPAM, and BSAM)
The GETBUF macro instruction causes the control program to obtain a buffer from the
buffer pool assigned to the specified data control block and to return the address of the
buffer in a designated register. The BUFCB field of the data control block must
contain the address of the buffer pool control block when the GETBUF macro
instruction is issued. The system returns control to the instruction following the
GETBUF macro instruction. The buffer obtained must be returned to the buffer pool
using a FREEBUF macro instruction.
The GETBUF macro instruction is written as follows:

~ymbolJ

GETBUF

deb address -

deb address, register

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block that
contains the buffer pool control block address.
register -

(2-12)

The register operand specifies one of the registers 2 through 12 in which the system
is to place the address of the buffer obtained from the buffer pool. If no buffer is
available, the contents of the designated register are set to zero.

Macro Instruction Descriptions 127

GETPOOL

GETPOOL and QSAM)

Build a Buffer Pool (BDAM, BISAM, BPAM, BSAM, QISAM,

The GETPOOL macro instruction causes a buffer pool to be constructed in a storage
area acquired by the system. The system places the address of the buffer pool control
block in the BUFCB field of the data control block. The GETPOOL macro instruction
must be issued either before an OPEN macro instruction is issued or during the data
control block exit routine for the specified data control block.
The GETPOOL macro instruction is written as follows:

rsymbol]
deb address -

GETPOOL

deb address,Inumber of buffers, buffer length
(0)

1

I

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block to which
the buffer pool is assigned. Only one buffer pool can be assigned to a data control
block.
number of buffers -

symbol, decimal digit, absexp, or (2-12)

The number-or-buffers operand specifies the number of buffers in the buffer pool up
to a maximum of 255.
buffer length -

symbol, decimal digit, absexp, or (2-12)

The buffer length operand specifies the length, in bytes, or each buffer in the buffer
pool. The value specified for the buffer length must be a double word multiple;
otherwise the system rounds the value specified to the next higher double word
multiple. The maximum length that can be specified is 32,760 bytes. For QSAM,
the buffer length must be at least as large as the value specified in the blocksize
(DCBBLKSI) field in the data control block.
(0) - Coded as shown
The number of buffers and buffer length can be specified in general register o. If
(0) is coded, register 0 must contain the binary values for the number of buffers
and buffer length as shown in the following illustration:
Register 0
Number of Buffers

Bits:

0

Buffer Length

15

16

31

Macro Instruction Descriptions 129

The following illustration shows the format of the buffer pool. The buffer pool and the
associated storage area are released by issuing a FREEPOOL macro instruction after
issuing a CLOSE macro instruction for the data set indicated in the specified data
control block.
Area Addre ss

I
Buffer Pool
Control
Block

14- 8 b tes
Y

""'"-

Buffer

-L --.J
Buffe'
Length

J

[

I

L

Area Length
Area Length=(Buffer Length) x (Number of Buffers) + 8

130 OS/VS Data Management Macro Instructions

Buffer

Buffer
Length

I

J

NOTE

NOTE - Provide Relative Position (BPAM and BSAM Access Only)

Tape and Direct

The NOTE macro instruction causes the system to return the relative position of the
last block read from or written into a data set. All input and output operations using
the same data control block must be tested for completion before the NOTE macro
instruction is issued.
The capability of using the NOTE macro instruction is automatically provided when a
partitioned data set is used (DSORG=PO or POU), but when a sequential data set
(BSAM) is used, the use of NOTE/POINT macro instructions must be indicated in the
MACRF operand of the DCB macro instruction. The relative position, in terms of the
current volume, is returned in register 1 as follows:
Magnetic Tape: The block number is in binary, right-adjusted in register 1 with
high-order bits set to zero. Do not use a NOTE macro instruction for tapes without
standard labels when:
• The data set is opened for RDBACK (specified in the OPEN macro instruction).
• The DISP parameter of the DD statement for the data set specifies DISP=MOD.
Direct-Access Device: TTRz format, where:
TT is a 2-byte relative track number.
R

is a I-byte block (record) number on the track indicated by TT.

z

is a byte set to zero.

Note: When a direct-access device is being used, the amount of remaining space on
the track is returned in register 0 if a NOTE macro instruction follows a WRITE macro
instruction; if a NOTE macro instruction follows a READ macro instruction, the track
capacity of the direct-access device is returned in register O.
The NOTE macro instruction is written as follows:
~ymboQ

deb address -

NOTE

·1

deb address

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block opened for
the partitioned or sequential data set being processed.

Macro Instruction Descriptions 131

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

OPEN

OPEN - Logically Connect a Data Set (BDAM, BISAM, BPAM, BSAM,
QISAM, and QSAM)
The OPEN macro instruction causes the specified data control block(s) to be
completed and the data set(s) identified in the data control block(s) to be prepared for
processing. Input labels are analyzed and output labels are created. Control is given to
exit routines as specified in the data control block exit list. The processing method
(option 1) is designated to provide correct volume positioning for the data set and
define the processing mode (INPUT, OUTPUT, etc.) for the data set(s). Final volume
positioning (when volume switching occurs) can be specified (option 2) to override the
positioning implied by the DD statement DISP parameter. Any number of data control
block addresses and associated options may be specified in the OPEN macro
instruction.
If associated data sets for a 3525 card punch are being opened, all associated data sets

must be open before an I/O operation is initiated for any of the data sets. For a
description of associated data sets, refer to OS/VS Data Management Services Guide.

I To support DEB validity checking in OS/VS, an OPEN macro instruction must be
issued for every data extent block (DEB) created.
The standard form of the OPEN macro instruction is written as follows (the list and
execute forms are shown following the description of the standard form):

[symbol]

dcb address -

OPE,N

(deb address, [(options) ] ' .•. )

A-Type Address or (2-12)

The dcb address operand(s) specifies the address of the data control block(s) for
the data set(s) to be prepared for processing.
options

The options operands shown in the following illustration indicate the volume
positioning available based on the device type and access method being used. If
option 1 is omitted, INPUT is assumed. If option 2 is omitted, DISP is assumed.
Option 1 must be coded if option 2 is coded. Options 1 and 2 are ignored for
BISAM and QISAM (in the scan mode), and the data control block indicates the
operation. OUTPUT or OUTIN must be specified when creating a data set.

Macro Instruction Descriptions 133

DEVICE TYPE
ACCESS
METHOD

QSAM

BSAM

Magnetic tape
Option 1

[INPUT

Direct access
Option 1

Option 2
[,REREAD]
]

[OUTPUT]

[,LEAVE

[ROBACK]

[,DISP

[INPUT

[,REREAD]
[,LEAVE ]

[OUTPUT]
[INOUT ]

[,DISP

]

]

]
[OUTIN
[ROBACK]

[INPUT
[OUTPUT]
[UPDAT ]
[INPUT
[OUTPUT]
[lNOUT ]
[OUTIN
[UPDAT

Other Types

Option 2

Option 1

[,REREAD]
[,LEAVE ]

[INPUT

[,DISP

[OUTPUT]

]

[,REREAD]
[,LEAVE ]
[,DISP

Option 2

[INPUT
[OUTPUT]

]

]
]

[OUTPUT]

QISAM
(Load Mode)

[INPUT
[OUTPUT]

BPAM,
BDAM

[UPDAT

]

The following describes the options shown in the preceding illustration. All option
operands are coded as shown.
Option 1

Meaning

INPUT

Input data set.

INOUT

The data set is first used for input and, without reopening, it is used as
an output data set. The data set is processed as INPUT if
LABEL=(",IN) is specified in the DD statement.

OUTPUT

Output data set (for BDAM, OUTPUT is equivalent to UPDAT).

OUTIN

The data set is first used for output and, without reopening, it is used
as an input data set. The data set is processed as output if
LABEL = (",OUT) is specified in the DD statement.

RDBACK

Input data set, positioned 'to read backward.

UPDAT

Data set to be updated in place.

Option 2

Meaning

LEAVE

Positions the current volume to the logical end of the data set.

REREAD

Positions the current volume to reprocess the data set when volume
switching occurs.

DISP

Performs volume positioning implied by the DISP parameter of the DD
control statement, as follows:

DISP Parameter
PASS

Action

Forward space to the end of the data set on the
current volume

DELETE

Rewind the current volume

KEEP, CATLG, or
UNCATLG

Rewind and unload the current volume

134 OS/VS Data Management Macro Instructions

OPEN
Note: When the DELETE option is specified, the system waits for the completion of
the rewind operation before it continues processing subsequent reels of tape.
After the OPEN macro instruction has been executed, bit 3 of the DCBOFLGS field in
the data control block is set to 1 if the data control block has been opened successfully,
but is set to 0 if the data control block has not been opened successfully.
Note: The following errors cause the results indicated:
Error

Result

Opening a data control block that
is already open.

No action.

Attempting to open a data control
block when the deb address
operand does not specify the
address of a data control block.

Unpredictable.

Opening a data control block when
a corresponding DD statement has
not been provided.

A "DD STATEMENT MISSING" message
is issued. An attempt to use the
data set causes unpredictable results.

The last of these errors can be detected by testing bit 3 of the DCBOFLGS field in the
data control block. Bit 3 is set to 0 in the case of an error and can be tested by the
sequence:
TM DCBOFLGS,X'10'
BZERRORRTN

(Branch to user's error routine)

Executing the two instructions shown above requires writing a DCBD macro instruction
in the program, and a base register must be defined with a USING statement before
the instructions are executed.

Macro Instruction Descriptions 135

OPEN -

OPEN -

List Form

List Form
The list form of the OPEN macro instruction is used to construct a data management
parameter list. Any number of operands (data control block addresses and associated
options) can be specified.
The OPEN macro instruction can be used with a variable-length parameter list. The
length of a list generated by a list form instruction must be equal to the maximum
length list required by any execute form instruction that refers to the same list. A
maximum length list can be constructed by one of two methods:
• Code a list-form instruction with the maximum number of parameters that are
required by an execute form instruction that refers to the list.
• Code a maximum length list by using commas in a list-form instruction to acquire a
list of the appropriate size. For example, coding OPEN ("""",) would provide a list
of five fullwords (five dcb addresses and five options).
A parameter list constructed by an OPEN, list form, macro instruction can be referred
to by either an OPEN or CLOSE execute form instruction.
The description of the standard form of the OPEN macro instruction provides the
explanation of the function of each operand. The description of the standard form also
indicates which operands are completely optional and those required in at least one of
the pair of list and execute forms. The format description below indicates the optional
and required operands in the list form only.
The list form of the OPEN macro instruction is written as follows:

[symbol]

deb address MF=L -

OPEN

([deb address] , [(options)], ... ),MF=L

A-Type Address

Coded as shown

The MF=L operand specifies that the OPEN macro instruction is used to create a
data management parameter list that is referenced by an execute form instruction.

Macro Instruction Descriptions 137

OPEN -

OPEN -

Execute Form

Execute Form
A remote data management parameter list is used in, and can be modified by, the
execute form of the OPEN macro instruction. The parameter list can be generated by
the list form of either an OPEN or CLOSE macro instruction.
The description of the standard form of the OPEN macro instruction provides the
explanation of the function of each operand. The description of the standard form also
indicates which operands are totally optional and those required in at least one of the
pair of list and execute forms. The format description below indicates the optional and
required operands in the execute form only.
The execute form of the OPEN macro instruction is written as follows:

[symbol]

[([deb address]' [(options)J , .•• )J

OPEN

,MF=(E,1 data management list address

{O

deb address -

MF=(E,

f)

RX-Type Address or (2-12)

{data management list address J
{
(1)
D

This operand specifies that the execute form of the OPEN macro instruction is
used, and an existing data management parameter list (created by a list-form
instruction) is used. The MF= operand is coded as follows:
E-

Coded as shown

data management list address -

RX-Type, (2-12), (1)

Macro Instruction Descriptions 139

POINT

POINT - Position to a Relative Block (BPAM and BSAM Direct Access Only)

Tape and

The POINT macro instruction causes the system to start processing the next READ or
WRITE operation at the specified block in the data set on the current volume. All
input and output operations using the same data control block must have been tested
for completion before the POINT macro instruction is issued. When processing a data
set that has been opened for UPDAT, the POINT macro instruction must be followed
by a READ macro instruction. When processing an output data set, the POINT macro
instruction must be followed by a WRITE macro instruction prior to closing the data
set, unless a CLOSE macro instruction (with TYPE=T specified) was issued prior to
the POINT macro instruction. Issuing a POINT macro instruction for the system input
data set or a system output data set on magnetic tape results in an effective Nap
instruction.

I

The POINT macro instruction is written as follows:

[symbol]

dcb address -

POINT

deb address, block address

RX-Type Address, (2-12), or (1)

The dcb address operand specifies the address of the data control block for the
opened data set that is to be positioned.
block address -

RX-Type Address, (2-12), or (0)

The block address operand specifies the address of a fullword on a fullword
boundary containing the relative address of the block in the data set that is to be
processed next. The relative address is specified as follows:
Magnetic Tape: The block number is in binary and is right-adjusted in the
fullword with the high-order bits set to zero; add one if reading tape backward. Do
not use the POINT macro instruction for tapes without standard labels when:
•

The data set is opened for RDBACK.

•

The DD statement for the data set specifies DISP=MOD.

If OPTCD=H is indicated in the data control block, the POINT macro instruction

can be used to perform record positioning on DOS tapes that contain embedded
checkpoint records. Any embedded checkpoint records that are encountered during
the record positioning are bypassed and are not counted as blocks spaced over.
OPTCD=H must be specified in a job control language DD statement. Do not use
the POINT macro instruction to backspace DOS 7-track tapes that are written in
data convert mode and that contain embedded checkpoint records.
Direct-Access Device: The fullword specified in the block address operand contains
the relative track address (in the form TTRz), where:
TT is a 2-byte relative track number.
R is a I-byte block (record) number on the track indicated by TT.

Macro Instruction Descriptions 141

z

is a byte set to zero; it may also be set to 1 to retrieve the block following the
TTR block.

Note: The first block of a magnetic tape data set is always specified by the
hexadecimal value 00000001. The first block of a direct-access device data set can
be specified by either hexadecimal 00000001 or 00000100 (see the previous
description of TTRz).
If the volume cannot be positioned correctly or if the block identification is not of the

correct format, the error analysis (SYNAD) routine is given control when the next
READ or WRITE macro instruction is executed.

142 OS/VS.Data Management Macro Instructions

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

PRTOV

PRTOV - Test for Printer Carriage Overflow (BSAM and QSAM Printer and 3525 Card Punch, Print Feature)

Online

The PRTOV macro instruction is used to control the page format for an online printer
when carriage control characters are not being used or to supplement the carriage
control characters that are being used.
The PRTOV macro instruction causes the system to test for an overflow condition on
the specified channel (either channel 9 or channel 12) of the printer carriage control,
and either skip the printer carriage to the line corresponding to channel 1, or transfer
control to the exit address, if one is specified. Overflow is detected after printing the
line that follows the line corresponding to channel 9 or channel 12.
When the PRTOV macro instruction is used with a 3525 card punch, print feature,
channel 9 or 12 can be tested. If an overflow condition occurs, control is passed to the
overflow exit routine if the overflow exit address is coded, or a skip to channel 1 (first
print-line of the next card) occurs.
When requesting overprinting (for example, to underscore a line), the PRTOV macro
instruction is issued before the first PUT or WRITE macro instruction only. The
PRTOV macro instruction should be issued only when the device type is an online
printer. PRTOV cannot be used to request overprinting on the 3525.
The PRTOV macro instruction is written as follows:

[symbol]

deb address -

I

PRTOV

deb

address/ll~ ~ ~overflow

exit address]

RX-Type Address or (2-12)

The deb address operand specifies the address of the data control block opened for
output to an online printer or 3525 card punch with a print feature.
9

Coded as shown

12

Coded as shown

These operands specify which channel is to be tested by the PRTOV macro
instruction. For an online printer, 9 and 12 correspond to carriage control channels
and 12. For the 3525 card punch, 9 corresponds to print line number 17, and 12
corresponds to print line number 23. More detail about the card print-line format
is included in OS / VS Data Management Services Guide.

19

overflow exit address -

I

RX-Type Address or (2-12)

The overflow exit address operand specifies the address of the user-supplied routine
to be given control when an overflow condition is detected on the specified channel.
If this operand is omitted, the printer carriage skips to the first line of the next page
or the 3525 skips to the first line of the next card before executing the next PUT or
WRITE macro instruction.

Macro Instruction Descriptions 143

When the overflow exit routine is given control, the contents of the registers are as
follows:
Register

Contents

o and

The contents are destroyed.
The same contents as before the macro instruction was executed.
Return address.
Overflow exit routine address.

2 - 13
14
15

1

144 OS/VS Data Management Macro Instructions

PUT-QISAM

PUT -

Write Next Logical Record (QISAM)
The PUT macro instruction causes the system to write a record into an indexed
sequential data set. If the move mode is used, the PUT macro instruction moves a
logical record into an output buffer from which it is written. If the locate mode is
specified, the address of the next available output buffer segment is available in register
1 after the PUT macro instruction is executed. The logical record can then be
constructed in the buffer for output as the next record. The records are blocked by the
system (if specified in the data control block) before being placed in the data set. The
system uses the length specified in the record length (DCBLRECL) field of the data
control block as the length of the record currently being written. When constructing
blocked variable-length records in the locate mode, the problem program may either
specify the maximum record length once in the DCBLRECL field of the data control
block or provide the actual record length in the DCBLRECL field before issuing each
PUT macro instruction. Use of the maximum record length may result in more but
shorter blocks, since the system uses this length when it tests to see if the next record
can be contained in the current block.
The PUT macro instruction is used to create or extend an indexed sequential data set.
To extend the data set, the key of any added record must be higher than the highest
key existing in the data set, and the disposition parameter of the DD card must be
specified as DISP=MOD. The new records are placed in the prime data space, starting
in the first available space, until the original space allocation is exhausted.
To create a data set using previously allocated space, the disposition parameter of the
DD card must specify DISP=OLD.
The PUT macro instruction is written as follows:

PUT

[symbol]

,

deb address -

deb address [, area address]

'

RX-Type Address, (2-12), or (1)

The· deb address operand specifies the address of the data control block for the
opened ISAM data set.
area address -

RX-Type Address, (2-12), or (0)

The area address operand specifies the address of the area that contains the record
to be written (move mode only). Either move or locate mode can be used with
QISAM, but they must not be mixed within the specified data control block. The
following describes operations for locate and move modes:
Locate Mode: If the locate mode is specified in the data control block, the area
address operand must be omitted. The system returns the address of the next
available buffer in register 1; this is the buffer into which the next record is placed.
The record is not written until another PUT macro instruction is issued for the same
data control block. The last record is written when a CLOSE macro instruction is
issued to close the data set.

Macro Instruction Descriptions 145

Move Mode: If the move mode has been specified in the data control block, the
area address operand must specify the address in the problem program that contains
the record to be written. The system moves the record from the area to an output
buffer before control is returned. If the area address operand is omitted, the system
assumes that register zero contains the area address.

Put Routine Exit
The error analysis (SYNAD) routine is given control if the output operation could not
be completed satisfactorily. The contents of the registers when the error analysis
routine is given control are described in Appendix A.

146 OS/VS Data Management Macro Instructions

PUT-QSAM

PUT -

Write Next Logical Record (QSAM)
The PUT macro instruction causes the system to write a record in a sequential data set.
Various modes are available and are specified in the DCB macro instruction. In the
locate mode, the address of an area within an output buffer is returned in register 1
after the macro instruction is executed. The user should subsequently construct, at this
address, the next sequential record or record segment. The move mode of the PUT
macro instruction causes a logical record to be moved into an output buffer. In the
data mode, which is available only for variable-length spanned records, the PUT macro
instruction moves only the data portion of the record into one or more output buffers.
When the substitute mode is specified, the macro transfers ownership of a work area
containing a record to the control program. In return, the ownership of a buffer
segment is transferred to the user, for use as a work area. There is no movement of
data in storage.
The records are blocked by the control program (as specified in the data control block)
before being placed in the data set. For undefined-length records, the DCBLRECL
field determines the length of the record that is subsequently written. For
variable-length records, the DCBLRECL field is used to locate a buffer segment of
sufficient size (locate mode), but the length of the record actually constructed is
verified before the record is written (the output block can be filled to the maximum if,
before issuing the PUT macro, DCBLRECL is set equal to the record length). For
variable-length spanned records, the system segments the record according to the
record length, buffer length, and amount of unused space remaining in the output
buffer. The smallest segment created will be 5 bytes, 4 for the segment descriptor
word plus one byte of data.
If the ASCII translation routines are included when the operating system is generated,

translation can be requested by coding LABEL=(,AL) or (,AUL) in the DD statement,
or it can be requested by coding OPTCD=Q in the DCB macro instruction or DCB
subparameter of the DD statement. When translation is requested, all QSAM records
whose record format (RECFM operand) is F, FB, D, DB, or U are automatically
translated from EBCDIC code to ASCII code. For translation to occur correctly, all
output data must be in EBCDIC code; any EBCDIC character that cannot be
translated into an ASCII character is replaced by a substitute character.
The PUT macro instruction is written as follows:

[symbo~
deb address -

PUT

deb address

~area address]

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block for the data
set opened for output.
area address -

RX-Type Address, (2-12), or (0)

The area address operand specifies the address of an area that contains the record
to be written (move or data mode), or it specifies the address of an area to be
exchanged for a buffer (substitute mode). The move, locate, data, or substitute
Macro Instruction Descriptions 147

mode can be used with QSAM, but they must not be mixed within the specified
data control block. If !he area address operand is omitted in the move, data, or
substitute mode, the system assumes that register zero contains the area address.
The following describes the operation of the four modes:
Locate Mode: If the locate mode is specified, the area address operand must be
omitted. The system returns the address of the next available buffer in register 1;
this is the buffer into which the next record is placed.

When variable-length spanned records are used and a record area has been
provided for a logical record interface (BFTEK=A has been specified in the data
control block or a BUILDRCD macro instruction has been issued), the address
returned in register 1 points to an area large enough to contain the maximum record
size (up to 32,756 bytes). The system segments the record and writes all segments,
providing proper control codes for each segment. If, for variable-length spanned
records, an area has not been provided, the actual length remaining in the buffer
will be returned in register O. In this case, it is the user's responsibility to segment
the records and process them in terms of record segments. The record or segment
is not written until another PUT macro instruction is issued for the same data
control block. The last record is written when the CLOSE macro instruction is
issued.
When a PUT macro instruction is used in the locate mode, the address of the buffer
for the first record or segment is obtained by issuing a PUT macro instruction;
QSAM returns the address of the buffer, but the record is not written until the next
PUT macro instruction is issued.
Move Mode: If the move mode has been specified in the data control block, the
area address operand specifies the address of the area that contains the record to be
written. The system moves the record to an output buffer before control is
returned. The address of the storage area is returned in register 1 (this action
provides compatibility with substitute mode operations, and makes it possible for
the problem program to be used in instances where substitute mode is requested but
cannot be supported by the system).
Data Mode: If the data mode is specified in the data control block (data mode can
be specified for variable-length spanned records only), the area address operand
specifies the address of an area in the problem program that contains the data
portion of the record to be written. The system moves the data portion of the
record to an output buffer before control is returned. The user must place the total
data length in the DCBPRECL (not DCBLRECL) field of the data control block
before the PUT macro instruction is issued.
Substitute Mode: If the substitute mode is specified in the data control block, the
area address operand specifies the address of an area in the problem program that
contains the next record to be written. The area is exchanged for an empty buffer.
The address of the empty buffer is returned in register 1.

Put Routine Exit
The error analysis (SYNAD) routine is given control if an output operation could not
be completed satisfactorily. If the output operation could not be completed
satisfactorily, the error analysis (SYNAD) routine is given control after the next PUT
instruction is issued. The contents of the registers when the error analysis routine· is
given control are described in Appendix A.
148 OS/VS Data Management Macro Instructions

PUTX

PUTX- Write a Record from an Existing Data Set (QISAM and QSAM)
The PUTX macro instruction causes the control program to return an updated record
to a data set (QISAM and QSAM) or to write a record from an input data set into an
output data set (QSAM only). There are two modes of the PUTX macro instruction.
The output mode (QSAM only) allows writing a record from an input data set on a
different output data set. The output data set may specify the spanning of
variable-length records, but the input data set must not contain spanned records, unless
the user specifies an area for logical' record interface by specifying BFTEK=A in the
DCB macro instruction or by issuing the BUILDRCD macro instruction.
The update mode returns an updated record to the "data set from which it was read.
The record must always have been brought into storage by a locate mode GET macro
instruction. The logical records are blocked by the control program, as specified in the
data control block, before they are placed in the output data set. The control program
uses the length specified in the DCBLRECL field as the length of the record currently
being stored. Control is not returned to the user's program until the control program
has processed the record.
The PUTX macro instruction can be used only in the output mode for SYSIN or
SYSOUT data sets.
The PUTX macro instruction is written as follows:

[symbol]

PUTX

deb address ~ input deb address]

deb address RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block for a data
set opened for output.
input deb address -

RX-Type Address, (2-12), or (0)

The input deb address operand specifies the address of a data control block opened
for input. The PUTX macro instruction can be used for the following modes:
Output Mode: This mode is used with QSAM only. The input deb address
operand specifies the address of the data control block opened for input. If this
operand is omitted, the system assumes that register 0 contains the input dcb
address.
Update Mode: The input deb address operand is omitted for update mode.

PUTX Routine Exit
The error analysis (SYNAD) routine is given control if the operation is not completed
satisfactorily. The contents of the registers when the error analysis routine is given
control are described in Appendix A.

Macro Instruction Descriptions 149

READ-BDAM

READ -

Read a Block (BDAM)
The READ macro instruction causes a block to be retrieved from a data set and placed
in a designated area of storage. Control may be returned to the problem program
before the block is retrieved. The input operation must be tested for completion using
a CHECK or WAIT macro instruction. A data event control block, shown in
Appendix A, is constructed as part of the macro expansion.
The standard form of the READ macro instruction is written as follows (the list and
execute forms are shown following the descriptions of the standard form):
deeb name, type, de b address, {area address} ~ ength},

READ

[symbol]

'5'

'5'

{key address}, block address[,next address]

's •
decb name -

symbol

The decb name operand specifies the name assigned to the data event control block
created as part of the macro expansion.
type -

{DI [F)

[R)
[X)

{DK

}
[RU)

[F)

(R)

(X)

(RU)

}

The type operand is coded in one of the combinations shown above to specify the
type of read operation and the optional services performed by the system.

DI -

Specifies that the data and key, if any, are to be read from a specific
device address. The device address, which can be designated by any of
the three addressing methods, is supplied by the block address operand.

DK -

Specifies that the data (only) is to be read from a device address
identified by a specific key. The key to be used as a search argument
must be supplied in the area specified by the key address operand; the
search for the key starts at the device address supplied in the area
specified by the block address operand. The description of the DCB
macro instruction, LIMCT operand, contains a description of the search.

F

Requests that the system provide block position feedback into the area
specified by the block address operand. This character can be coded as a
suffix to DI or DK as shown above.

X

Requests exclusive control of the data block being read, and it requests
that the system provide block position feedback into the area specified by
the block address operand. The descriptions of the WRITE and RELEX
macro instructions contain a description of releasing a data block that is
under exclusive control. This character can be coded as a suffix to DI or
DK as shown above.

Macro Instruction Descriptions 151

R-

Requests that the system provide next address feedback into the area
specified by the next address operand. When R is coded, the feedback is
the relative track address of the next data record. This character can be
coded as a suffix to 01 or OK, OIF, DIX, DKF, or DKX as shown above,
but it can be coded only for use with variable-length spanned records.

RU -

Requests that the system provide next address feedback into the area
specified by the next address operand. When RU is coded, the feedback
is the relative track address of the next capacity record (RO) or data
record whichever occurs first. These characters can be coded as a suffix
to DI, DK, DIF, DIX, DKF, or DKX, but it can be coded only for use
with variable-length spanned records.

deb address -

A-Type Address or (2-12)

The deb address operand specifies the address of the data control block opened for
the data set to be read.
area address -

A-Type Address, (2-12), or'S'

The area address operand specifies the address of the area into which the data
block is to be placed. If'S' is coded instead of an address, dynamic buffering is
requested (dynamic buffering must 'also be specified in the MACRF operand of the
DCB macro instruction). When dynamic buffering is used, the system acquires a
buffer and places its address in the data eve,nt control block.
length -

symbol, decimal digit, absexp, (2-12), or'S'

The length operand specifies the number of data bytes to be read up to a maximum
of 32,760. If'S' is coded instead of a length, the number of bytes to be read is
taken from the data control block.
key address -

A-Type Address, (2-12), 'S', or 0

The key address operand specifies the address of the area for the key of the desired
data block. If the search operation is made using a key, the area must contain the
key. Otherwise, the key is read into the designated area. If the key is read and'S'
was coded for the area address, 'S' can also be coded for the key address; the key
and data are read sequentially into the buffer acquired by the system. If the key is
not to be read, specify 0 instead of an address or'S'.
block address -

A-Type Address or (2-12)

The block address operand specifies the address of the area containing the relative
block address, relative track address, or actual device address of the data block to
be· retrieved. The device address of the data block retrieved is placed in this area if
block position feedback is requested. The length of the area that contains the
address depends on whether the feedback option (OPTCD=F) has been specified in
the data control block and if the READ macro instruction requested feedback.
If OPTCD=F has been specified, feedback (if requested) is in the same form as

was originally presented by· the READ macro instruction, and the field can be either
three or eight bytes long depending on. the type of addressing.
If OPTCD=F has not been specified, feedback (if requested) is in the form of an
actual device address, and the field must be eight bytes long.

152 OS/VS Data Management Macro Instructions

READ-BDAM
next address -

A-Type Address or (2-12)

The next address operand specifies the address of the storage area where the system
places the relative address of the next record. The length operand must be specified
as'S'. When the next address operand is specified, an R or RU must be added to
the type operand (for example, DIR or DIRU). The R indicates that the next
address returned is the next data record. RU indicates that the next address
returned is for the next data or capacity record, whichever occurs first. The next
address operand can be coded only for use with variable-length spanned records.

Macro Instruction Descriptions 153

READ-BISAM

READ -

Read a Block of Records (BISAM)
The READ macro instruction causes an unblocked record, or a block containing a
specified logical record, to be retrieved from a data set. The block is placed in a
designated area of storage, and the address of the logical record is placed in the data
event control block. The data event control block is constructed as part of the macro
expansion and is described in Appendix A.
Control may be returned to the problem program before the block is retrieved. The
input operation must be tested for completion using a WAIT or CHECK macro
instructioft.
The standard form of the READ macro instruction is written as follows for BISAM
(the list and execute forms are shown following the descriptions of the standard form):

READ

[symboO

1

deeb name, type,deb address, area address! '
'$'

{length

,key address}

'$'

decb name -

symbol

The decb name operand specifies the name assigned to the data event control block
(DECB) created as part of the macro expansion.
type -

{K} {KU}

The type operand is coded as shown to specify the type of read operation.
K

Specifies normal retrieval.

KU Specifies that the record retrieved is to be updated and returned to the data

set; the system saves the device address to be returned.
When an ISAM data set is being updated with a READ KU macro instruction
and a WRITE K macro instruction, both the READ and WRITE macro
instructions must refer to the same data event control block. This update
operation can be performed by using a list-form instruction to create the list
(data event control block) and by using the execute form of the READ and
WRITE macro instructions to refer to the same list.
dcb address -

A-Type Address or (2-12)

The dcb address operand specifies the address of the data control block for the
opened data set to be read.
area address - A-Type Address, (2-12), or'S'
The area address operand specifies the address of the area into which the data
block is placed. The first sixteen bytes of this area are used by the system and do
not contain information from the data block. Dynamic buffering is specified by
coding '8' instead of an address; the address of the acquired storage area is returned
in the data event control block. Indexed sequential buffer and work area
requirements are described in OS/VS Data Management Services Guide.

Macro Instruction Descriptions 155

length -

symbol, decimal digit, absexp, (2-12), or '8'

The length operand specifies the number of bytes to be read up to a maximum of
32,760. If '8' is coded instead of a length, the number of bytes to be read is taken
from the count field of the record; for blocked records, '8' must be coded.
key address -

A-Type Address or (2-12)

The key address operand specifies the address of the area in the problem program
containing the key of a logical record in the block that is to be retrieved. When the
input operation is completed, the storage address of the logical record is placed in
the data event control block.

156 OS/VS Data Management Macro Instructions

READ -

READ -

BPAM and BSAM

Read a Block (BP AM and BSAM)
The READ macro instruction causes a block to be retrieved from a data set and placed
in a designated area of storage. Control may be returned to the problem program
before the block is retrieved. The input operation must be tested for completion using
a CHECK macro instruction. A data event control block, shown in Appendix A, is
constructed as part of the macro expansion.
If the OPEN macro instruction specifies UPDAT, both the READ and WRITE macro

instruction must refer to the same data event control block. Refer to the list form of
the READ or WRITE macro instruction for a description of how to construct a data
event control block; refer to the execute form of the READ or WRITE macro
instruction for a description of how to modify an existing data event control block.
The standard form of the READ macro instruction is written as follows (the list and
execute forms are shown following the descriptions of the standard form instructions):

READ

[symbol]

deeb name,type,deb address/area address,

I

length

'5'

t
~

symbol

deeb name -

The deeb name operand specifies the name assigned to the data event control block
(DECB) created as part of the macro expansion.
type -

{SF} {SB}

The type operand is coded as shown to specify the type of read operation.
SF

Specifies normal, sequential forward, retrieval.
SB

Specifies a read backward operation; this operand can be specified only
for magnetic tape with format-F or format-U records.
deb address -

A-Type Address or (2-12)

The deb address operand specifies the address of the data control block for the
opened data set to be read.
area address -

A-Type Address or (2-12)

The area address operand specifies the address of the problem program area into
which the record is placed. When a READ SB macro instruction is issued, the area
address must be the address of the last byte of the area into which the record is
read. If the data set contains keys, the key is read into the buffer followed by the
data.

Macro Instruction Descriptions 157

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

length -

I

symbol, decimal digit, absexp, (2-12), or'S'

The length operand specifies the number of data bytes to be read, to a maximum of
32,760. (If the data is translated from ASCII code to EBCDIC code, the maximum
number of bytes that can be read is 2048.) A number can be coded only for
format-U records. The number of bytes to be read is taken from the data control
block if'S' is coded instead of a number. (This operand is ignored for format-F or
format-V records.) For format-D records only, the length of the record just read is
automatically inserted into the DCBLRECL field if BUFOFF=(L) is not specified
in the data control block.

158 OS/VS Data Management Macro Instructions

READ-BSAM

READ -

Read a Block (Offset Read of Keyed BDAM Data Set Using BSAM)
The READ macro instruction causes a block to be retrieved from a data set and placed
in a designated area of storage. The data set is a BDAM data set and its record format
is unblocked variable-length spanned records. BFTEK=R must be specified in the
data control block. Control may be returned to the problem program before the block
is retrieved. The input operation must be tested for completion using a CHECK macro
instruction. A data event control block, shown in Appendix A, is constructed as part
of the macro expansion.
The standard form of the READ macro instruction is written as follows (the list and
execute forms are shown following the descriptions of the standard form):
(symbol]

deeb name -

READ

deeb name,type,deb address, area address

symbol

The deeb name operand specifies the name assigned to the data event control block
(DECB) created as part of the macro expansion.
SF
The type operand is coded as shown to specify the type of read operation.

type -

SF

Specifies normal, sequential, forward operation.
deb address -

A-Type Address or (2-12)

The deb address operand specifies the address of the data control block for the
opened BDAM dataset to be read.
area address -

A-Type Address or (2-12)

The area address operand specifies the address of the area into which the record is
placed.
When a spanned BDAM data set is created with keys, only the first segment of a
record has a key; successive segments do not. When a spanned record is retrieved by
the READ macro instruction, the system places a segment in a designated area
addressed by the area address operand. The problem program must assemble all the
segments into a logical record. Since only the first segment has a key, the successive
segments are read into the designated area offset by key length to ensure that the
block-descriptor word and the segment-descriptor word are always in the same relative
position.

Macro Instruction Descriptions 159

READ -

READ -

List Form

List Form
The list form of the READ macro instruction is used to construct a data management
parameter list in the form of a data event control block (DECB). Refer to Appendix A
for a description of the various fields of the DECB for each access method.
The description of the standard form of the READ macro instruction provides the
explanation of the function of each operand. The description of the standard form also
indicates the operands used for each access method, as well as the meaning of '8' when
coded for the area address, length, and key address operands. For each access method,
'8' can be coded only for those operands for which it can be coded in the standard
form of the macro instruction. The format description below indicates the optional and
required operands in the list form only.
The list form of the READ macro instruction is written as follows:
[symbol]

READ

decb name, type, [dcb address], ~rea addres~,
'5'
~ength}~ey addres~, [block address], [next address]
'5'
'5'

,MF=L

decb name

symbol

type

Code one of the types shown in the· standard form

deb address

A-Type Address or '8'

area address

A-Type Address or '8'

length

symbol, decimal digit, absexp, or '8'

key address

A-Type Address or '8'

block address

A-Type Address

next address

A-Type Address

MF=L

Coded as shown

The MF=L operand specifies that the READ macro instruction is used to create a
data event control block that can be referenced by an execute-form instruction.

Macro Instruction Descriptions 161

READ -

READ -

Execute Form

Execute Form
A remote data management parameter list (data event control block) is used in, and
can be modified by, the execute form of the READ macro instruction. The data event
control block can be generated by the list form of either a READ or WRITE macro
instruction.
The description of the standard form of the READ macro instruction provides the
explanation of the function of each operand. The description of the standard form also
indicates the operands used for each access method, as well as the meaning of '8' when
coded for the area address, length, and key address operands. For each access method,
'S' can be coded only for those operands for which it can be coded in the standard
form of the macro instruction. The format description below indicates the optional and
required operands in the execute form only.
The execute form of the READ macro instruction is written as follows:
[symbol]

READ

decb address, type, [dcb address],[area address}
.
.ISI

~engt~ {key addresJ' [block address], [next address]
lSI

lSI

,MF=E

decb address

RX-Type Address or (2-12)

type

Code one of the types shown in the standard form

deb address

RX-Type Address or (2-12)

area address

RX-Type Address, (2-12), or'S'

length

symbol, decimal digit, absexp, (2-12), or'S'

key address

RX-Type Address, (2-12), or'S'

block address

RX-Type Address, or (2-12)

next address

RX-Type Address or (2-12)

MF=E

Coded as shown

The MF=E operand specifies that the execute form of the READ macro
instruction is used, and that an existing data event control block (specified in the
decb address operand) is used by the access method.

Macro Instruction Descriptions 163

RELEX

RELEX -

Release Exclusive Control (BDAM)
The RELEX macro instruction causes release of a data block fr.om exclusive control.
The block must have been requested in an earlier READ macro instruction which
specified either DIX and DKX. The RELEX macro instruction must be issued by the
same task that opened the data set.
Note: A WRITE macro instruction that specifies either DIX or DKX can also be used
to release exclusive control.
The RELEX macro instruction is written as follows:

[symbol]

D-

RELEX

DI dcb address I block address

Specifies direct access.

dcb address -

RX-Type Address, (2-12), or (1)

The dcb address operand specifies the address of the data control block for a
BDAM data set opened for processing. The dcb address operand must specify
the same data control block as designated in the associated READ macro
instruction.
block address -

RX-Type Address, (2-12), or (0)

The block address operand specifies the address of the area containing the
relative block address, relative track address, or actual device address of the data
block being released. The block address operand must specify the same area as
designated in the block address operand of the associated READ macro
instruction.

Completion Codes
When the system returns control to the problem program, the low-order byte of
register 15 contains one of the following return codes; the three high-order bytes of
register 15 are set to zero.
Hexadecimal

Meaning

Code
00

Operation completed successfully.

04

The specified data block was not in the exclusive control list.

08

The relative track address, relative block address, or actual device
address was not within the data set.

Macro Instruction Descriptions 165

RELSE

RELSE -

Release an Input Buffer (QISAM and QSAM Input)
The RELSE macro instruction causes immediate release of the current input buffer.
The next GET macro instruction retrieves the first record from the next input buffer.
For variable-length spanned records (QSAM), the input data set is spaced to the next
segment which starts a logical record in a subsequent block. Thus; one or more blocks
of data or records may be skipped. The RELSE macro instruction is ignored if a buffer
has just been completed or released, or if the records are unblocked.
The RELSE macro instruction is written as follows:

[ symbol]

deb address -

RELSE

I

deb address

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block for the
opened input data set.

Macro Instruction Descriptions 167

SETL

SETL -

Set Lower Limit of Sequential Retrieval (QISAM Input)
The SETL macro instruction causes the control program to start processing the next
input request at the specified record or device address. Sequential retrieval of records
using the GET macro instruction continues from that point until the end of the data set
is encountered or a CLOSE or ESETL macro instruction is issued. An ESETL macro
instruction must be issued between SETL macro instructions that specify the same data
set.
The SETL macro instruction can specify that retrieval is to start at the beginning of the
data set, at a specific address on the device, at a specific record, or at the first record
of a specific class of records. In each case, retrieval starts with the first record that has
not been marked for deletion.
The SETL macro instruction is written as follows:
~

[symbol]

SEll

deb address,

~

K[H], lower limit address
KC, lower limit address
KD[H], lower limit address
KCD, lower limit address
I, lower limit address
ID, lower limit address
B
BD

..

deb address -

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block opened for
the indexed sequential data set being processed.
The following operands are coded as shown, and they specify the starting point and
type of retrieval.

K
Specifies that the next input operation begins at the record containing the key
specified in the lower-limit address operand.
KC
Specifies that the next input operation begins at the first record of the key class
specified in the lower-limit address operand. If the first record of the specified key
class has been deleted, retrieval begins at the next nondeleted record regardless of
key class.
H
This option, used with either K or KD, specifies that, if the key in the lower-limit
address operand is not in the data set, retrieval begins at the next higher key. The
character H cannot be coded with the key class operands (KC,and KCD).

Macro Instruction Descriptions 169

KD
Specifies that the next input operation begins at the record containing the key
specified in the lower-limit address operand, but only the data portion of the record
is retrieved. This operand is valid only for unblocked records.

KeD
Specifies that the next input operation begins at the first record of the key class
specified in the lower-limit address operand, but only the data portion of the record
is retrieved. This operand is valid only for unblocked records.
I

Specifies that the next input operation begins with the record at the actual device
address specified in the lower-limit address operand.
ID

Specifies that the next input operation begins with the record at the actual device
address specified in the lower-limit address operand, but only the data portion of the
record is retrieved. This operand is valid only for unblocked records.
B

Specifies that the next input operation begins with the first record in the data set.
BD

Specifies that the next input operation begins with the first record in the data set,
but only the data portion is retrieved. This operand is valid only for unblocked
records.
lower limit address -

RX-Type Address, (2-12), or (0)

The lower-limit address operand specifies the address of the area containing the key,
key class, or actual device address that designates the starting point for the next
input operation. If I or ID has been specified, this area must contain the actual
device address (in the form MBBCCHHR) of a prime data record; the other types
require that the key or key class be contained in this area.

SETL Exit
The error analysis (SYNAD) routine is given control if the operation could not be
completed successfully. The exceptional condition code and general registers are set as
shown in Appendix A. If the SETL macro instruction is not reissued, retrieval starts at
the beginning of the data set.

170 OS/VS Data Management Macro Instructions

SETPRT

SETPRT -

Load DCS and FCB Images (BSAM and QSAM)
The SETPRT macro instruction is used with printers that have a universal character set
(UCS) buffer or a forms control buffer (FCB). When a SETPRT macro instruction is
issued, UCS and FCB images are fetched from the image library and loaded from
storage into their respective buffers. The SETPRT macro instruction is also used to
block or unblock printer data checks.
IBM character sets and forms control images are included in the image library at system
generation; user-defined character sets and forms control images can be added to the
image library as described in OS / VS Data Management for System Programmers.
The FCB (EXLST) parameter of the DCB macro instruction.
When BSAM is being used, all write operations must be checked for completion before
the SETPRT macro instruction is issued; any incomplete write operations are purged.
Issuing the SETPRT macro instruction for a device other than an online UCS printer
results in a NOP instruction.
The standard form of the SETPRT macro instruction is written as follows (the list and
execute form are shown following the standard form):

[symbol]

SETPRT

deb address

~

"'"

,UCS= (ese IF[OlD]
,F[OLD] ,V[ERIFY] )
" V[ERIFY]

[, FeB= Omage-;d [, V[ERIFY]]) [,OPTCD= {~}]
,A[U GN]

,FeB= (;mage-;d [, VIl'RIFY]])
,OPTCD= ( {B } [, F[OLD]

deb address -

U

,OPTeD= ( {B }[, F[OLD]
U

,A[U GN]

'-

>-

J)]

,U[NFOLD]

J)

,U[NFOLD]

A-Type Address or (2-12)

The deb address operand specifies the address of the data control block for the data
set to be printed; the data set must be opened for output before the SETPRT macro
instruction is issued.
UCS= A character code with options
The UCS operand specifies that the UCS buffer is to be loaded from the image
library. When the UCS operand is specified, the FCB and OPTCD operands can
also be specified.
esc (character set code)

The esc operand specifie~ the character set to be loaded. A character set is
identified by a 1-4 character code.

Macro Instruction Descriptions 171

Codes for standard IBM character sets are as follows:
1403 Printer: AN, UN, PCAN, PCHN, PN, QN, QNC, RN, SN, TN, XN,
and YN
3211 Printer: All, H11, G11, P11, and T11
For descriptions of the standard IBM character sets, refer to OS/VS1 System
Generation Reference or OS/VS2 System Generation Reference; codes for
user-designed character sets are defined by the installation.
F or FOLD
Specifies that the character set image is to be loaded in the fold mode. The
fold mode is most often used when the EBCDIC code for lowercase alphabetic
characters is printed as uppercase characters by a print train with lowercase
type.
V or VERIFY

Requests that the character set image be displayed on the printer for visual
verification.
FCB= A character code with options
The FCB operand specifies that the forms control buffer (FCB) is to be loaded
from the image library. When the FCB operand is specified, the OPTCD operand
can also be specified.
image id
The image id operand specifies the forms control image to be loaded. A forms
control image is identified by a 1-4 character code. IBM-supplied images are
identified by image id value of STDI and STD2; user-designed forms control
images are defined by the installation.
V or VERIFY

Requests that the forms control image be displayed on the printer for visual
verification. This operand allows forms alignment using the WTOR macro
instruction.
A or ALIGN

Allows forms alignment using the WTOR macro instruction.
OPTCD= A printer option code
The OPTCD operand specifies whether UCS printer data checks are blocked or
unblocked and if the printer is to operate in fold or normal mode.
B

Specifies that UCS printer data checks are blocked; this option updates the
DCBOPTCD field of the data control block.

u
Specifies that UCS printer data checks are unblocked; this option updates the
DCBOPTCD field of the data control block.
F or FOLD
Specifies that printing is in fold mode.
U or UNFOLD
Specifies that printing is in normal mode; this operand causes fold mode to
revert to normal mode.

1720S/VS Data Management Macro Instructions

SETPRT

Completion Codes
After the SETPRT macro instruction is executed, a return code is placed in register 15,
and control is returned to the instruction following the SETPRT macro instruction.
Bits 16-23 indicate the result of the attempt to load the forms control buffer (FCB).
Bits 24-31 indicate the result of the attempt to load a universal-character-set (UCS)
buffer. For completion codes 18, 1C, 20, and 24, bits 24-31 apply to both FCB and
UCS loading. The codes in the following table are in hexadecimal.

I

Bits 16-23
FCB Code

I

Bits 24-31
UCS Code

00

00

Successful completion.

04

04

The operator canceled the load because either the image
could not be found in the image library or, in the case
of the UCS image, the requested chain or train was not
available.

08

08

A permanent I/O error was detected when the BLDL
macro instruction was issued to locate the image in the
image library.

OC

OC

A permanent I/O error persisted after two attempts
were made to load the FCB/UCS buffer.

10

10

A pemianent I/O error was detected when an attempt
was made to display the character set image or forms
control image on the printer for visual verification.

14

14

The operator canceled the load because the wrong
image was displayed for visual verification.

Bits 24-31
FCB/UCS
Code
18

lC

I

Meaning

No operation was performed for one of the following
reasons:
• The data control block was not open.
• The data control block was not valid for a
sequential data set .
• The SETPRT parameter list was not valid.
• The output device was not a UCS printer.
No operation was performed because an uncorrectable
error occurred in a previously initiated output operation.
The error analysis (SYNAD) routine is entered when
the next PUT or CHECK macro instruction is issued.
No operation was performed because an uncorrectable
error occurred when the Block Data Check or Reset
Block Data Check command was issued by SETPRT.

20

Not enough space has been provided for the
IMAGELIB control blocks. Increase the amount of
space allocated for the job step.

24

SYS I.1MAGELIB cannot be opened to load the
specified UCS/FCB image.
Macro Instruction Descriptions 173

SETPRT -

SETPRT -

List Form

List Form
The list form of the SETPRT macro instruction is used to construct a data management
parameter list.
The description of the standard form of the SETPRT macro instruction provides the
explanation of the function of each operand. The description of the standard form also
indicates which operands are totally optional and those required in at least one of the
pair of list and execute forms. The format description below indicates the optional and
required operands for the list form only.
The list form of the SETPRT macro instruction is written as follows:
~ymbol]

SETPRT

-

deb address

.....

r

, UCS= (ese

[F[OLD]
, F[OLD] , V[ERIFY]~ )
" V[ERIFY]

[.FCB= (image-id [V[ERIFY]J) [.OPTCD= {B}J
,A[UGN]

U

.FCB=(image-id [V[ERIFY~]) [.OPTCD= ({B} [FrOLD]
,A[U GN]

.OPTCD= ({B}fF[OLD]

U

~)]

, U[NFOLD]

])

U ,U[NFOLD]

-

~

"

-

,MF=L

deb address -

A-Type Address

UCS= A character code with options
It is coded as described in the standard form of the macro instruction.

FCB= A character code with options
It is coded as described in the standard form of the macro instruction.

OPTCD= A printer option code
It is coded as described in the standard form of the macro instruction.
MF=L

The MF=L operand specifies that the list form of the macro instruction is used to
create a parameter list that can be referenced by an execute form of the SETPRT
macro instruction.

Macro Instruction Descriptions 175

SETPRT -

SETPRT -

Execute Form

Execute Form
A remote data management parameter list is referred to, and can be modified by, the
execute form of the SETPRT macro instruction.
The description of the standard form of the SETPRT macro instruction provides the
explanation of the function of each operand. The description of the standard form also
indicates which operands are totally optional and those required in at least one of the
pair of list and execute forms. The format description below indicates the optional and
required operands for the execute form only.
The execute form of the SETPRT macro instruction is written as follows:

[symbol]

r--

-

r

.....

deb address

SETPRT

, UCS= (ese [F[OLD]
, F[OLD] , V[ERIFY] )]
" V[ERI FY]
[, FCB~ (image-id [V[ERIFY]J)

,A[LI GN]

,FCB~ (image-id

[,OPTCD~ ( {B }

[, VLERIFY]J)

,A[LlGN]

,OPTCD~ ( {B}

'"--

_I

U

f

F[OLD]

U

f

{~}] >

F[OLD]

])

,U[NFOLD]

])

, U[NFOLD]

data management list address

,MF- (E,

[,OPTCD=

I

~

-

)

(1 )

deb address -

RX-Type Address or (2-12)

UCS= A character code with options
It is coded as shown in the standard form of the macro instruction.

FCB = A character code with options
It is coded as shown in the standard form of the macro instruction.

OPTCD= A printer option code
It is coded as shown in the standard form of the macro instruction.
MF=(E,

{data management list address

})

{

}

(1)

This operand specifies that the execute form of the SETPRT macro instruction is
used, and an existing data management parameter list is used.
E-

Coded as shown

data management list address -

RX-Type Address, (2-12), or (1)

Macro Instruction Descriptions 177

STOW

STOW -

Update Partitioned Data Set Directory (BPAM)
The STOW macro instruction causes the system to update a partitioned data set
directory by adding, changing, replacing, or deleting an entry in the directory. Only
one entry can be updated at a time using the STOW macro instruction. If the entry to
be added or replaced is a member name, the system writes an end-of-data indication
following the member. All input/output operations using the same data control block
must have previously been tested for completion.
The STOW macro instruction is written as follows:

STOW

[symbol]

deb address -

dcb address, list address [,directory action]

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block for the
opened partitioned data set. The STOW macro instruction can be used only when
the data set is opened for OUTPUT, UPDAT or OUTIN (BSAM).
list address -

RX-Type Address, (2-12), or (0)

The list address operand specifies the address of the area containing the information
required by the system to maintain the partitioned data set directory. The size and
format of the area depend on the directory action requested as follows:
Adding or Replacing a Directory Entry: The list address operand must specify an
area at least 12 bytes long and beginning on a halfword boundary. The following
illustration shows the format of the area:
list Address

Le~j
Bytes

NAME
8

TTR
3

C

I

USER DATA

0

to

62

~

NAME
Specifies the member name or alias being added or replaced. The name
must begin in the first byte of the field and be padded on the right with
blanks, if necessary, to complete the 8-byte field.

IT
Specifies the relative track number on which the beginning of the data set is
located.
R

Specifies the relative block (record) number on the track identified by IT.

Macro Instruction Descriptions 179

Note: The TTR field shown above must be supplied by the problem program if an
alias (alias bit is 1) is being added or replaced. The system supplies the TTR field
when a member name is being added or replaced.
C

Specifies the type of entry (member or alias)· for the name, the number of
note list fields (TTRNs), and the length in halfwords, of the user data field.
The following describes the meaning of the eight bits.
Indicates a member name.
Bit 0=0
Indicates an alias.
Bit 0= 1
Bits 1 and 2
Indicate the number of TTRN fields (maximum of
three) in the user data field.
Bits 3-7
Indicate the total number of halfwords in the user data
field.
Deleting a Directory Entry: The list address operand must specify an 8-byte area
that contains the member name or alias to be deleted. The name must begin in the
first byte of the area and be padded on the right with blanks, if necessary, to
complete the eight bytes.
Changing the Name of a Member: The list address operand must specify the address
of a 16-byte area; the first 8 bytes contain the old member name or alias, and the
second 8 bytes contain the new member name or alias. Both names must begin in
the first byte of their 8-byte area and be padded on the right with blanks, if
necessary, to complete the 8-byte field.
directory action -

(A)
(C)
(D)
(R)

The directory action operand is coded as shown to specify the type of d:rectory
action. If the operand is not coded, A (add an entry) is assumed.
A

Specifies that an entry is to be added to the directory.
C

Specifies that the name of an existing member or alias is to be changed.
D

Specifies that an existing directory entry is to be deleted.
R

Specifies that an existing directory entry is to be replaced by a new directory
entry. If R is coded but the old entry is not found, the new entry is added to
the directory and a completion code of X'08' is returned in register 15.

180 OS/VS Data Management Macro Instructions

STOW

Completion Codes
When the system returns control to the problem program, register 15 contains one of
the following return codes in the low-order byte; the three high-order bytes of register
15 are set to zero.

Directory Action

Code
(Hexadecimal)

A

00

The update of the directory was completed successfully

04

The directory
already contains
the specified name.

08

R

D

C

The directory already contains
the specified new name.
The specified name could
not be found.

The specified old name could
not be found.

OC

No space left in the directory.
The entry could not be added
or replaced.

10

A permanent input or output error was detected when attempting to update the
directory. Control is not given to the error analysis (SYNAD) routine.

14

The specified data control block is not open or is opened incorrectly.

18

Conditional GETMAIN with STOW macro instruction was unsuccessful.

Macro Instruction Descriptions 181

SYNADAF

SYNADAF - Perform SYNAD Analysis Function (BDAM, BISAM, BPAM,
BSAM, QISAM, and QSAM)
The SYNADAF macro instruction is used in an error analysis routine to analyze
permanent input/output errors. The routine can be a SYNAD routine specified in a
data control block for BDAM, BISAM, BP AM, BSAM, QISAM, QSAM, or a routine
that is entered directly from a program that uses the EXCP macro instruction. (The
EXCP macro instruction is described in OS/VS Data Management for System
Programmers .)
The SYNADAF macro instruction uses register 1 to return the address of a buffer
containing a message. The message describes the error, and can be printed by a
subsequent PUT or WRITE macro instruction. The message consists of EBCDIC
information and is in the form of a variable-length record. The format of the message
is shown following the descriptions of the SYNADAF operands.
The system does not use the save area whose address is in register 13. Instead, it
provides a save area for its own use, and then makes this area available to the error
analysis routine. The system returns the address of the new save area in register 13
and in the appropriate location (word 3) of the previous save area; it also stores the
address of the previous save area in the appropriate location (word 2) of the new save
area.
The SYNADAF macro instruction passes parameters to the system in registers 0 and 1.
When used in a SYNAD routine, it passes the parameters that are in these registers
when the routine is entered, and it should therefore be coded at the entry point of the
routine. (Refer to Appendix A, Figures 2 and 3.) To save these parameters for use by
the SYNAD routine, the system stores them in a parameter save area that follows the
message buffer as shown in the message buffer format. The system does not alter the
return address in register 14 or the entry point address in register 15.
When a SYNADAF macro instruction is used, a SYNADRLS macro instruction must
be used to release the message buffer and save areas, and to restore the original
contents of register 13.
The SYNADAF macro instruction is written as follows:

[symbol]

SYNADAF

I

rSMETH=BDAM!
ACSMETH=BPAM
.
. 1
ACSMET H=BSA M [, PA RM 1=pa,m 'eg ",ee]
[, PA RM2~pa'm 'eg "'e,
ACSMETH=QSAM
ACSMETH=BISAM
ACSMETH=EXCP [, PARM 1=iob address]
\ ACSMETH=QISAM[,PARM1=dcb address] [,PARM2=parm register]

ACSMETH=BDAM, BPAM, BSAM, QSAM, BISAM, EXCP, or QISAM
The ACSMETH operand specifies the access method used to perform the
input/ output operation for which error analysis is performed.

Macro Instruction Descriptions 183

PARMl= parm register, iob address, or deb address -

I

(2-12) or (1)

The PARMI operand specifies the address of information that is dependent on the
access method being used. For BDAM, BISAM, BPAM, BSAM, or QSAM, the
operand specifies a register that contains the information that was in register 1 on
entry to the SYNAD routine. For QISAM, the operand specifies the address of the
data control block; for EXCP, it specifies the address of the input/output block. If
the operand is omitted, PARMI =(1) is assumed.

PARM2= parm register- (2-12), (0), or RX-Type Address (only if
ACSMETH=QISAM)

The PARM2 operand specifies the address of additional information that is
dependent on the access method being used. For BDAM, BISAM, BPAM, BSAM,
QISAM, and QSAM, the operand specifies a register that contains the information
that was in register 0 on entry to the SYNAD routine. For EXCP, the operand is
meaningless and should be omitted. If the operand is omitted, except in the case of
EXCP, PARM2=(O) is assumed.

Completion Codes
When the system returns control to the problem program, the low-order byte of
register 0 contains one of the following return codes; the three high-order bytes of
register 0 are set to zero.
Hexadecimal Code

Meaning

00

Successful completion. Bytes 8-13 of the message buffer
contain blanks.

04

Successful completion. Bytes 8-13 of the message buffer
contain binary data.

08

Unsuccessful completion. The message can be printed, but
some information is missing in bytes 50-127 and is
represented by asterisks. Bytes 8-13 contain either blanks or
binary data.

184 OS/VS Data Management Macro Instructions

SYNADAF

Message Buller Format
The following illustration shows the format of the message buffer; the address of the
buffer is returned in register 1.
8
Messalile Buffer
Byte 0

I'

l b b

Input:

4

II I

b b

r-

Doubleword
Boundary
LL = 128; II = 124; bb = 000

14

12
No. of
Bytes
Read

Input
Buffer
Address

1'4

8
Output:

I

114
(Blanks)

Jobname

Device
Type

Stepname

84

,

Error Description

,

DDname

107

91
Operation
Attempted

t

I, ISO
84

75

72

59

50

(Blanks)

107
Access
Method

(Asterisks)

Unit Record:

Relative Block
Number (decimal)

Magnetic Tape:

,

Access
Method

Parameter Save Area
128
132
Parameter
Parameter
Register 0
Register 1
(PARM2)
(PARM 1)

Actual Track Address and Block Number
(BBCCHHR in hexadecimal format)

(End of Buffer -Beginning of
Parameter Save Area)

(Blanks)
128

122

107
Direct Access:

128

120

115

107

Access
Method

136

1

Notes
The device type field (bytes 72-73) contains UR for a unit record device, TA for a
magnetic tape device, or DA for a direct-access device.
•

If a message field (bytes 91-105) is not applicable to the type of error that
occurred, it contains N/ A or NOT APPLICABLE.
If no data was transmitted, or if the access method is QISAM, bytes 8-13 contain
blanks.

•

If the access method is BISAM, bytes 68-70, 84-89, and 107-120 contain
asterisks.

•

If the access method is BDAM, and if the error was an invalid request, bytes
107-120 contain EBCDIC zeros.

Macro Instruction Descriptions 185

SYNADRLS

SYNADRLS - Release SYNADAF Buffer and Save Areas (BDAM, BISAM,
BPAM, BSAM, QISAM, and QSAM)
The SYNADRLS macro instruction releases the message buffer, parameter save area,
and register save area provided by a SYNADAF macro instruction. It must be used to
perform this function whenever a SYNADAF macro instruction is used.
When the SYNADRLS macro instruction is issued, register 13 must contain the address
of the register save area provided by the SYNADAF macro instruction. The control
program loads register 13 with the address of the previous save area, and sets word 3
of that save area to zero. Thus, when control is returned, the save area pointers are
the same as before the SYNADAF macro instruction was issued.
The SYNADRLS macro instruction is written as follows:

I

[symboO

I

SYNADRlS

I

When the system returns control to the problem program, the low-order byte of
register 0 contains one of the following return codes; the three high-order bytes of
register 0 are set to zero.
Hexadecimal Code

Meaning

00

Successful completion.

08

Unsuccessful completion. The buffer and save areas were not
released; the contents of register 13 remain unchanged.
Register 13 does not point to the save area provided by the
SYNADAF macro instruction, or this save area is not properly
chained to the previous save area.

Macro Instruction Descriptions 187

TRUNC

TRUNC - Truncate an Output Buffer (QSAM Output Variable-Length Blocked Records)

Fixed- or

The TRUNC macro instruction causes the current output buffer to be regarded as full.
The next PUT or PUTX macro instruction specifying the same data control block uses
the next buffer to hold the logical record.
When a variable-length spanned record is being truncated and logical record interface
is specified (that is, if BFTEK=A is specified in the DCB macro instruction, or if a
BUILDRCD macro instruction is issued), the system segments and writes the record
before truncating the buffer. Therefore, the block being truncated is the one that
contains the last segment of the spanned record.
The TRUNC macro instruction is ignored if it is used for unblocked records; if it is
used when a buffer is full, or if it is used without an intervening PUT or PUTX macro
instruction.
The TRUNC macro instruction is written as follows:

[symbolJ

deb address -

TRUNC

I deb address

RX-Type Address, (2-12), or (1)

The deb address operand specifies the address of the data control block for the
sequential data set opened for output. The record format in the data control block
must not indicate standard blocked records (RECFM=FBS).

Macro Instruction Descriptions 189

WRITE-BDAM

WRITE -

Write a Block (BDAM)
The WRITE macro instruction causes the system to add or replace a block in an
existing direct data set. (This version of the WRITE macro instruction cannot be used
to create a direct data set because no capacity record facilities are provided.) Control
may be returned before the block is written. The output operation must be tested for
completion using a CHECK or WAIT macro instruction. A data event control block,
shown in Appendix A is constructed as part of the macro expansion.
The standard form of the WRITE macro instruction is written as follows (the list and
execute forms are shown following the descriptions of the standard form):

WRITE

[symbol]

I I'I
en9 t h

'5'

decb name -

I

deeb name, type, deb address, {area address},

'5'

key add ress ,b lock address

'5'
0

symbol

The decb name operand specifies the name assigned to the data event control block
created as part of the macro expansion.
type -{DA

(F)}

{DI

(F)}
(X]

{DK

(F)}
(X]

The type operand is coded in one of the combinations shown to specify the type of
write operation and optional services performed by the system.
DA

Specifies that a new data block is to be added to the data set in the first
available space; the search for available space starts at the device address
indicated in the area specified in the block address operand. The description of
the DCB macro instruction, LIMCT operand, contains a description of the
search.

DI
Specifies that a data block and key, if any, are to be written at the device
address indicated in the area specified in the block address operand. Any
attempt to write a capacity record (RO) is an invalid request when relative
track addressing or actual device addressing are used, but when relative block
addressing is used, relative block 0 is the first data block in the data set.

Macro Instruction Descriptions 191

OK

Specifies that a data block (only) is to be written using the key in the area
specified by the key address operand as a search argument; the search for the
block starts at the device address indicated in the area specified in the block
address operand. The description of the DCB macro instruction, LIMCT
operand, contains a description of the search.
F

Requests that the system provide block position feedback into the area
specified in the block address operand. This character can be coded as a suffix
to DA, OJ, or OK as shown above.

x
Requests that the system release the exclusive control requested by a previous
READ macro instruction and provide block position feedback into the area
specified in the block address operand. This character can be coded as a suffix
to OJ or OK as shown above.
dcb address -

A-Type Address or (2-12)

The dcb address operand specifies the address of the data control block for the
opened BDAM data set.
area address -

A-Type Address, (2-12), or'S'

The area address operand specifies the address of the area that contains the data
block to be written. 'S' can be coded instead of an area address only if the data
block (or key and data) are contained in a buffer provided by dynamic buffering;
that is, 'S' was coded in the area address operand of the associated READ macro
instruction. If'S' is coded in the WRITE macro instruction, the area address from
the READ macro instruction data event control block must be moved into the
WRITE macro instruction data event control block; the buffer area acquired by
dynamic buffering is released after the WRITE macro instruction is executed. See
Appendix A for a description of the data event control block.
length -

symbol, decimal digit, absexp, (2-12) or'S'

The length operand specifies the number of data bytes to be written up to a
maximum of 32,760. If'S' is coded, it specifies that the system uses the value in
the blocksize (DCBBLKSI) field as the length. When undefined-length records are
used, if the WRITE macro instruction is for update and the length specified differs
from the original block, the new block will be truncated or padded with binary
zeros accordingly. The problem program can check for this situation in the SYNAD
routine.
If the length operand is omitted for format-U records, no error indication is given

when the program is assembled, but the problem program must insert a length into
the data event control block before the WRITE macro instruction is executed.
key address -

A-Type Address, (2-12), 'S', or 0

The key address operand specifies the address of the area that contains the key to
be used. 'S' is specified instead of an address only if the key is contained in an area
acquired by dynamic buffering. If the key is not written or used as a search
argument, zero is specified instead of a key address.

192 OS/VS Data Management Macro Instructions

WRITE-BDAM
block address -

A-Type Address or (2-12)

The block address operand specifies the address of the area that contains the
relative block address, relative track address, or actual device address used in the
output operation. The length of the area depends on the type of addressing used
and if the feedback option (OPTCD=F) is specified in the data control block.
If OPTCD=F has been specified, feedback, when requested, is in the same form as

was originally presented by the WRITE macro instruction; the area is either three or
eight bytes long depending on the type of addressing.
If OPTCD=F has not been specified, feedback, when requested, is in the form of

an 8-byte actual device address (MBBCCHHR); the area must be eight bytes.

Macro Instruction Descriptions 193

WRITE -

WRITE -

BISAM

Write a Logical Record or Block of Records (BISAM)
The WRITE macro instruction causes the system to add or replace a record or replace
an updated block in an existing indexed sequential data set. Control may be returned
to the problem program before the block or record is written. The output operation
must be tested for completion using aWAIT or CHECK macro instruction. A data
event control block, shown in Appendix A, is constructed as part of the macro
expansion.
The standard form of the WRITE macro instruction is written as follows (the list and
execute forms are shown following the descriptions of the standard form):

WRITE

[symbol]

deeb name type, deb address {area addreSS}
,
"5"
{,ength}
'5'
,key address

deeb name -

symbol

The deeb name operand specifies the name assigned to the data event control block
created as part of the macro expansion.
type -

{K} {KN}

The type operand is coded as shown to specify the type of write operation.
K

Specifies that either an updated unblocked record or a block containing an
updated record is to be written. If the record has been read using a READ
KU macro instruction, the data event control block for the READ macro
instruction must be used as the data event control block for the WRITE macro
instruction, using the execute form of the WRITE macro instruction.

KN Specifies that a new record is to be written, or a variable-length record is to be
rewritten with a different length. All records or blocks of records read using
READ KU macro instructions for the same data control block must be written
back before a new record can be added except when the READ KU and
WRITE KN refer to the same DECB.
deb address -

A-Type Address or (2-12)

The deb address operand specifies the address of the data control block for the
opened existing indexed sequential data set. If a block is written, the data control
block address must be the same as the deb address operand in the corresponding
READ macro instruction.
area address -

A-Type Address, (2-12), or'S'

The area address operand specifies the address of the area containing the logical
record or block of records to be written. The first sixteen bytes of this area are
used by the system and should not contain your data. When new records are
written (or when variable-length records are rewritten with a different length), the
Macro Instruction Descriptions 195

I

area address of the new record must always be supplied by the problem program.
This area may be altered by the system. '8' may be coded instead of an address
only if the block of records is contained in an area provided by dynamic buffering;
that is, '8' was coded for the area address operand in the associated READ KU
macro instruction. This area is released after execution of a WRITE macro
instruction using the same DECB. The area can also be released by a FREEDBUF
macro instruction.

The following illustration shows the format of the area:
Area_
Address
Control
Program
Use

Logical Record (WRITE KN) or Block of Records (WRITE K)

Indexed sequential buffer and work area requirements are discussed in OS / VS Data
Management Services Guide.
length - ,symbol, decimal digit, absexp, (2-12) or'S'

The length operand specifies the number of data bytes to be written, up to a
maximum of 32,760. Specify'S' unless a variable-length record will be rewritten
with a different length.
key address -

A-Type Address or (2-12)

The key address operand specifies the address of the area containing the key of the
new or updated record. For blocked records, this is not necessarily the high key in
the block. For unblocked records, this field should not overlap with the work area
specified in the MSWA parameter of the DCB macro instruction.
Note: When new records are written, the key area may be altered by the system.

196 OS/VS Data Management Macro Instructions

WRITE -

WRITE -

BPAM and BSAM

Write a Block (BPAM and BSAM)
The WRITE macro instruction causes the system to add or replace a block in a
sequential or partitioned data set being created or updated. Control may be returned
to the problem program before the block is written. The output operation must be
tested for completion using the CHECK macro instruction. A data event control block,
shown in Appendix A, is constructed as part of the macro expansion.
If translation from EBCDIC code to ASCII code is requested, issuing mUltiple WRITE

macro instructions for the same record causes an error because the first WRITE macro
instruction issued causes the output data in the output buffer to be translated into
ASCII code.
If the OPEN macro instruction specifies UPDAT, both the READ and WRITE macro

instructions must refer to the same data event control block. Refer to the list form of
the READ or WRITE macro instruction for a description of how to construct a data
event control block; refer to the execute form of the READ or WRITE macro
instruction for a description of modifying an existing data event control block.
The standard form of the WRITE macro instruction is written as follows (the list and
execute forms are shown following the descriptions of the standard form):

[symbol]

deeb name -

WRITE

deeb name/type,deb address, area address [, Ie. ngthJ
, '5'

symbol

The deeb name operand specifies the name assigned to the data event control block
created as part of the macro expansion.
type -

SF

This operand is coded as shown to specify the type of Write operation.
SF Specifies normal, sequential forward operation.
deb address -

A-Type Address, or (2-12)

The deb address operand specifies the address of the data control block for the
opened data set being created or processed. If the data set is being updated, the
data control block address must be the same as the deb address operand in the
corresponding READ macro instruction.
area address -

A-Type Address or (2-12)

The area address operand specifies the address of the area that contains the data
block to be written; if a key is written, the key must precede the data in the same
area.

Macro Instruction Descriptions 197

length -

symbol, decimal digit, absexp, (2-12) or'S'

The length operand specifies the number of bytes to be written; this operand is
specified for only undefined-length records (RECFM= U) or ASCII records
(RECFM=D) when the DCB BUFOFF operand is zero. If the data is to be
translated from EBCDIC code, to ASCII code the maximum length is 2048;
otherwise, the maximum length is 32,760 bytes. 'S' can be coded to indicate that
the value specified in the blocksize (DCBBLKSI) field of the data control block is
used as the length to be written. The length operand should be omitted for all
record formats except format-U and format-D (when BUFOFF=O).
If the length operand is omitted for format-U or format-D (with BUFOFF=O)
records, no error indication is given when the program is assembled, but the
problem program must insert a length into the data event control block before the
data set is opened.

198 OS/VS Data Management Macro Instructions

WRITE-BSAM

WRITE -

Write a Block (Create a BDAM Data Set with BSAM)
The WRITE macro instruction causes the system to add a block to the direct data set
being created. For fixed-length blocks, the system writes the capacity record
automatically when the current track is filled; for variable- and unspecified-length
blocks, a WRITE macro instruction must be issued for the capacity record. Control
may be returned before the block is written. The output operation must be tested for
completion using a CHECK macro instruction. A data event control block, shown in
Appendix A, is constructed as part of the macro expansion.
The standard form of the WRITE macro instruction is written as follows (the list and
execute forms are shown following the descriptions of the standard form):

[symbol]

WRITE

decb name -

symbol

decb name, type, deb address,area addreSs~lengt~ ~next addres~
, 'S'

The decb name operand specifies the name assigned to the data event control block
created as part of the macro expansion.
type -

{SF }
{SFR}
{SD }
{SZ

}

The type operand is coded as shown, to specify the type of write operation
performed by the system.
SF

Specifies that a new data block is to be written in the data set.
SFR

Specifies that a new variable-length spanned record is to be written in the data
set, and next address feedback is requested. This operand can be specified
only for variable-length spanned records (BFTEK=R and RECFM= VS are
specified in the data set control block).
SD
Specifies that a dummy data block is to be written in the data set; dummy data
blocks can be written only when fixed-length records with keys are used.
SZ

Specifies that a capacity record (RO) is to be written in the data set; capacity
records can be written only when variable-length or undefined-length records
are used.

Macro Instruction Descriptions 199

deb address -

A-Type Address or (2-12)

The deb address operand specifies the address of the data control block opened for
the data set being created. DSORG=PS (or PSU) and MACRF=WL must be
specified in the DCB macro instruction to create a BDAM data set.
area address -

A-Type Address or (2-12)

The area address operand specifies the address of the area that contains the data
block to be added to the data set. If keys are used, the key must precede the data
in the same area. For writing capacity records (SZ), the area address is ignored and
can be omitted (the system supplies the information for the capacity record). For
writing dummy data blocks (SO), the area need be only large enough to hold the
key plus one data byte. The system constructs a dummy key with the first byte set
to all one bits (hexadecimal FF) and adds the block number in the first byte
following the key. When a dummy block is written, a complete block is written
from the area immediately following the area address; therefore, the area address
plus the value specified in the BLKSIZE operand must be within the area allocated
to the program writing the dummy blocks.
length -

symbol, decimal digit, absexp, (2-12), or'S'

The length operand is used only when undefined-length (RECFM= U) blocks are
being written. The operand specifies the length of the block, in bytes, up to a
maximum of 32,760. If'S' is coded, it specifies that the system is to use the length
in the blocksize (DCBBLKSI) field of the data control block as the length of the
block to be written~
If the length operand is omitted for format-U records, no error indication is given
when the program is assembled, but the problem program must insert a length into
the data event control block before the data set is opened.
next address -

A-Type Address or (2-12)

The next address operand specifies the address of the area where the system places
the relative track address of the next record to be written. Next address feedback
can be requested only when variable-length spanned records are used.
Note: When variable-length spanned records are used (RECFM= VS and BFTEK=R
are specified in the data control block), the system writes capacity records (RO)
automatically in the following cases:
•

When a record spans a track.

•

When the record cannot be written completely on the current volume. In this case,
all capacity records of remaining tracks on the current volume are written; tracks
not written for this reason are still counted in the search limit specified in the
LIMCT operand of the data control block.

•

When the record written is the last record on the track, the remaining space on the
track cannot hold more than ei~ht bytes of data.

200 OS/VS Data Management Macro Instructions

WRITE-BSAM

Completion Codes
When the system returns control to the problem program, the low-order byte of
register 15 contains one of the following return codes; the three high-order bytes of
register 15 are set to zero.
Code

Meaning
Fixed-Length

Variable- or Unspecified-Length

(SF or SD)

(SF or SFR)

(SZ)

00

Block was written. (If the previous return code
was 08, a block is written only if the nn
statement specifies secondary space allocation
and sufficient space is available.

04

Block was written,
followed by a capacity
record.

08

Block was written,
followed by capacity
record. The next block
requires secondary
space allocation.

OC

Block will not be written; issue a CHECK macro instruction for the previous
WRITE macro instruction, then reissue the WRITE macro instruction.

Capacity record was
written; another track
is available.

Block was not written;
write a capacity record
(SZ) to complete
the current track, then
reissue.
Capacity record was
written. The next
block requires secondary
space allocation. This
code is not issued if
the WRITE SZ is the
only WRITE macro
instruction issued on
a one-track secondary
extent.

Macro Instruction Descriptions 201

WRITE -

WRITE -

List Form

List Form
The list form of the WRITE macro instruction is used to construct a data management
parameter list in the form of a data event control block (DECB). Refer to Appendix A
for a description of the various fields in the DECB for each access method.
The description of the standard form of the WRITE macro instruction provides the
explanation of the function of each operand. The description of the standard form also
indicates the operands used for each access method as well as the meaning of '8' when
coded for the area address, length, and key address operands. For each access
method, '8' can be coded only for those operands for which it can be coded in the
standard form of the macro instruction. The format description below indicates the
optional and required operands in the list form only.
The list form of the WRITE macro instruction is written as follows:

WRITE

[symbol]

decb name, type, [dcb address],~rea addres~,

'5'
~engt~ ,[key addres~, [block address], [next address]
'S~

·s·

,MF=L

decb name

-

symbol

type

-

Code one of the types shown in the standard form

dcb address -

A-Type Address

area address -

A-Type Address or'S'

length

-

symbol, decimal digit, absexp, or '8'

key address -

A-Type Address or '8'

block address -

A-Type Address

next address -

A-Type Address

-

Coded as shown

MF=L

The MF=L operand specifies that the WRITE macro instruction is used to create a
data event control block that wiU be referenced by an execute-form instruction.

Macro Instruction Descriptions 203

WRITE -

WRITE -

Execute Form

Execute Form
A remote data management parameter list (data event control block) is used in, and
can be modified by, the execute form of the WRITE macro instruction. The data event
control block can be generated by the list form of either a READ or WRITE macro
instruction.
The description of the standard form of the WRITE macro instruction provides the
explanation of the function of each operand. The description of the standard form also
indicates the operands used for each access method, as well as the meaning of '8' when
coded for the area address, length, and key address operands. For each access
method, '8' can be coded only for those operands for which it can be coded in the
standard form of the macro instruction. The format description below indicates the
optional and required operands in the execute form only.
The execute form of the WRITE macro instruction is written as follows:
WRITE

[symbol]

decb address, type, [dcb address], ~rea addresJ'
'$'

~engthJ' [key addres~ , [block address], [next address]
'5'
'5'

,MF=E

decb address -

RX-Type Address or (2-12)

type

Code one of the types shown in the standard form

-

deb address -

RX-Type Address or (2-12)

area address -

RX-Type Address, (2-12), or '8'

length

-

key address -

symbol, decimal digit, absexp, (2-12), or '8'
RX-Type Address, (2-12), or '8'

block address- RX-Type Address or (2-12)
next address -

MF=E

-

RX-Type Address or (2-12)
Coded as shown

The MF=E operand specifies that the execute form of the WRITE macro
instruction is used, and an existing data event control block (specified in the decb
address operand) is to be used by the access method.

Macro Instruction Descriptions 205

XLATE

XLATE - Translate to and from ASCII (BDAM, BISAM, BPAM, BSAM,
QISAM, and QSAM)
The XLATE macro instruction is used to translate the data in an area in virtual storage
from ASCII code to EBCDIC code or from EBCDIC code to ASCII code.
The XLATE macro instruction is written as follows:

[symbol]

area address -

XLATE

I:I]

area address, Ie ngth [, T0:

RX-Type Address, symbol, decimal digit, absexp, or (2-12)

The area address operand specifies the address of the area that is to be translated.
length -

symbol, decimal digit,

absexp~

or (2-12)

The length operand specifies the number of bytes to be translated.
TO

=

{AI
{EI

The TO operand specifies the type of translation that is requested. The following
describes the characters that can be specified. If this operand is omitted, E is
assumed.
A

Specifies that translation from EBCDIC code to ASCII code is requested.
E

Specifies that translation from ASCII code to EBCDIC code is requested.

Macro Instruction Descriptions 207

APPENDIX A: STATUS INFORMATION FOLLOWING AN
INPUT /OUTPUT OPERATION
Following an input/output operation, the control program makes certain status
information available to the problem program. This information is a 2-byte exception
code, or a 16-byte field of standard status indicators, or both.
Exception codes are provided in the data control block (QISAM), or in the data event
control block (BISAM and BDAM). The data event control block is described below,
and the exception code lies within the block as shown in the illustration for the data
event control block. If a DCBD macro instruction is coded, the exception code in a
data control block can be addressed as two I-byte fields, DCBEXCD 1 and
DCBEXCD2. The exception codes can be interpreted by referring to Figures 1-3.
Status indicators are available only to the error analysis routine designated by the
SYNAD entry in the data control block. A pointer to the status indicators is provided
either in the data event control block (BSAM, BPAM, and BDAM), or in register 0
(QISAM and QSAM). The contents of registers on entry to the SYNAD routine are
shown in Figures 4-6; the status indicators are shown in Figure 7.

Data Event Control Block
A data event control block is constructed as part of the expansion of READ and
WRITE macro instructions and is used to pass parameters to the control program, help
control the read or write operation, and receive indications of the success or failure of
the operation. The data event control block is named by the READ or WRITE macro
instruction, begins on a fullword boundary, and contains the information shown in the
following illustration:

Field Contents
Offset From DECB
Address (Bytes)

BSAM and BPAM

0
+4

ECB

ECB

ECB1

Type

Type

Type

BISAM

BDAM

+6

Length

Length

Length

+8

DCB address

DCB address

DCB address

+12

Area address

Area address

Area address

lOB address
(Figure 7)

Logical record
address

lOB address
(Figure 7)

Key address

Key address

Exception code

Block address

+1f)

+20
+24

(2 bytes)
(Figure 1)

+28

11

Next address

Exception codes are returned in the second and third bytes of the ECB by the control program.

See Figure 3.

Appendix A: Status Information Following an Input/Output Operation 209

The event control block (ECB) is used by the control program to test for completion of
the read or write operation. The type, length, data control block address, area address,
key address, block address, and next address information is taken from the operands of
the macro instruction for use by the control program. Exception codes are returned by
the control program after the corresponding WAIT or CHECK macro instruction is
issued, as indicated in Figure 1; for BDAM, BSAM, and BP AM the control program
provides a pointer to the lOB containing the status indicators shown in Figure 7.
Exception
Code Bit

READ

WRITE

Condition if On

0

X

Type K

Record not found

X

X

Record length check

2

Type KN

Space not found

3

Type K

Invalid request

4

X

X

Uncorrectable I/O
error

5

X

X

Unreachable block

6

X

Overflow record

7

Type KN

8-15

8-15

Figure 1. Exception Code Bits -

Duplicate record
Reserved for
control program use

BISAM

Record Not Found: This condition is reported if the logical record with the specified
key is not found in the data set, if the specified key is higher than the highest key in
the highest level index, or if the record is not in either the prime area or the overflow
area of the data set.
Record Length Check: This condition is reported, for READ and update WRITE
macro instructions, if an overriding length is specified and (1) the record format is
blocked, (2) the record format is unblocked but the overriding length is greater than
the length known to the control program, or (3) the record is fixed length and the
overriding length does not agree with the length known to the control program. This
condition is reported for the add WRITE macro instruction if an overriding length is
specified.
When blocked records are being updated, the control program must find the high key in
the block in order to write the block. (The high key is not necessarily the same as the
key supplied by the problem program.) The high key is needed for writing because the
control unit for direct-access devices permits writing only if a search on equal is
satisfied; this search can be satisfied only with the high key in the block. If the user
were permitted to specify an overriding length shorter than the block length, the high
key might not be read; then, a subsequent write request could not be satisfied. In
addition, failure to write a h~gh key during update would make a subsequent update
impossible.

210 OS/VS Data Management Macro Instructions

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

Space Not Found in Which to Add a Record: This condition is reported if no room
exists in either the appropriate cylinder overflow area or the independent overflow area
when a new record is to be added to the data set. The data set is not changed in any
way in this situation.
Invalid Request: This condition is reported for either of two reasons. First, if byte 25
of the data event control block indicates that this request is an update WRITE macro
instruction corresponding to a READ (for update) macro instruction, but the
input/ output block (lOB) for the READ is not found in the update queue. This
condition could be caused by the problem program altering the contents of byte 25 of
the data event control block. Second, if a READ or WRITE macro instruction
specifies dynamic buffering (that is, 'S' in the area address operand) but the
DCBMACRF field of the data control block does not specify dynamic buffering.
Uncorrectable Input/Output Error: This condition is reported if the control program's
error recov"ery procedures encounter an uncorrectable error in transferring data.
Unreachable Block: This condition is reported if an uncorrectable input/output error
occurs while searching the indexes or following an overflow chain. It is also posted if
the data field of an index record contains an improper address (that is, points to the
wrong cylinder or track or is an invalid address).
Overflow Record: This condition is reported if the record just read is an overflow
record. (See the section on Direct Retrieval and Update of an Indexed Sequential Data
Set in OS/VS Data Management Services Guide for consideration during BISAM
updating.)
Duplicate Record Presented for Inclusion in the Data Set: This condition is reported if
the new record to be added has the same key as a record in the data set. However, if
the delete option was specified and the record in the data set is marked for deletion,
this condition is not reported. Instead the new record replaces the existing record.
If the record format is blocked and the relative key position is zero, the new record
cannot replace an existing record that is of equal key and is marked for deletion.

Record Not Found: This condition is reported if the logical record with the specified
key is not found in the data set, if the specified key is higher than the highest key in
the highest level index, or if the record is not in either the prime area or the overflow
area of the data set.
Invalid Actual Address for Lower Limit: This condition is reported if the specified lower
limit address is outside the space allocated to the data set.
Space Not Found in Which to Add a Record: -This condition is reported if the space
allocated to the data set is already filled. In the locate mode, a buffer segment address
is not provided. In the move mode, data is not moved.
Invalid Request: This condition is reported if (1) the data set is already being referred
to sequentially by the problem program, (2) the buffer cannot contain the key and the
data, or (3) the specified type is not also specified in the DCBMACRF field of the
data control block.
Uncorrectable Input Error: This condition is reported if the control program's error
recovery procedures encounter an uncorrectable error when transferring a block from
secondary storage to an input buffer. The buffer address is placed in register 1, and

Appendix A: Status Information Following an Input/Output Operation 211

Exception Code
Field

Bit

DCBEXCDl

0

Code Set by
CLOSE

GET

PUT

PUTX

Type I

Invalid actual address for lower limit

X

X

X

X

Sequence check

X

Duplicate record
Data control block closed when error routine
entered

X

3

Overflow record 1

X

4

Block could not be reached (input)
Block could not be reached (update)

X

0

Uncorrectable output error

X

X
X

Invalid request
Uncorrectable input error

X

6

2

Record Not Found

X

4

DCBEXCD2

Type K

Space not found in which to add a record

3

7

Condition if On

X

2

5

SETL

X

5-7

Incorrect record length
Reserved for future use

1The SYNAD routine is entered only if bit 4, 5, 6, or 7 of DCBEXCD1 is also on.

Figure 2. Exception Code Bits -

QISAM

the SYNAD routine is given control when a GET macro instruction is issued for the
first logical record.
Uncorrectable Output Error: This condition is reported if the control program's error
recovery procedures encounter an uncorrectable error when transferring a block from
an output buffer to secondary storage. If the error is encountered during closing of the
data control block, bit 2 of DCBEXCD2 is set to 1 and the SYNAD routine is given
control immediately. Otherwise, control program action depends on whether load mode
or scan mode is being used.
If a data set is being created (load mode), the SYNAD routine is given control when

the next PUT or CLOSE macro instruction is issued. In the case of a failure to write a
data block, register 1 contains the address of the output buffer, and register contains
the address of a work area containing the first 16 bytes of the lOB; for other errors,
the contents of register 1 are meaningless. After appropriate analysis, the SYNAD
routine should close the data set or end the job step. If records are to be subsequently
added to the data set using the queued indexed sequential access method (QISAM), the
job step should be terminated by issuing an ABEND macro instruction. (ABEND
closes all open data sets. However, an ISAM data set is only partially closed, and it
can be reopened in a later job to add additional records by using QISAM). Subsequent
execution of a PUT macro instruction would cause reentry to the SYNAD routine,
since an attempt to continue loading the data set would produce unpr~dictable results.

°

If a data set is being processed (scan mode), the address of the output buffer in error is

placed in register 1, the address of a work area containing the first 16 bytes of the lOB
is placed in register 0, and the SYNAD routine is given control when the next GET

212 OS/VS Data Management Macro Instructions

macro instruction is issued. Buffer scheduling is suspended until the next GET macro
instruction is reissued.
Block Could Not be Reached (Input): This condition is reported if the control program's
error recovery procedures encounter an uncorrectable error in searching an index or
overflow chain. The SYNAD routine is given control when a GET macro instruction is
issued for the first logical record of the unreachable block.
Block Could Not be Reached (Output): This condition is reported if the control
program's error recovery procedures encounter an uncorrectable error in searching an
index or overflow chain.
If the error is encountered during closing of the data control block, bit 2 of

DCBEXCD2 is set to 1 and the SYNAD routine is given control immediately.
Otherwise, the SYNAD routine is given control when the next GET macro instruction
is issued.
Sequence Check: This condition is reported if a PUT macro instruction refers to a
record whose key has a smaller numerical value than the key of the record previously
referred to by a PUT macro instruction. The SYNAD routine is given control
immediately; the record is not transferred to secondary storage.
Duplicate Record: This condition is reported if a PUT macro instruction refers to a
record whose key duplicates that of the record previously referred to by a PUT macro
instruction. The SYNAD routine is given control immediately; the record is not
transferred to secondary storage.
Data Control Block Closed When Error Routine Entered: This condition is reported if
the control program's error recovery procedures encounter an uncorrectable output
error during closing of the data control block. Bit 5 or 7 of DCBEXCD 1 is set to 1,
and the SYNAD routine is immediately given control. After appropriate analysis, the
SYNAD routine must branch to the address in return register 14 so that the control
program can finish closing the data control block.
Overflow Record: This condition is reported if the input record is an overflow record.
Incorrect Record Length: This condition is reported if the length of the record as
specified in the record-descriptor word (RDW) is larger than the value in the
DCBLRECL field of the data control block.
Record Not Found: This condition is reported if the search argument is not found in the
data set.
Record Length Check: This condition occurs for READ and WRITE (update) and
WRITE (add). For WRITE (update) variable-length records only, the length in the
BDW does not match the length of the record to be updated. For all remaining READ
and WRITE (update) conditions the BLKSIZE, when'S' is specified in the READ or
WRITE macro, or the length given with these macros does not agree with the actual
length of the record. For WRITE (add), fixed-length records, the BLKSIZE, when'S'
is specified in the WRITE macro, or the length given with this macro does not agree
with the actual length of the record. For WRITE (add), all other conditions, no error
can occur.
Space Not Found in Which to Add a Record: This condition occurs if either, there is no
dummy record when adding an F-format record, or there is no space available when
adding a V or U-format record.

Appendix A: Status Information Following an Iriput/Output Operation 213

Exception
Code Bit

READ

0

WRITE

Condition if On

X

X

Record not found

X

X

Record length check

X

Space not found

2
3

X

X

Invalid request -

4

X

X

Uncorrectable I/O error

5

X

X

End of data

6

X

X

Uncorrectable error

Type X

7

see bits 9-15

Not read with exclusive control
Not used

8

9

X

WRITE to input data set

10

X

X

Extended search with DCBLlMCT=O

11

X

X

Block or track requested was outside data set

X

Tried to write capacity record

12
13

X

X

Specified key as search argument when KEYLEN =0 or no
key address supplied

14

X

X

Request for options not in data control block

X

Attempt to add fixed-length record with key beginning
with hex FF

15

Figure 3. Exception Code Bits -

BDAM

Invalid Request: Occurs whenever one of the following bits are set to one;
Bit 9 Bit 10 Bit 11
Bit 12 Bit 13
Bit 14
Bit 15

A WRITE was attempted for an input data set.
An extended search was requested, but LIMCT was zero.
A WRITE (add) with fixed-length was attempted with the key
beginning with X'FF'.
Writing a capacity record (RO) was attempted.
A READ or WRITE with key was attempted, but either KEYLEN
equaled zero or the key address was not supplied.
The READ or WRITE macro options conflict with the OPTCD or
MACRF parameters.
The relative block or relative track requested was not in the data set.

Uncorrectable Input/Output Error: This condition is reported if the control program's
error recovery procedures encounter an uncorrectable error in transferring data
between real and secondary storage.
End of Data: This only occurs as a result of a READ (type DI, DIF, or DIX) when the
record requested is an end-of-data record.
Uncorrectable error: Same conditions as for bit 4.
Not Read With Exclusive Control: A WRITE, type DIX or DKX, has occurred for
which there is no previous corresponding READ with exclusive control.

214 OS/VS Data Management Macro Instructions

Register

Bits

Meaning

o

0-7

Not used.

8-31

Address of a work area containing the first 16 bytes of the lOB (after an
uncorrectable input/output error caused by a GET, PUT, or PUTX macro
instruction; original contents destroyed in other cases). If the error condition was
detected before I/O was started, register 0 contains all zeros.

0-7

Not used.

8-31

Address of the buffer containing the error record (after an uncorrectable
input/output error caused by a GET, PUT, or PUTX macro instruction while
attempting to read or write a data record; in other cases this register contains 0).

2-13

0-31

Contents that existed before the macro instruction was issued.

14

0-7

Not used.

8-31

Return address. This address is either an address in the control program's Close
routine (bit 2 of DCBEXCD2 is on), or the address of the instruction following the
expansion of the macro instruction that caused the SYNAD routine to be given
control (bit 2 of DCBEXCD2 is off).

0-7

Not used.

8-31

Address of the SYNAD routine.

15

Figure 4. Register Contents on Entry of SYNAD Routine -

QISAM

Register

Bits

Meaning

o

0-7

Not used.

8-31

Address of the first lOB sense byte. (Sense information is valid only when
associated with a unit check condition.)

0-7

Not used.

8-31

Address of the DECB.

2-13

0-31

Contents that existed before the macro instruction was issued.

14

0-7
8-31

Not used.
Return address.

15

0-7
8-31

Not used.
Address of the SYNAD routine.

Figure 5. Register Contents on Entry to SYNAD Routine -

BISAM

Appendix A: Status Information Following an Input/Output Operation 215

Register

Bits

Meaning

0

0-7

Value to be added to the status indicators address to provide the address of the
first CCW (QSAM only).
Address of the associated data event control block for BDAM, BPAM, and BSAM;
address of the status indicators shown in Figure 6 for QSAM.

8-31
0
1
2

7
8-31

Bit is on for error caused by input operation.
Bit is on for error caused by output operation.
Bit is on for error caused by BSP, CNTRL, or POINT macro instruction (BPAM
AN 0 BSAM only).
Bit is on if error occurred during update of existing record or if error did not
prevent reading of the record. Bit is off if error occurred during creation of a new
record or if error prevented reading of the record.
Bit is on if the request was invalid. The status indicators pointed to in the data
event control block are not present (BDAM, BPAM, and BSAM only).
Bit is on if an invalid character was found in paper tape conversion (BSAM and
QSAM only).
Bit is on for a hardware error (BDAM only).
Bit is on if no space was found for the record (BDAM only).
Address of the associated data control block.

2-13

0-31

Contents that existed before the macro instruction was issued.

14

0-7
8-31

Not used.
Return address.

15

0-7
8-31

Not used.
Address of the error analysis routine.

3
4
5
6

Figure 6. Register Contents on Entry to SYNAD Routine and QSAM

216 OS /VS Data Management Macro Instructions

BDAM, BPAM, BSAM,

Offset From
lOB Address
Byte

Bit

Meaning

Name

+2

0

Command reject
Intervention required
Bus-out check
Equipment check
Data check
Overrun
Device-dependent information
Refer to the appropriate device
manual

Sense byte 1

1
2
3
4

5
6,7
+3

0-7

+8

0-7

0
1
2
3
4

5
6

7
+13

0
2
3
4

5
6

7
+14

Beginning of a channel status word
Command address

+9
+12

Sense byte 2

Attention
Status modifier
Control unit end
Busy
Channel end
Device end
U nit check - must be on for
sense bytes to be meaningful
Unit exception

Status byte 1
(Unit)

Program-controlled interrupt
I ncorrect length
Program check
Protection check
Channel data check
Channel control check
I nterface control check
Chaining check

Status byte 2
(Channel)

channel
status
word

Count field

Figure 7. Status Indicators for the SYNAD Routine -

BDAM, BP AM, and BSAM

Appendix A: Status Information Following an Input/Output Operation 217

APPENDIX B: DATA MANAGEMENT MACRO INSTRUCTIONS
AVAILABLE BY ACCESS METHOD

Macro Instruction
BLDL
BSP
BUILD
BUILDRCD
CHECK
CHKPT
CLOSE
CNTRL
DCB
DCBD

BDAM

BISAM

BPAM

BSAM

QISAM

QSAM

X
X

X

X
X

X
X

X

X

X
X
X

X
X
X

X
X
X

X
X
X
X

X
X

X
X
X

X
X

X
X

X
X

X
X

X
X

X
X

ESETL

X

FEOV
FIND
FREEBUF
FREEDBUF
FREEPOOL

X
X
X

X
X
X

GET
GETBUF
GETPOOL

X
X

X
X

X

NOTE
OPEN

X

X

POINT
PRTOV
PUT
PUTX
READ
RELEX
RELSE
SETL
SETPRT
STOW
SYNADAF
SYNADRLS

X
X

X

X
X

X

X

X

X
X

X
X

X

X

X

X

X

X
X

X

X

X

X

X

X

X

X

X

X

X
X

X
X
X

X

X

X

X
X
X
X

X
X

X
X
X

X
X

X
X
X

TRUNC

X
X
X

WRITE

X

X

X

X

XLATE

X

X

X

X

X

X

Appendix B: Data Management Macro Instructions Available by Access Method 219

APPENDIX C: DEVICE CAPACITIES
The following information provides a guide to coding the blocksize (BLKSIZE) and
logical record length (LRECL) operands in the DCB macro instruction. These values
can be used to determine the maximum blocksize and logical record length for a given
device, and they can be used to determine the optimum blocking factor when records
are to be blocked.

Card Readers and Card Punches
Format F, V, or U records are accepted by readers and punches but the logical record
length for a card reader or card punch is fixed at 80 bytes. The logical record length
for an IBM 2596 Card Reader is 96 bytes. If the optional control character is
specified, the logical record length is 81 (the control character is not part of the data
record). If card image mode is used, the buffer required to contain the data must be
160 bytes.

Printers
The following shows the record length that can be specified for the various printers. In
some cases, two values are shown; the larger of the two values requires that an optional
feature be installed on the printer being used. If the optional control character is
specified to control spacing and skipping, the record length is specified as one greater
than the actual data length (the control character is not part of the data record).
1403 printer
1443 printer
3211 printer
1052 printer keyboard
3210 printer keyboard
3215 printer keyboard
3525 card punch,
print feature

120 or 132 bytes
120 or 144 bytes
132 or 150 bytes
130 bytes
130 bytes
130 bytes
64 bytes

Paper-Tape Reader
2671 paper tape -

32,760 bytes

Magnetic-Tape Units
2400/3400 magnetic-tape units -

32,760

(7 tracks and 9 tracks)

Appendix C: Device Capacities 221

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

Direct-Access Devices
The following table shows the capacity of direct-access devices by track, cylinder, and
total capacity in bytes.
Device
Type

Track
Track
Capacity!
Volume Capacity!
Type
Without Keys With Keys

2314/2319
3330/3333
2305-1
2305-2

Disk
Disk
Drum
Drum

7294
13165
14136
14858

7249
12974
13934
14569

Tracks/
Cylinder

Number
Cylinders

20
19
8
8

200
404
48
96

Capacity indicated in bytes (when RO is used by the IBM programming system).

Each record written on a direct-access device requires some "device overhead." The
term device overhead means the space required by the device for address markers,
count areas, gaps between the count, key, and data areas, and gaps between blocks.
The following formulas can be used to compute the number of bytes required for each
data block including the space required for device overhead. Note that any fraction of
a byte must be treated as an extra byte. For example, if the formula computation
results in 15.067 bytes, 16 bytes must be used to determine track capacity.

Device
Type

Bytes Required by Each Data Block
Blocks With Keys
Bi
Bn

Blocks Without Keys
Bi

Bn

2314/2319
3330/3333
2305-1
2305-2

146+(KL+DL)534/512
191+KL+DL
632+KL+DL
289+DL+DL

101 +(DL)534/512
135+DL
430+DL
198+DL

DL
135+DL
430+DL
198+DL

45+KL+DL
191 +KL+DL
632+KL+DL
289+KL+DL

Bi is any block but the last on the track.
Bn is the last block on the track.
DL is data length.
KL is key length.

When the track-overflow feature is being used or variable-length spanned records are
written, the size of a data block or logical record can exceed the capacity of a single
track on the direct-access device used.

222 OS/VS Data Management Macro Instructions

APPENDIX D: DCB EXIT LIST FORMAT AND CONTENTS
The following shows the format and contents that must be supplied by the problem
program when the EXLST operand is specified in a DCB macro instruction. The exit
list must begin on a fullword boundary and each entry in the list requires one fullword.
Hexadecimal
Code
3-Byte Routine Address -

Routine Type
Inactive entry
Input header label
Output header label
Input trailer label
Output trailer label
Data control block exit
End-of-volume
User totaling
Block count exit
Defer input trailer
label

00
01
02
03
04
05
06
OA
OB
OC

Defer nonstandard
input trailer label

OD

FCB Image
DCB ABEND exit

10
11

Last entry

80

Purpose

Ignored; the entry is not active.
Process a user input header label.
Create a user output header label.
Process a user input trailer label.
Create a user output trailer label.
Data control block exit routine.
End-of-volume exit routine.
Pointer to user's totaling area.
Block count unequal exit routine.
Defer processing of a user input trailer label
from the end-of-data until the CLOSE macro
instruction is issued.
Defer processing a nonstandard input trailer
label on magnetic tape unit from the end-ofdata until the CLOSE macro instruction is
issued (no exit routine address).
Define an FCB image.
Allow analysis of ABEND condition and select
one of several options.
Last entry in list. A high-order bit can be
specified with any of the above codes but must
always be specified with the last entry.

The list can be dynamically shortened during execution by setting the high-order bit of
a word to a value of 1. An entry in the list can be made inactive dynamically by
setting the high-order byte of the word to a value of hexadecimal 00.
When control is passed to an exit routine, the general registers contain the following
information:
Register

Contents

o

Variable; the contents depend on the exit routine used.

1

The three low-order bytes contain either the address of the DCB
currently being processed or, when certain exits are taken, the
address of the exit parameter list. These exits are: user-label
exits (X'O! '-'04'), deferred nonstandard input trailer exit
(X'OD'), and DCB ABEND exit (X'II').

2-13

Contents prior to execution of the macro instruction.

14

Return address (must not be altered by the exit routine).

15

Address of the exit routine entry point.

Appendix D: DCB Exit List Format and Contents 223

The conventions for saving and restoring registers are as follows:
The exit routine must preserve the contents of register 14. It need not preserve the
contents of other registers. The control program restores registers 2-13 before
returning control to the problem program.
•

The exit routine must not use the save area whose address is in register 13, because
this area is used by the control program. If the exit routine calls another routine or
issues supervisor or data management macrO instructions, it must provide the
address of a new save area in register 13.

For a detailed description of each exit list processing option, refer to OS/VS Data
Management Services Guide.

224 OS/VS Data Management Macro Instructions

APPENDIX E: CONTROL CHARACTERS
Each logical record, in all record formats, can contain an optional control character.
This control character is used to control stacker selection on a card punch or card read
punch, or it is used to control printer spacing and skipping. If 'a record containing an
optional control character is directed to any other device, it is considered to be the first
data byte, and it does not cause a control function to occur.
In format-F and format-U records, the optional control character must be in the first
byte of the logical record.
In format-V records, the optional control character must be in the fifth byte of the
logical record, immediately following the block descriptor word of the record.
Two control character options are available. A control character option is selected by
coding the appropriate character in the RECFM operand of the DCB macro
instruction. If either option is specified in the data control block, a control character
must be included in each record, and other spacing or stacker selection options also
specified in the data control block are ignored.

Machine Code
The record format field in the data control block indicates that the machine code
control character has been placed in each logical record. If the record is written, the
appropriate byte must contain the command code bit configuration specifying both the
write and the desired carriage or stacker select operation. If the record is not written,
the byte can specify any command other than write.
Command codes for specific devices are contained in IBM System Reference Library
publications describing the control units or devices.

American National Standards Institute Control Characters
In place of machine code, control characters defined by the American National
Standards Institute (ANSI) can be specified. These characters must be represented in
EBCDIC code.

Appendix E: Control Characters 225

American National Standards Institute (ANSI) control characters are as follows:
Code

Action Before Printing a Line

b

Space one line (blank code)
Space two lines
Space three lines
Suppress space
Skip to channel 1
Skip to channel 2
Skip to channel 3
Skip to channel 4
Skip to channel 5
Skip to channel 6
Skip to channel 7
Skip to channel 8
Skip to channel 9
Skip to channel 10
Skip to channel 11
Skip to channel 12
Select punch pocket 1
Select punch pocket 2

o
+
1
2
3
4
5
6
7
8
9
A
B
C
V
W

These control characters include those defined by ANSI FORTRAN. If any other
character is specified, it is interpreted as 'b' or V, depending on the device being used;
no error indication is returned.

226 OS/VS Data Management Macro Instructions

APPENDIX F: DATA CONTROL BLOCK SYMBOLIC FIELD NAMES
The following describes data control block fields that contain information which defines
the data characteristics and device requirements for a data set. Each of the fields
described shows the values that result from specifying various options in the DCB
macro instruction. These fields can be referred to by the problem program through the
use of a DCBD macro instruction which creates a dummy control section (DSECT) for
the data control block. Fields that contain addresses are 4 bytes long and are aligned
on a fullword boundary. If the problem program inserts an address into a field, ~he
address must be inserted into the low-order 3 bytes of the field without changing the
high-order byte.
The contents of some fields in the data control block depend on the device and access
method being used. A separate description is provided when the contents of the field
are not common to all device types and access methods.

Data Control Block Offset

Common Fields
Bytes and
Alignment

26(IA)

Field
Name

Description

DCBDSORG

Data set organization.

1...
.1..
.. 1.

Code
IS
PS
DA

... x

xx ..
.. 1.

PO

... 1

U

Indexed sequential.
Physical sequential.
Direct organization .
Reserved bits .
Partitioned organization.
Unmovable - the data set contains
location-dependent informat ion.

40(28)

8

DCBDDNAM

Eight byte name of the data definition
statement that defines the data set associated
with this DCB.

42(2A)

2

DCBMACRF
(After
OPEN)

This field may only be referenced after OPEN.
It is common to all uses of the DCB and is
created by moving the DCBMACR field into this
area.

DCBOFLGS
. , .1
1...

Flags used by Open routine.
OPEN has completed successfully .
Set to I by problem program to indicate
concatenation of unlike attributes.
Set to 0 by an I/O support function when that
function takes a user exit. It is set to 0 to
inhibit other I/O support functions from
processing this DCB.
Set to I on return from the user exit to the
I/O support function that took the exit.

48(30)

.. 0.

.. 1.
50(32)

.. 2

DCBMACR
(Before
OPEN)

Macro instruction reference before OPEN.
Major macro instructions and various options
associated with them. Used by the Open
routine to determine access method. Used by
the access method executors in conjunction
with other parameters to determine which load
modules are required. This field is moved to

Appendix F: Data Control Block Symbolic Field Names 227

Offset

Bytes and
Alignment

Field
Name

Description
overlay part of DCBDDNAM at Open time and
becomes the DCBMACRF field.
This field is common to all uses of the DCB,
but each access method must be referenced for
its meaning.

Data Control Block Offset

SAM, BPAM
Bytes and
Alignment

20(14)

Field
Name

Description

DCBBUFNO

Number of buffers required for this data set.
May range from 0 to a maximum of 255.

2 t( 15)

.3

DCBBUFCB

Address of buffer pool control block.

24(18)

2

DCBBUFL

Length of buffer. May range from 0 to a
maximum of 32,760.

32(20)

32(20)

DCBBFALN
.. xx
.. 10
.. 01

D
F

DCBBFTEK
.xxx
. 1.0
.0.1
.110

S
E
A

.010

R

....

36(24)

.3

Buffering technique:
Simple buffering .
Exchange buffering .
QSAM locate mode processing of spanned
records: OPEN is to construct a record
area if it automatically constructs
buffers.
BSAM create BDAM processing of unblocked spanned records: Software track
overflow. OPEN forms a segment work
area pool and stores the address of the
segment work area control block in
DCBECBW.However, WRITE uses a
segment work area to write a record as
one or more segments.
BSAM input processing of unblocked
spanned records with keys: Record offset
processing. READ reads one record
segment into the record area. The first
segment of a record is preceded in the
record area by the key. Subsequent
segments are at an offset equal to the key
length.
Reserved bit.

x...
33(21 )

Buffer alignment:
Doubleword boundary.
Fullword not a doubleword boundary,
coded in the DCB macro instruction.

DCBEODAD

End-of-data address. Address of a userprovided routine to handle end-of-data
conditions.

DCBRECFM

Record format.
Code

.. 1.

10 ..
01..

228 OS/VS Data Management Macro Instructions

D
F
V

Format-D record .
Fixed record length.
Variable record length.

Offset

Bytes and
Alignment

Field
Name

Description

11..
.. 1.
... 1

U
T
B
1. ..

.10.
.01.
.00.
••. 1

Undefined record length.
Track overflow .
Blocked records . May not occur with
undefined (U).
S
Fixed length record format: Standard
blocks. (No truncated blocks or unfilled
tracks are embedded in the data set.)
Variable length record format: Spanned
records.
A
ANSI control character.
M
Machine control character.
No control character.
Key length (KEYLEN) was specified in the
DCB macro instruction. This bit is inspected
by the Open routine to prevent overriding a
specification of KEYLEN =0 by a nonzero
specification in the JFCB or data set label.

37(25)

.3

DCBEXLST

Exit list. Address of a user-provided exit
list control block.

42(2A)

2

DCBMACRF

Macro instruction reference after OPEN.
Contents and meaning are the same as those of
the DCBMACR field in the foundation segment
before OPEN.

50(32)

.. 2

DCBMACR
(Before
OPEN)

Major macro instructions and various options
associated with them. Used by the Open
routine to determine access method. Used by
the access method executors in conjunction
with other parameters to determine which load
modules are required.
Code

Byte 1
00 ..
.. 1.
... x x .. x
. 1..
.. 1.
51(33)

Byte 2
00 ..
.. 1.
1. ..
. 1..
.. 1.
... 1

50(32)

Byte 1
0 ...
.1..
.. 0.
••• 1
1...
. 1..

R
P
C

W
L
P
C

G
M
L
T

BSAM - Input
Always zero for BSAM.
READ
Reserved bits .
POiNT (which implies NOTE) .
CNTRL
BSAM - Output
Always zero for BSAM.
WRITE
Load mode BSAM (create BDAM data
set).
POINT (which implies NOTE) .
CNTRL
BSAM create BDAM processing of
unblocked spanned records, with
BFTEK=R specified: The user's program
has provided a segment work area pool
and stored the address of the segment
work area control block in DCBEOBW.
QSAM - Input
Always zero for QSAM.
GET
Always zero for QSAM .
Move mode .
Locate mode.
Substitute mode .

Appendix F: Data Control Block Symbolic Field Names 229

Offset

Bytes and
Alignment

Field
Name

Description
.. 1.
... 1

Byte 2
0 ...
.1..
.. 0.
... 1

51(33)

P

1...
.1..
.. 1.
... 1
50(32)

Byte 1
00 ..
.. 1.

... x
51(33)

.1..
x.xx

Byte 2
00 ..
.. 1.

... x

C
D

. 1..
x.xx

M
L
T
C
D

R
P

A
W
P

CNTRL
Data mode.
QSAM - Output
Always zero for QSAM.
PUT
Always zero for QSAM .
Move mode .
Locate mode.
Substitute mode.
CNTRL
Data mode.
BPAM - Input
Always zero for BPAM.
READ
POINT (which implies NOTE).
Reserved bits.
BPAM - Output
Always zero for BPAM.
WRITE
POINT (which implies NOTE) .
Reserved bits.

Direct-Access Storage Devices Interface
Field
Name

Description

16(10)

DCBKEYLE

Key length of the data set.

17(11)

DCBDEVT

Device type.

0010 1000
0010 0111
0010 1001

2314 Disk Storage Facility
2305-2 DiSk Storage Facility, Model 2
3330 Disk Storage

Field
Name

Description

DCBTRTCH

Tape recording technique for 7-track tape.

0010
0011
0001
0010

E
T

Offset

Bytes and
Alignment

Magnetic Tape Interface
Offset

Bytes and
Alignment

16(10)

Code

17(11)

18(2)

.1

.. 1

0011
1011
0011
1011

C
ET

Even parity.
BCD/EBCDIC translation.
Data conversion.
Even parity and translation.

DCBDEVT

Device type.

1000 0001

2400 series magnetic tape unit (7-track or
9-track).

DCBDEN

Tape density Code

7-tracks

0000
0100
1000
1100

o

200 BPI
556 BPI
SOO BPI

0011
0011
0011
0011

230 OS/VS Data Management Macro Instructions

1
2
3

2400 series magnetic tape units.

9-tracks

SOO BPI
1600 BPI

Page of GC26-3793-1
Revised December 15, 1972
By TNL GN26-0748

Paper Tape Interface
Offset

Bytes and
Alignment

16(10)

Field
Name

Description

DCBCODE

1000
0100
0010
0001
0000
0000
0000
17(11)

.1

0000
0000
0000
0000
1000
0100
0010

Paper tape code being used. The appropriate
translate table is made available.
Code
N

I
F
B
C
A
T

No conversion
IBM BCD
Friden
Burroughs
National Cash Register
ASCII (8-track)
Teletype 1

DCBDEVT

Device type.

0101 0000

2671 Paper Tape Reader.

Card Reader, Card Punch Interface
Offset

Bytes and
Alignment

16(10)

Field
Name

Description

DCBMODE,DCBSTACK
Code

xxxx
1000
0100

C

E

xxxx
0001
0010
17(11)

.1

1
2

Mode of operation for 1442 Card Read
Punch.
Column binary mode.
EBCDIC mode.
Stacker selection.
Stacker 1.
Stacker 2.

DCBDEVT

Device type.

0100
0100
0100
0100
0100
0000

0011
0001
0010
0100
0101
0110
0000 1100

1442 Card Read Punch
2540 Card Reader
2540 Card Punch
2501 Card Reader
2520 Card Read Punch
3505 Card Reader
3525 Card Punch

Field
Name

Description

DCBPRTSP

Number indicating normal printer spacing.

0000
0000
0001
0001

o

Printer Interface
Offset

Bytes and
Alignment

16(10)

Code

17(11)

1.

.2

0001
1001
0001
1001

1
2

3

No spacing.
Space one line.
Space two lines.
Space three lines.

DCBDEVT

Device type.

Byte
0100
0100
0100

1403 Printer
3211 Printer
1443 Printer

1
1000
1001
1010

Trademark of Teletype Corporation.

Appendix F: Data Control Block Symbolic Field Names 231

Bytes and
Offset Alignment

Field
Name Description
Test-for-printer-overflow mask (PRTOV
mask). If printer overflow is to be
tested for, the PRTOV macro instruction
sets the mask as follows:
Byte 2
0010 0000
0001 0000

Code
9
12

Field
Name

Description

DCBOPTCD

Option codes.

1. ..
.1 ..

Code
W
U

.. 1.

C

Test for channel 9 overflow.
Test for channel 12 overflow.

Access Method Interlace
BSAM, BPAM Interface
Offset

Bytes and
Alignment

52(34)

... x
.1..

Z

.. 1.
1...

T
Q

... x
52(34)

Write-validity check (DASD).
Allow a data check caused by an invalid
character. (1403 printer with UCS
feature.)
Chained scheduling using the Program
Controlled Interruption.
Reserved bit .
Magnetic tape devices: Use reduced
error recovery procedure.
BSAM only: user totaling .
An ASCII data set is to be processed.
Same as DCBOPTQ. BSAM only.
Reserved bit.

DCBOPTQ
1. ..

ASCII indication.
An ASCII data set is to be processed. Same
as DCBOPTCD, Code=Q. BSAM only.

57(39)

.3

DCBSYNAD

Address of user's synchronous error routine to
be entered when a permanent error occurs.

62(3E)

.. 2

DCBBLKSI

Maximum blocksize. Maximum value: 32,760.
For fixed-length blocked record format, it
must be a multiple of the length given in
DCBLRECL. For variable-length records, this
must include the 4 byte block length field.

72(48)

DCBNCP

Number of chained programs. Number of
READ or WRITE requests which may
be issued prior to a CHECK. Maximum
number: 99.

80(50)

DCBUSASI!
DCBLBP

ASCII tape.
Block prefix.

.1 ..

Block prefix is a four-byte field containing
the block length.

81(51)

.1

DCBBUFOF

Block prefix length.

82(52)

.. 2

DCBLRECL

Logical record length. For fixed-length blocked
record format, the presence of DCBLRECL
allows BSAM to read truncated records. For
undefined records, this field contains blocksize.

232 OS!VS Data Management Macro Instructions

QSAM Interface
Offset

Bytes and
Alignment

52(34)

Field
Name

Description

DCBOPTCD

Option codes.
Code

1.•.

Q

1...
.1..

W
U

.. 1.

C

... x

52(34)

.1..

Z

.. 1.

T

DCBOPTQ
1...

An ASCII data set is to be processed.
Same as DCBOPTQ. BSAM only.
Write-validity check (DASD)'
Allow a data check for an invalid
character (1403 with UCS).
Chained scheduling using the Program
Controlled Interruption.
Reserved bit.
Magnetic tape devices. Use reduced
error recovery procedure.
User totaling .

ASCII indication.
An ASCII data set is to be processed. Same
as DCBOPTCD, Code=Q. BSAM only.

57(39)

.3

DCBSYNAD

Address of the user's synchronous error routine
to be entered when a permanent error occurs.

62(3E)

.. 2

DCBBLKSI

Maximum blocksize. Maximum value: 32,760.
For fixed-length blocked record format, it must
be a multiple of DCBRECL. For variablelength records this must include the 4-byte
block length field provided by the access method.

DCBUSASI!
DCBLBP

ASCII tape.
Block prefix.

.1..

Block prefix is a four-byte field containing
the block length.

80(50)

81(51)

.1

DCBBUFOF

Block prefix length.

82(52)

.. 2

DCBLRECL

Format-F records: Record length.
Format-U records: Blocksize.
Format-V recordsUnspanned record format GET: PUTX; record length.
PUT: Actual or maximum record length.
Spanned record format Locate mode - GET: Segment length.
- PUT: Actual or minimum segment
length.
Logical record interface - Before OPEN: Maximum logical record
length.
- After GET: Record length.
- Before PUT: Actual or maximum record
length.
Move mode- GET: Record length.
- PUT: Actual or maximum record length.
Data mode, GETData records up to 32,752 bytes: Data
length.

Appendix F: Data Control Block Symbolic Field Names 233

Bytes and
Offset Alignment

Field
Name Description
Data records exceeding 32,752 bytes:
- Before OPEN: X'8000'
-After OPEN: Data length.
Output mode, PUTX (output data set):
Segment length.

84(54)

Data Control Block Offset

Error option. Disposition of permanent errors
if the user returns from a synchronous error
exit (DCBSYNAD), or if the user has no
synchronous error exit.

1...
. 1..
.. 1.

ACC: Accept.
SKP: Skip .
ABE: Abnormal end of task .

Field
Name

Description

DCBKEYLE

Key length.

DCBDEVT

Device type.

0010 1000
0010 0111
0010 1001

2314 Disk Storage Facility.
2305-2 Disk Storage Facility, Model 2.
3330 Disk Storage.

DCBBUFNO

Number of buffers required for this data set:
0-255.

ISAM
Bytes and
Alignment

16(10)
17(11)

DCBEROPT

.1

20(14)
21(15)

.3

DCBBUFCB

Address of buffer pool control block .

24(18)

2

DCBBUFL

Length of buffer: 0- 32,760.

32(20)

DCBBFALN
Code

33(21)
36(24)

.3

... xx
.. 10
.. 01

D
F

.. 11

F

Buffer alignment:
Doubleword boundary .
Fullword not a doubleword boundary,
coded in the DCB macro instruction.
Fullword not a doubleword boundary,
coded in the DD statement.

DCBEODAD

Address of a user-provided routine to handle
end-of-data conditions.

DCBRECFM

Record format.
Code
F

10..
10 ..
11..
.. 1.
... 1

V

U
T
B

1...

S

'.10.
. 01.
.00.
... 1

A
M

234 OS/VS Data Management Macro Instructions

Fixed length records.
Variable length records.
Undefined length records.
Track overflow.
Blocked records. May not occur with
undefined (U).
Standard records. No truncated blocks or
unfilled tracks are embedded in the
data set.
ANSI control character.
Machine control character .
No control character.
Key length (KEYLEN) was specified in

Bytes and
Offset Alignment

Field
Name Description
the DCB macro instruction; this bit is
inspected by the Open routine to prevent
overriding a specification of KEYLEN=O by
a nonzero specification in the JFCB or
data set label.

37(25)

.3

DCBEXLST

Exit list. Address of a user-provided list.

42(2A)

.. 2

DCBMACRF

Macro instruction reference after OPEN:
Contents and meaning are the same as those
of the DCBMACR field before OPEN.

50(32)

.. 2

DCBMACR

Byte 1
00.0 0 ...
.. 1.
.1..
.. 1.
... x

50(32)

Macro instruction reference before OPEN:
specifies the major macro instructions and
various options associated with them. Used
by the Open routine to determine access method.
Used by the access method executors in
conjunction with other parameters to determine
which load modules are required.
Code
BISAM

R
S
C

Byte 2
00.0 0000

51(33)

Byte 1
0.0. .0..
.1..
... 1
1...
.. xx

50(32)

Byte 2
1...
.1..
.. 0.
... 1

51(33)

Always zero for BISAM.
WRITE
QISAM

G
M
L

Always zero for QISAM.
GET
Move mode of GET .
Locate mode for GET.
Reserved bits .
QISAM

S
P

1...
.1..
.. 1.
... 1

52(34)

BISAM

W

.. 1.

Always zero for BISAM.
READ
Dynamic buffering.
CHECK
Reserved bit.

M
L
U
K

SETL
PUT or PUTX.
Always zero for QISAM .
Move mode of PUT.
Locate mode of PUT.
Update in place (PUTX).
SETL by key.
SETL by ID .

DCBOPTCD

Option codes:

1...
.1..
.. 1.
... 1

W
U
M

Code

1. ..
.. 1.
... 1
.x ..

53(35)

.1

DCBMAC

Y
L
R

Write-validity check.
Full-track index write.
Master indexes .
Independent overflow area .
Cylinder overflow area.
Delete option.
Reorganization criteria.
Reserved bit.

Extension of the DCBMACRF field for ISAM.

Appendix F: Data Control Block Symbolic Field Names 235

Bytes and
Offset Alignment

Field
Name Description
Code

xxxx ... x
1. ..
.1..
.. 1.

U
U
A

Reserved bits.
Update for read.
Update type of write.
Add type of write .

54(36)

.. 1

DCBNTM

Number of tracks that determines the
development of a master index.
Maximum permissible value: 99.

55(37)

... 1

DCBCYLOF

The number of tracks to be reserved on each
prime data cylinder for records that overflow
from other tracks on that cylinder. Refer to
the" section on allocating space for an ISAM
data set in OS/VS Data Management Services
Guide to determine how to calculate the
maximum number.

56(38)

4

DCBSYNAD

Address of user's synchronous error routine
to be entered when uncorrectable errors are
detected in processing data records.

60(3C)

2

DCBRKP

Relative position of the first byte of the key
within each logical record. Maximum permissible
value: logical record length minus key length.

62(3E)

.. 2

DCBBLKSI

Blocksize.

64(40)

4

DCBMSWA

Address of the storage work area reserved for
use by the control program when new records
are being added to an existing data set.

68(44)

2

DCBSMSI

Number of bytes in area reserved to hold the
highest level index.

70(46)

2

DCBSMSW

Number of bytes in work area used by control
program when new records are being added to
the data set.

DCBNCP

Number of copies of the READ-WRITE (type K)
channel programs that are to be established
for this data control block (99 maximum).

DCBMSHI

Address of the storage area holding the
highest level index.

DCBEXCDI

First byte in which exceptional conditions
detected in processing data records are
reported to the user.

1...
.1..

Lower key limit not found.
Invalid device address for lower limit.
Space not found .
Invalid request.
Uncorrectable input error.
Uncorrectable output error .
Block could not be reached (input) .
Block could not be reached (update) .

72(48)

73(49)

.3

80(50)

.. 1.

... 1
1...
. 1..
.. 1.
•.• 1

81(51)

.1

DCBEXCD2

Second byte in which exceptional conditions
detected in processing data records are
reported to the user.

1...
. 1..
.. 1.
... 1

Sequence check.
Duplicate record .
DCB closed when error was detected .
Overflow record .

236 OS/VS Data Management Macro Instructions

Bytes and
Offset Alignment

Field
Name D,escription
1...
.xxx

PUT: length field of record larger than
length indicated in DCBLRECL.
Reserved bits.

82(52)

.. 2

DCBLRECL

Logical record length for fixed-length record
formats. Variable-length record formats:
maximum logical record length or an actual
logical record length changed dynamically
by the user when creating the data set.

197(C5)

.1

DCBOVDEV

Device type for independent overflow.

0010 1000
0010 0111
0010 1001

2314 Disk Storage Facility.
2305-2 Disk Storage Facility, Model 2.
3330 Disk Storage.

Field
Name

Description

DCBKEYLE

Key length.

DCBREL

Number'of relative tracks or blocks in this
data set.

DCBBUFNO

Number of buffers required for this data set.
May range from 0 to 255.

Data Control Block -

BDAM

Offset

Bytes and
Alignment

16(10)
17(11)

.3

20(14)
21 (15)

.3

DCBBUFCB

Address of buffer pool control block or of
dynamic buffer pool control block.

24(18)

2

DCBBUFL

Length of buffer. May range from 0 to 32,760.

32(20)

DCBBFALN
.. xx
.. 10
.. 01
.. 11
.x.x

32(20)

x...

Buffer alignment:
Doubleword boundary .
Futlword nota doubleword boundary, coded in
the DCB macro instruction .
Fullword not a doubleword boundary, coded in
the DD statement.
Reserved bits .

DCBBFTEK
.. x.

36(24)

Buffering technique .
Unblocked spanned records:
Software track overflow. OPEN forms a
segment work area pool. The number of
segment work areas is determined by
DCBBUFNO (OPEN stores the address of
the segment work area control block
in DCBDYNB) if dynamic buffering is not
used or in the dynamic buffer pool
control block (see DCBBUFCB) if
dynamic buffering is used. WRITE uses
a segment work area to write a record
as one or more segments. READ uses a
segment work area to read a record that
was written as one or more segments.

.. 1.

R

DCBRECFM

Record format.

Appendix F: Data Control Block Symbolic Field Names 237

Bytes and
Offset Alignment

Field
Name Description
to..

Code
F

01..
11..
.. 1.

U
T

v

••. 1

B

1...
.00.
... 1

S

Fixed record length.
Variable record length.
Undefined record length.
Track overflow .
Blocked (allowed only with V) .
Spanned (allowed only with V).
Always zeros .
Key length (KEYLEN) was specified in
the DCB macro instruction. This bit
is inspected by the Open routine to
prevent overriding a specification of
KEYLEN=O by a nonzero specification
in the JFCB or data set label.

37(25)

.3

DCBEXLST

Exit list. Address of a user-provided exit
list control block.

42(2A)

.. 2

DCBMACRF

Macro instruction reference after OPEN .
Contents and meaning are the same as
DCBMACR before OPEN.

50(32)

.. 2

DCBMACR

Macro instruction reference before OPEN:
major macro instructions and various options
associated with them that will be used.
Code

50(32)

51(33)

Byte. 1
00 ..
.. 1.
... 1

R

1...
.1..

K
I
S

.. 1.
... 1

X
C

Byte 2
00 ..
.. 1.
... 1

Code
W

K
1...
.x ..
.. 1.
... 1

52(34)

Always zero for BDAM.
READ
Key segment with READ .
ID argument with READ.
System provides area for READ (dynamic
buffering).
Read exclusive .
CHECK macro instruction .

DCBOPTCD

I
A

Option codes:
Code
W

1. ..
. 1..
.. 1.
. .. 1

E
F
1...
. 1..
.. 1.
.•. 1

238 OS/VSData Management Macro Instructions

Always zero for BDAM.
WRITE
Key segment with WRITE .
ID argument with WRITE.
Reserved bit.
Add type of WRITE .
Unblocked spanned records, with
BFTEK=R specified and no dynamic
buffering: The user's program
has provided a segment work area
pool and stored the address of
the segment work area control
block in DCBDYNB.

A

R

Write-validity check.
Track overflow .
Extended search .
Feedback .
Actual addressi ng.
Dynamic buffering .
Read exclusive .
Relative block addressing .

Bytes and
Offset Alignment

Field
Name Description

56(38)

4

DCBSYNAD

Address of SYNAD (synchronous error)
routine.

62(3E)

.. 2

DCBBLKSI

Maximum blocksize .

81(51)

.3

DCBLIMCT

Number of tracks or number of relative blocks
to be searched (extended search option).

Appendix F: Data Control Block Symbolic Field Names 239

APPENDIX G: EVENT CONTROL BLOCK
The event control block is used for communications between the various components of
the system and between problem programs and the system. An event control block is
the subject of WAIT and POST macro instructions. The following illustration shows
the format of the event control block; a description of its fields follows the illustration.
+1

+0

WICI
Offset

I
Bytes and
Alignment.

o

Bit
Code

Hex.
Dig.

lOxx

xxxx

01xx

xxxx

Description
W - Waiting for completion of an
event.
C - The event has completed.
One of the following completion codes
will appear at the completion of a
channel program:
Access Methods Other Than BTAM

0111

1111

7F

Channel program has terminated without
error. (CSW contents useful.)

0100

0001

41

Channel program has terminated with
permanent error. (CSW contents useful.)

0100

0010

42

Channel program has terminated because
a direct access extent address has been
violated. (CSW contents do not apply.)

0100

0100

44

Channel program has been intercepted
because of permanent error associated
with device end for previous request.
You may reissue the intercepted
request. (CSW contents do not apply.)

0100

1000

48

Request element for channel program
has been made available after it has
been purged. (CSW contents do no apply.)

0100

1111

4F

Error recovery routines have been
entered because of direct access error
but are unable to read home addresses
or record O. (CSW contents do not apply.)

0111
0100
0100

1111

7F

Completed normally.
Completed with an I/O error.
Enable command halted, or I/O
operation purged.

BTAM

1(1)

.3

0001

41

1000

48

While awaiting completion of an event,
the request block address appears in
these 3 bytes. After completion of
the event, zeros, or the remainder
of the completion code, appear in
the last 3 bytes of the ECB.

Appendix G: Event Control Block 241

INDEX
Indexes for reference manuals are consolidated in OS/VS Master Index, GC28-0602. For additional
information about any subject listed below, refer to other publications listed for the same subject in the
Master Index.

A-type address constant defined 4
ABEND exit, DCB macro
BDAM 49
BISAM 55
BPAM 62
BSAM 77
list format 223-224
QISAM 86
QSAM 104
absexp defined 4
absolute expression defined 4
access methods
DCBD options 109-110
general description
BDAM 45
BISAM 53
BPAM 59
BSAM 67
QISAM 83
QSAM 93
macro instructions used with 219
SYNADAF options 183
actual device addressing (BDAM) 45,51
adding data to a data set
BDAM 191,50
BISAM 195,55
BPAM 179,197
BSAM 199
QISAM 145
QSAM 147
address constant, A-type
defined 4
address feedback
current block position 151,193
next block position 152,200
address of buffers
obtained from a pool 127
returned to a pool 117
addressing, types of (BDAM) 45-47
aids, coding 1-2
alias names in a directory 179-180
alignment of buffers
BDAM 46
BISAM 53-54
BPAM 60
BSAM 67-68
QISAM 84
QSAM 93

allocating space for a data set
BPAM 157
ISAM 83
American National Standards Institute
(ANSI) control characters
BPAM 64
BSAM 81
defined 226
QSAM 107
analysis of I/O errors
BDAM 52,209-217
BISAM 57,209-217
BPAM 64,209-217
BSAM 82,209-217
QISAM 90,209-217
QSAM 108,209-217
SYNADAF 183,209-217
ANSI·
(see American National Standards Institute)
argument, search
BDAM 51
QISAM 87
ASCII data sets
block prefix
BSAM 70
QSAM 96
restriction 96
blocksize
BSAM 73
QSAM 99
buffer length
BSAM 69
QSAM 96
on paper tape
BSAM 81
QSAM 107
restriction on record format
BSAM 81
QSAM 108
ASCII translation
Check routine 23
DeB option
BSAM 80-81
QSAM 106
Get routine 125
Put routine 147
Write routine 197
XLA TE macro instruction 207
associated data sets
closing 33
opening 133
types of
BSAM 74-75
QSAM 100-101

Index 243

automatic buffer pool construction
BDAM 45
BISAM 54
BPAM 61
BSAM 70
QISAM 85
QSAM 96
automatic checkpoint restart 25
automatic volume switching (FEOV macro) 113

backspacing
BSP macro 13
CNTRL macro 41
backward read
open option 134
Read operation 157
base registers for
dummy sections 109
macro instructions 4
BCD 8-track paper tape code
BSAM 73
QSAM 99
BDAM (basic direct access method)
general description 45
macro instructions used with 219
BFALN operand (DCB macro)
BDAM 46
BISAM 53-54
BPAM 60
BSAM 67-68
QISAM 84
QSAM 93-94
BFTEK operand (DCB macro)
BDAM 46
BSAM 68
QSAM 94
BISAM (basic indexed sequential access method)
general description 53
macro instructions used with 219
BLDL macro instruction
description 9
used with FIND 115
BLKSIZE operand (DCB macro)
BDAM 46-47
BPAM 60-61
BSAM 68-69
QISAM 84
QSAM 94-95
block
backspacing by 13
count.exit
BSAM 77
list format 223
QSAM 104
data control 45-108
data event control 209
descriptor word
(seeBLKSIZE operand)

244 OS/VS Data Management Macro Instructions

event control 209
position feedback 151-153,192
positioning with POINT 141
preftx
(see also BUFOFF operand)
effect on buffer length 67,96
effect on data alignment 67,93
reading 151-163
size
(see BLKSIZE operand)
writing 191-205
blocking
data checks (UCS printer) 172
records
BDAM 45,52
BPAM 59,64
BSAM 67,81
QISAM 90,145
QSAM 107-108,147
blocksize for SYSOUT data sets
(see also BLKSIZE operand)
BSAM 68
QSAM 94-95
BOLD type, meaning of 2
boundary alignment
(see BF ALN operand)
BPAM (basic partitioned access method)
general description 59
macro instructions used with 219
BSAM (basic sequential access method)
general description 67
macro instructions used with 219
BSP macro instruction 13
BUFCB operand (DCB macro)
BDAM 47
BISAM 54
BPAM 61
BSAM 69
QISAM 85
QSAM 95
relationship to
BUILD macro 15
BUILDRCD macro 17
GETBUF macro 127
GETPOOL macro 129
buffer
alignment
(see BFALN operand)
control
automatic 145-147,123-126
dynamic 119,196
using FREEBUF macro 117
using FREEDBUF macro 119
using GETBUF macro 127
using RELSE macro 167
forms control
using SETPRT macro 171
length
(see also BUFL operand)
BUILD macro 16
BUILDRCD macro 18
GETPOOL macro 129

checkpoint records, embedded (DOS) (Continued)
POINT macro 141
QSAM 107
CHKPT macro instruction 25
execute form 31
list.form 29
return codes 27-28
CLOSE macro instruction
execute form 39'
I/O error while executing
BDAM 52
BISAM 57
BPAM 64-65
BSAM 82
QISAM 90
QSAM 108
list form 37
relationship to
CNTRL macro 41
FREEPOOL macro 33
GETPOOL macro 129
PUT macro 145,148
SETL macro 169
standard form 33
TYPE=T (BSAM) 33-35
CNTRL macro instruction
description 41
restriction on use 41
specified in MACRF operand (DCB macro)
BSAM 79
QSAM 105
code
card
BSAM 74
QSAM 100
completion
(see code, return)
control character
(see control characters)
conversion
ASCII to EBCDIC 23,125
EBCDIC to ASCII 197
paper tape 73,101
XLATE macro 207
exception 209-217
return
BLDL macro 11
BSP macro 13
CHKPT macro 29-30
FIND macro 116
RELEX macro· 165
SETPRT macro 173
STOW macro 181
SYNADAF macro 184
SYNADRLS macro 187
WRITE macro 201
CODE operand (DCB macro)
BSAM 73
QSAM 99
coding
aids 1-2
macro instructions 2-5
registers as operands 3
restrictions for CLOSE options 134

246 OS/VS Data Management Macro Instructions

variable-length parameter lists 37,131,137
column, binary
(see card image mode)
eliminate mode, read
BSAM 74,76
QSAM 100
completion code
(see code, return)
completion testing of I/O operations 23
concatenation
input data sets (BPAM) 59
number 10
condition, exception 33,209-217
construct
a data control block
(see DCB macro instruction)
a DECB (data event control block) 203
a buffer pool
(see buffer pool construction)
contents of registers on entry to
exit list 223
SYNAD 219
control
I/O device 41-43
page format 143
releasing
buffer (FREEBUF macro) 117
buffer pool (FREEPOOL macro) 121
data block 165
dynamically acquired buffer 119,191-196
QSAM buffer (RELSE macro) 167
requesting
buffer (GETBUF macro) 127
buffer pool (GETPOOL macro) 129
data block 151
control block
buffer pool
(see BUFCB operand)
data
(see DCB macro instruction)
data event 209
control characters
ANSI 226
CNTRL macro 41
machine 226
PRTOV macro 143
control section (CSECT)
(see DCB macro instruction)
count exit, block
BSAM 77
format list 223
QSAM 104
cylinder
index 88
overflow area 89
CYLOFL (cylinder overflow area)
operand 85-86
option 89

D-format records
BSAM 81

buffer (Continued)
for card image mode 69,96
for ASCII data sets 69,96
message format (SYNADAF macro) 185
pool construction
(see also BUFCB operand)
automatic
(see BUFNO operand)
using BUILD macro 15
using BUILDRCD macro 17
using GETPOOL macro 129
releasing of
using FREEBUF macro 117
using FREEDBUF macro 119
using FREEPOOL macro 121
using RELSE macro 167
using SYNADRLS macro 187
buffering, types of
automatic 145-147,123-126
dynamic 119
exchange 94
problem erogram controlled
BDAM 48
BISAM 54
BPAM 61
BSAM 70
simple 94
variable-length spanned record
BDAM 48
QSAM 94
using BUILDRCD macro 17
BUFL operand (DCB macro)
BDAM 47
BISAM 54
BPAM 61
BSAM 69
QISAM 85
QSAM 96
BUFNO operand (DCB macro)
BDAM 48
BISAM 54
BPAM 61
BSAM 70
QISAM 85
QSAM 96
relationship to NCP operand 56
BUFOFF operand (DCB macro)
BSAM 70
QSAM 96
BUILD macro instruction
description 15
relationship to
buffer length
(see BUFL operand)
buffer pool control block
(see BUFCB operand)
number of buffers
(see BUFNO operand)
BUILDRCD macro instruction
description
execute form 21
list form 19
standard form 17
relationship to

buffer length
(see BUFL operand)
GET macro 126
number of buffers
(see BUFNO operand)
PUT macro 148
Burroughs 7-track paper tape code
BSAM 73
QSAM 99

II
card
code
BSAM 74
QSAM 100
image mode
defined 74,100
buffer length required 69,96
punch 74,100
reader 74,100
carriage
control channel
CNTRL macro 41
PRTOV macro 143
control characters
ANSI 226
CNTRL macro 41
machine 226
PRTOV macro 143
changing partitioned data set member name 179
chained scheduling option
BPAM63
BSAM 80
CHKPT macro 26
QSAM 106
channel
carriage control
(see carriage control channel)
overflow 143
programs, number of
BISAM 56
BPAM 63
BSAM 79
CHECK macro instruction
description 23
relationship to
end of data (EODAD) 62,77
number of Read and Write operations (NCP) 56,63
return of exception codes 209
with READ macro 151-163
with WRITE macro 191-205
checking, write-validity
BDAM 51
BPAM 63
BSAM 80
QISAM 89
QSAM 106
checkpoint data set 25
checkpoint records, embedded (DOS)
BSAM 80
CNTRL macro 41

Index 245

,11
" / i'
(

I

~I

, I,'

device capacities 221-222
device types in a dummy section 110
direct data set
(see BDAM)
direct search option
BSAM 80
QSAM 106
directory, partitioned data set
creation 59
obtaining contents with BLDL 9
operations performed by STOW macro 179
search by FIND macro 115
disposition option
CLOSE macro 34
OPEN macro 134
requirement for extending an ISAM data set 145
DISP option
(see disposition option)
DOS embedded checkpoint records
BSAM 80
CNTRL macro 41
POINT macro 141
QSAM 107
doubleword alignment
(see BFALN operand)
DSECT for
DCB symbolic names 109
testing for open data set 134
DSORG operand (DCB macro)
BDAM 48
BISAM 55
BPAM 62
BSAM 77
DCBD macro 109
QISAM 86
QSAM 103
dummy data block (BDAM) 191-193
dummy section
(see DSECT)
dynamic buffering
effect on buffer length 47,54
effect on number of channel programs 56
requesting in READ macro 152,155
requesting in WRITE macro 196
returning buffer to the pool 119,191

II

EBCDIC
(see extended binary coded decimal interchange code)
ECB
(see event control block)
eliminate mode, read column
BSAM 74,76
QSAM 100
embedded checkpoint records (DOS)
BSAM 80
CNTRL macro 41
POINT macro 141
QSAM 107
end of data
(see EODAD operand)
end of file on magnetic tape, ignoring
BSAM 80
QSAM 107

248 OS!VS Data Management Macro Instructions

end of volume
forced 113
exit
BSAM 77
QSAM 104
end of sequential retrieval 111
entry to
exit routine 223
SYNAD routine 215-217
EODAD operand (DCB macro)
BPAM 62
BSAM 77
QISAM 86
QSAM 103
EROPT operand (DCB macro) 103
ERP (error recovery procedure)
BSAM 81
QSAM 106
error analysis, I/O
BDAM 52,209-217
BISAM 57,.209-217
BPAM 64,209-217
BSAM 82,209-217
QISAM 90,209-217
QSAM 108,209-217
SYNADAF macro 183,209-217
error codes
(see return codes)
error conditions while opening a data set 135
error exits
GET macro 126
PUT macro 146,148
PUTX macro 149
error option operand (QSAM) 103
error recovery procedure
(see ERP)
error tape, reading
(see ERP)
ESETL macro instruction 111
event control block 209
exception code 209-215
exchange buffering
buffer alignment for 94
restrictions
record format 94
track overflow feature 108,94
variable-length spanned records 108
specified in DCB 94
exclusive control of data block (BDAM)
requesting of 151
releasing of 165
specified in DCB 51
execute form instructions
BUILDRCD macro 21
CHKPT macro 31
CLOSE macro 39
OPEN macro 139
READ macro 163
SETPRT macro 177
WRITE macro 205
exit
(see also EXLST operand)
block count 77,104
data control block
(see EXLST operand)

c

(

c

)

)

D-format records (Continued)
QSAM 107
data block
exclusive con trol of 151
locating with POINT macro 141
release of exclusive control 165
retrieval 151-159,123-126
writing 191-201,145-149
data checks
blocking and unblocking 80-106
restriction with CNTRL macro 41
data control block
completing 133
construction
(see DCB macro instruction)
DCBBLKCT field 42
DCBEXCD 1 field 209
DCBEXCD2 field 209
DCBNCRHI field 56
DCBOFLGS field 135
DCBPRECL field 148
description
(see DCB macro instruction)
dummy section for 109
exception codes 209
exit list
(see EXLST operand)
restoring 133
special options with BLDL macro 9
symbolic references to 109
data, end of
(see EODAD operand)
data definition statement
(see DD statement)
data event control block
checking for I/O errors 23
construction 151-161,191-203
description 209
exception code 209
extended search option 50
modifying with execute form 163,205
requirement with CHECK macro 23
requirement with FREEDBUF macro 119
data management parameter list 39,139
data mode
GET macro 125-126
PUT macro 147-148
data protection image (DPI) 74,101
data set
blocksize for SYSOUT 68,95
closing 33
connecting to 133
disconnecting from 33
disposition at close 34
labels 33,133
opening 133
organization
(see DSORG operand)
temporary closing 33
types
(see access methods)
data translation
(see code conversion)

data transmittal modes
data 125-126,147-148
locate 123-126,145-148
move 145-148,123-126
specified in DCB 87,105
substitute 125-126,147-148
DCB ABEND exit
BDAM 49
BISAM 55
BPAM 62
BSAM 77
list format 223
QISAM 86
QSAM 104
DCB macro instruction
BDAM 45-52
BISAM53-58
BPAM 59-66
BSAM 67-82
QISAM 83-91
QSAM 93-108
DCB operands
description
(see DCB macro instruction)
symbolic names for 109
DCBD macro instruction
description 109
used to test for open data set 134
DDNAME operand (DCB macro)
BDAM 48
BISAM 54
BPAM 61
BSAM 70
QISAM 86
QSAM 97
DD statement, relationship to
data control block
(see DDNAME operand)
NOTE macro 131
OPEN macro 133
POINT macro 141
DEB validity checking 133
deblocking records
BDAM 45,52
BPAM 59,64
BSAM 67,81
QISAM 90,145
QSAM 107-108,147
DECB
(see data event control block)
deferred checkpoint restart 25
delete option
description 89
effect on sequential retrieval 169
density, recording (see DEN operand)
DEN operand (DCB macro)
BSAM 72
QSAM 98
DEVD operand (DCB macro)
BSAM 71-77
DCBD macro 110
QSAM 107-108,147
device addressing, types of (BDAM) 50

Index 247

exit (Continued)
end of data
(see EODAD operand)
end of volume 77,104
error analysis
(see error analysis, I/O)
FCB image 77,104
list format 223
user labeling 77,104
user totaling 77,104
EXLST operand (DCB macro)
BDAM 49
BISAM 55
BPAM 62
BSAM 77
list format 223
QISAM 86
QSAM 104
expression
absolute (absexp) 4
relocatable (relexp) 4
extended binary coded decimal interchange code
ASCII translation
Check routine 23
DCB option 80,106
Get routine 125
Put routine 147
Write routine 197
XLATE macro 207
paper tape translation
ISAM 73
QSAM 99
extended search option
LIMCT operand 49
OPTCD operand 51

II

F-format records
(see RECFM operand)
FCB image (SETPRT macro) 172
exit 77,104
list format 223
operand (SETPRT macro) 172
feedback
block position 151,193
next address 150,200
FEOV macro instruction 113
file, end of
(see end of file)
final volume positioning 33,133
FIND macro instruction 115
fixed-length records
(see BLKSIZE operand; RECFM operand)
format
exit list 223
page 143
record
BDAM 52
BPAM 64
BSAM 81
QISAM 90
QSAM 107
forms alignment 172

forms control buffer
description 172
exit 223
image. 172
forward space 43,41
FREEBUF macro instruction
description 117
relationship to GETBUF macro 127
FREEDBUF macro instruction
description 119
used with BDAM 191
used with BISAM 55
FREEPOOL macro instruction
description 121
relationship to CLOSE macro 33
relationship to GETPOOL macro 129
restriction on buffer alignment 121
Friden 8-track paper tape code
BSAM 73
QSAM 99
full-track-index write operation 89
fullword boundary alignment
(see BFALN operand)
FUNC operand (DCB macro)
BSAM 74,76
QSAM 100

GET macro instruction
ASCII translation 125
data mode (QSAM) 105,125
locate mode
QISAM 83,123
QSAM 105,125
used with PUTX macro 147
move mode
QISAM 83,123
QSAM 105,125
restriction when using CNTRL macro 41
restriction when using paper tape 105
relationship to
EODAD
(see EODAD operand)
RELSE 167,105
SETL 169
specified in DCB macro
QISAM 83
QSAM 105
substitute mode (QSAM) 105,126
Get routine exits 125
GETBUF macro instruction
description 127
relationship to
BUILD macro 15
BUILDRCD macro 17
FREEBUF macro 117
GETPOOL macro instruction
description 129
relationship to
BUFCB
(see BUFCB operand)

Index 249

GETPOOL macro instruction (Continued)
BUFL (see BUFL operand)
BUFNO (see BUFNO operand)
FREEPOOL macro 121

a
IEBPTPCH utility program 1
IHADCB dummy section 109
image
FCB (forms control buffer) 172
UCS (universal character set) 172
image, data protection
BSAM 74
QSAM 100
image mode, card
BSAM 74
QSAM 100
independent overflow area 89
index
cylinder 89
highest level
address of 56
size of 56
master
number of tracks per level 89
specified in MACRF operand (DCB macro) 89
space allocation for 83
indicators, status 209-217
INOUT open option 134
INPUT open option 134
input data sets
basic access methods
BDAM 151
BISAM 155
BPAM 157
BSAM (read a direct data set) 159
BSAM (read a sequential data set) 157
closing 133
opening 33
queued access methods
QISAM 123
QSAM 125
READ or GET specified in DCB
BDAM 50
BISAM 55
BPAM 63
BSAM 79
QISAM 87
QSAM 105
testing completion of I/O operations 23
input/output devices
2540 card punch 96
card reader and card punch 41
control of 41
magnetic tape 41
printer
CNTRL macro 41
PRTOV macro 143
input/output error analysis
BDAM 52,209-217
BISAM 57,209-217

250 OS!VS Data Management Macro Instructions

BPAM 64,209-217
BSAM 81,209-217
QISAM 90,209-217
QSAM 108,209-217
SYNADAF macro 183,209-217
input/output operation
completion of 23
status indicators 209-217
synchronizing I/O 23
interface, logical record
invoked by BUILDRCD macro
specified in DCB macro
BDAM 46
BSAM 68
QSAM 94
used with GET macro 126
used with PUT macro 147

II
job control language
DD statement, relationship to DCB
data control block
(see DDNAME operand)
NOTE macro 131
OPEN macro 133
POINT macro 141
DISP parameter for extending ISAM 145
LABEL parameter to request ASCII translation 23
SP ACE parameter for ISAM 83
job step checkpoint restart 25

II
key, dummy (BDAM)
search for 191
specified in DCB macro 51
writing 199
key length
(see KEYLEN operand)
key position, relative (RKP) 90
key, record
PUT macro 145
READ macro 151-159
RKP operand (DCB macro) 90
SETL macro 169
WRITE macro 191-201
KEYLEN operand (DCB macro)
BDAM 49
BPAM 62
BSAM 78
QISAM 87

II
label
(see also EXLST operand)
exit list format 223

label (Continued)
input data set 133,113
output data set
CLOSE macro 33
FEOV macro 113
OPEN macro 133
LABEL parameter in DD statement 23
LEAVE option
CLOSE macro 33
FEOV macro 113
OPEN macro 133
length
buffer
(see BUFL operand)
record
(see LRECL operand)
levels of master index (ISAM) 88
LIMCT operand (DCB macro) 49
line spacing, printer
CNTRL macro 41
PRTSP operand (DCB macro)
BSAM 73
QSAM 99
list
directory contents (BLDL macro) 9
relative address (FIND macro) 115
variable-length parameter 37,13 7
list address, data management 39,139
list format, exit 223
list form instructions
BUILDRCD macro 19
CHKPT macro 29
CLOSE macro 37
OPEN macro 137
READ macro 161
SETPRT macro 175
WRITE macro 203
load mode (QISAM) 83
loading
universal character set buffer (UCS) 172
forms control buffer (FCB) 172
locate mode
GET macro
QISAM 123
QSAM 125
PUT macro
QISAM 145
QSAM 147
specified in DCB macro
QISAM 87-88
QSAM 105
logical record length for
(see also LRECL operand)
GET macro 123,125
PUT macro 145,147
PUTX macro 149
lower limit of sequential retrieval (SETL macro) 169
LRECL operand (DCB macro)
BPAM 62
BSAM 78
QISAM 87
QSAM 104

II
machine control characters
BPAM 63
BSAM 80
description 225
QSAM 107
MACRF operand (DCB macro)
BDAM 50-51
BISAM 55
BPAM 63
BSAM 79
QISAM 87
QSAM 105
macro
definition 1
expansion 1,4
library 1
macro instruction coding 2
magnetic tape
backspace
BSP macro 13
CNTRL macro 42
density 72,98
end-of-file, ignored 81,107
final volume positioning (FEOV macro) 113
forward space 42
read backward 157
recording technique 72,98
restriction when using NOTE macro 131
restriction when using POINT macro 141
short error recovery procedure 80,106
master index
number of tracks per level 89
option specified in DCB 89
highest level in storage
address of storage area 56
size of storage area 57
member, partitioned data set
complete a list with BLDL macro 9
locate beginning with FIND macro 115
update directory with STOW macro 179
mode
(see also MACRF operand)
card image
BSAM 74
QSAM 100
data (QSAM) 125,147
load (QISAM) 83
locate
QISAM 123,145
QSAM 125,147
move
QISAM 123,145
QSAM 125,147
optical mark read
BSAM 76
QSAM 101
read column eliminate
BSAM 74,76
QSAM 100

Index 251

mode (Continued)
scan (QISAM) 83,123
substitute (QSAM) 125,147
MODE operand (DCB macro)
BSAM 74
QSAM 100
modifying a parameter list
BUILDRCD macro 19
CLOSE macro 37
OPEN macro 137
READ macro 161
SETPRT macro 175
WRITE macro 203
move mode
QISAM 123,145
QSAM 125,147
MSHI operand (DCB macro) 56
MSW A operand (DCB macro) 56
multiline print option
BSAM 75
QSAM 101

•

National Cash Register 8-track paper tape code
BSAM 73
QSAM 99
NCP operand (DCB macro)
BISAM 56
BPAM 63
BSAM 79
next address feedback
BDAM (creating) 200
RDAM- (existing) 153
non sequential processing of sequential data 67
NOTE macro instruction
description 131
restriction when using BSP macro 13
specified in DCB for BSAM 79
used with BPAM 63
NTM operand (DCB macro) 88
number of channel programs
(see NCP operand)
number of tracks per index level
(see NTM operand)

online printer
control 4143
skipping 143,225
spacing 143,225
open operation, testing 135
open options 133-134
OPEN macro instruction
execute form 139
list form 137
relationship to
CLOSE, TYPE=T 33-35
FEOV macro 113

252 OSNS Data Management Macro Instructions

GETPOOL macro 129
NOTE macro 131
POINT macro 141
standard form 133
operand, substitution for 24
OPTCD operand (DCB macro)
BDAM 51
BPAM 63
BSAM 80
QISAM 89
QSAM 106
SETPRT macro 172
optical mark read mode
BSAM 76
QSAM 101
option codes
(see OPTCD operand)
organization, data set
(see access methods)
OUTIN open option 134
output data sets
basic access methods
BDAM (creating with BSAM) 199
BDAM (existing) 191
BPAM 197
BSAM 197
closing 133
opening 33
queued access methods
QISAM 145
QSAM 147
WRITE or PUT specified in DCB macro
BDAM 50
BPAM 63
BSAM 79
QISAM 88
QSAM 105
writing an input record in an output data set using PUTX 147
output header labels
BSAM 77
exit list format 223
QSAM 104
OUTPUT open option 134
output trailer labels
BSAM 77
exit list format 223
QSAM 104
overflow
area
cylinder 85,89
independent 88
channel 143
exit address (PRTOV macro) 143
printer carriage 143
records
(see overflow area)
overflow feature, track
BDAM 52
BPAM 64
BSAM 82
QSAM 108
overprinting 143

II
paper tape codes
BSAM 73
QSAM 99
parameter list construction
BUILD RCD macro 19
CHKPT macro 29
CLOSE macro 37
OPEN macro 137
READ macro 161
SETPRT macro 175
WRITE macro 203
parameter list, modification
BUILDRCD macro 21
CHKPT macro 31
CLOSE macro 39
OPEN macro 139
READ macro 163
SETPRT macro 177
WRITE macro 205
partitioned data set
general description 59
macro instructions used with 219
relationship to
BLDL macro 10
FIND macro 115
STOW macro 179
POINT macro instruction
description 141
relationship to
BSP macro 13
BPAM 63
BSAM 67
position, relative key (RKP) 90
position feedback
current block 151,193
next block 152,200
positioning volumes
using CLOSE macro 33
using FEOV macro 113
using OPEN macro 133
prefix, block
BSAM 70
QSAM 96
relationship to
buffer length 69,96
data alignment 67,93
printer options (3525)
BSAM 74
QSAM 100
printer
carriage control 41,225
character set buffer loading 172
control characters 225
control tape 143
forms control buffer loading 172
skipping 41,225
spacing 41,225
program, channel
BISAM 56
BPAM 63
BSAM 79

protect option, data
BSAM 74
QSAM 101
PRTOV macro instruction 143
PRTSP operand (DCB macro)
BSAM 73
QSAM 99
punch, card 74,100
PUT macro instruction
data mode (QSAM) 148
locate mode
QISAM 145
QSAM 148
move mode
QISAM 146
QSAM 148
specified in DCB macro
QISAM 88
QSAM 105
substitute mode 146
PUTX macro instruction 88,149

..

QISAM (queued indexed sequential access method)
general description 83
macro instructions used with 219
QSAM (queued sequential access method)
general description 93
macro instructions used with 219
queued access technique
(see QISAM and QSAM)

II
RDBACK open option 134
readbackward, magnetic tape 157
read column eliminate mode
BSAM 74-76
QSAM 100
READ macro instruction
execute form 163
list form 161
relationship to
CHECK macro 23
EODAD operand 62,77
FIND macro 115
FREEDBUF macro 119
LIMCT operand 49
NCP operand
BISAM 56
BPAM 63
BSAM 79
POINT macro 141
RELEX macro 165
specified in DCB macro
BDAM 50
BISAM 55
BPAM 63
BSAM 79

Index 253

READ macro instruction (Continued)
standard form
BDAM 151
BISAM 155
BPAM 157
BSAM (read direct data set) 159
BSAM (read sequential data set) 157
RECFM operand (DCB macro)
BDAM 52
BPAM 64
BSAM 81
QISAM 90
QSAM 107
record
area
construction 17,94-95
use of 90-91
deletion option (ISAM) 89
descriptor word
(see LRECL operand)
format
(see RECFM operand)
length
(see LRECL operand)
logical
GET 123,145
PUT ]45,147
physical
(see BLKSIZE operand)
retrieval 123,145
segment 145,147
variable-length, spanned 17,94
writing 145,147
recording density, magnetic tape
BSAM 72
QSAM 98
recording technique, magnetic tape
BSAM 72
QSAM 98
recovery procedUre, error
(see ERP)
register
contents on entry to
DCB exit routine 223
overflow exit routine 143
SYNAD routine 215-216
DCBD base 109
usage rules 4
relative addressing
BDAM 51,45
BLDL macro 10
FIND macro 115
POINT macro 141
relative key position 90
release
buffer 117
buffer pool 121
dynamically acquired buffer 119
exclusive control 165
QSAM buffer 167
RELEX macro instruction 165
relexp defined 4
relocatable expression defined 4
RELSE macro instruction 167
reorganization statistics (lSAM) 89,83

254 OS/VS Data Management Macro Instructions

REREAD option
CLOSE macro 33
FEOV macro 113
OPEN macro 134
restart job from a checkpoint
automatic 25
deferred 25
restore data control block 33
return codes
BLDL macro 11
BSP macro 13
CHKPT macro 27-28
FIND macro 116
RELEX macro 165
SETPRT macro 173
STOW macro 181
SYNADAF macro 184
SYNADRLS macro 187
WRITE macro 201
return from error analysis rou tine
BDAM 52
BISAM 57
BPAM 64
BSAM 82
QISAM 90
QSAM 108
REWIND close option 33
RKP operand (DCB macro 90

save area
general register requirements 4
SYNADAF requirement 183
SYNADRLS macro 187
search
partitioned data set directory
BLDL macro 9
FIND macro 115
type of
BDAM 191
QISAM 87
search argument
BDAM 51
QISAM 87
search direct option 80,106
search option, ex tended 51,49
segment
descriptor word 159,147
interface 159
work area 48
sequential access methods
(see access methods)
services, optional
BDAM 51
BPAM 63
BSAM 80
QISAM 89
QSAM 106
SETPRT macro 172
SETL macro instruction
description ] 69
ESETL macro III

SETL macro instruction (Continued)
GET macro 123
SETPRT macro instruction
execute form 177
list form 175
standard form 171
simple buffering 94
skipping, printer
(see also spacing, printer)
CNTRL macro 41
control characters 225
SMSI operand (DCB macro) 56
SMSW operand (DCB macro) 53
space allocation, data set
BPAM 59
QISAM 83
space, magnetic tape
backward 13,41
forward 41
spacing, printer
(see also skipping, printer)
CNTRL macro 41
control characters 225
specified in DCB macro
BSAM 73
QSAM 99
STACK operand (DCB macro)
BSAM 74
QSAM 100
stacker selection
CNTRL macro 41
control characters 225
specified in DCB macro
BSAM 74
QSAM 100
statistics reorganization (lSAM) 89
status
following an I/O operation 209-217
indicators 217
STOW macro instruction 179
substitute mode
GET macro 125
PUT macro 147
specified in DCB macro 105
switching volumes
CLOSE macro 33
FEOV macro 113
symbol defined 3
SYNAD operand (DCB macro)
(see also error analysis, I/O)
BDAM 52
BISAM 57
BPAM 64
BSAM 82
QISAM 90
QSAM 108
SYNADAF macro instruction 183
SYNADRLS macro instruction 187
synchronizing I/O operations 23
synchronous error exit
(see SYNAD operand)
SYSIN restrictions
CNTRL macro 41

DEVD operand (DCB macro)
BSAM 71
QSAM 97

•

tape codes, paper
BSAM 73
QSAM 99
tape density, magnetic
BSAM 72
QSAM 96
tape error recovery procedure
BSAM 80
QSAM 106
tape recording technique
BSAM 72
QSAM 96
Teletype 5-track paper tape code
BSAM 73
QSAM 99
temporary close of data set 33
termination, abnormal
Check routine 23
end of data
(see EODAD operand)
uncorrectable I/O error
(see SYNAD operand)
testing completion of I/O 23
testing for open data set 135
totaling exit, user
BSAM 77
list format 223
QSAM 104
track addressing, relative
BDAM 51,45
BLDL macro 10
FIND macro 115
POINT macro 141
track index write, full 89
track overflow feature
BDAM 52
BPAM 64
BSAM 82
QSAM 108
restrictions
chained scheduling 64,108
exchange buffering 94,108
ISAM 83
variable-length, spanned records 108
translation
ASCII to EBCDIC
CHECK macro 23
GET macro 125
XLATE macro 207
EBCDIC to ASCII
PUT macro 147
WRITE macro 197
XLATE macro 207
paper tape code 73,99
transmittal modes
(see also MACRF operand)

Index 255

transmittal modes (Continued)
data 125,147
locate 123-125,145-147
move 123-125,145-147
substitute 125-147
TR TCH operand (DCB macro)
BSAM 72
QSAM 98
TRUNC macro instruction 189
truncating a block 189
TYPE=T (BSAM CLOSE macro) 33-35

II
U-format records
BDAM 52
BPAM 64
BSAM 82
QSAM 108
UCS operand (SETPRT macro) 172
unblocking data checks
BSAM 80
QSAM 106
SETPR T macro 172
uncorrectable I/O errors
(see SYNAD operand)
undefined length records
(see U-format records)
universal character set
(see UCS operand)
unmovable data sets
(see DSORG operand)
UPDA T open option 134
updating partitioned data set directory 179
user
data in partitioned data set directory
BLDL macro 10
STOW macro 179
label exit
BSAM 77
list format 223
QSAM 104
totaling exit
BSAM 77
list format 223
QSAM 104
USING statement requirement
DCBD macro 109
macro expansions 4

II
V-format records
BDAM 52
BPAM 64

256 OS/VS Data Management Macro Instructions

BSAM 82
QISAM 90
QSAM 108
validity checking, write
BDAM 51
BPAM 63
BSAM 81
QISAM 89
QSAM 106
variable-length parameter list 37,13 7
variable-length records
(see V-format records)
variable-length, spanned records
BDAM 46,199
BSAM 68,199
QSAM 94,147
volume, forcing end of 113
volume positioning
CLOSE macro 33
FEOV macro 113
OPEN macro 123
POINT macro 141

II
work area for BISAM
address of 56
size of 56
WRITE macro instruction
execute form 205
list form 203
relationship to
CHECK macro 23
NCP operand
BISAM 56
BPAM 63
BSAM 79
RELEX macro 165
specified in DCB macro
BDAM 50
BlSAM 56
BPAM 63
BSAM 79
standard form
BDAM (create with BSAM) 199
BDAM (existing) 191
BISAM 195
BPAM 197
BSAM 197
testing for completion 23

II
XLATE macro instruction 297

READER'S COMMENT FORM
OSNS Data Management Macro Instructions

GC26-3793-1

Your comments about this publication will help us to produce better publications for your use. If
you wish to comment, please use the space provided below, giving specific page and paragraph
references.
Please do not use this form to ask technical questions about the system or equipment or to make
requests for copies of publications. Instead, make such inquiries or requests to your IBM representative or to the IBM Branch Office serving your locality.

Reply requested
Yes
No

D
D

Name
Job Title
Address
_ _ _ _ _ _ _ _ _ _ _ _ _ _ Zip _ _ _ _ _ _ _ _ _ _ _ __

No postage necessary if mailed in the USA

GC26-3793-1

YOUR COMMENTS, PLEASE . ..
This publication is one of a series which serves as a reference source for systems analysts,
programmers, and operators of IBM systems. Your answers to the questions on the back of
this form, together with your comments, will help us produce better publications for your
use. Each reply will be carefully reviewed by the persons responsible for writing and
publishing this material. All comments and suggestions become the property of IBM.
Please note: Requests for copies of publications and for assistance in utilizing your IBM
system should be directed to your IBM representative or to the IBM sales office serving
your locality.

fold

fold

FIRST CLASS
PERMIT NO. 2078
SAN JOSE, CALIF.

BUSINESS REPLY MAIL
NO POSTAGE STAMP NECESSARY IF MAILED IN U. S. A.,

POSTAGE WILL BE PAID BY . .

IBM Corporation
Monterey & Cottle Rds.
San Jose, California
95114

Attention: Programming Publications, Dept. D78

fold

Intematlonal Bualne.. Machlnea Corporation
Data Proce..lng Dlvlalon
1133 Weatcheater Avenue, White Plalna, New York 10604
(U.S.A. only)
IBM World Trade Corporation
821 United Natlona Plaza, New York, New York 10017
(lnternatlonaQ

fold

GC26-3793-1

International Business Machines Corporation
Data Proce..lng Division
1133 Westchester Avenue, White Plains, New York 10604
(U.s.A. only)
IBM World Trade Corporation
821 United Nations Plaza, New York, New York 10017
(International)

Technical Newsletter
Base Publication Number

GC26-3793-1

This Newsletter Number

GN26-0748

December 15, 1972

Date

Previous Newsletter Number (s) None

OS/VS DATA MANAGEMENT MACRO INSTRUCTIONS

(£)

IBM Corp. 1972

This technical newsletter, a part of Release 2 of OS/VS 1, provides replacement pages for the subject
publication. These pages remain in effect for subsequent releases unless they are specifically altered.
Pages to be inserted and removed are:
cover-2
27,28
33,34
41-46
53,54

59-62.1 (62.1 added)
67-86
93-108 (104.1 added)
113
133,134

143,144
157,158
211,212
221,222
231,232

Each technical change is marked by a vertical line to the left of the change.

Summary of Changes
Changes to the system are summarized under "OS/VSl Summary of Changes" following the Preface.
VSl Release 2 supports four new devices and one new function.
The 3505 Card Reader and the 3525 Card Punch are now supported by VS1; the macro instructions
affected by this change are CLOSE, CNTRL, DCB (BSAM and QSAM), OPEN, and PRTOV.
The 2305-1 Drum Storage and the new 3333 Disk Storage are also supported by VS1; capacity data for
these devices has been added to the tables in Appendix C.
DEB validity checking, a data protection feature formerly supported only by VS2, is now supported by
VS1; this change affects the OPEN macro instruction.
In addition to these major changes, miscellaneous other changes were made to:
• Describe register contents upon entry to an EO DAD routine (DCB macro instruction for BPAM, BSAM,
QISAM, and QSAM).
• Restrict use of the temporary close (TYPE=T) option in a SYNAD routine (CLOSE macro
instruction) .
• Expand the description of the LEAVE option (FEOV macro instruction for BSAM and QSAM).
• Define a new return code for the CHKPT macro instruction.
.
• Delete tape labels as a source of buffer alignment (BF ALN) data (DCB macro instruction for all
access methods).

Note: Please file this cover letter at the back of the publication to provide a record of changes.
IBM Corporation, Programming Center-Publishing, Monterey and Cottle Roads, San Jose, California 95114
PRINTED IN USA



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                     : 2013:03:12 12:56:16-08:00
Modify Date                     : 2013:03:12 16:58:03-08:00
Metadata Date                   : 2013:03:12 16:58:03-08:00
Producer                        : Adobe Acrobat 9.52 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:1e79e1ff-0c7f-42ac-8de2-785b0cabe69c
Instance ID                     : uuid:c8e54988-4339-43a8-adef-518cea49cf8f
Page Layout                     : SinglePage
Page Mode                       : UseNone
Page Count                      : 280
EXIF Metadata provided by EXIF.tools

Navigation menu