- BFALN={F|D}
- specifies the boundary
alignment for each buffer in the buffer pool when the buffer pool
is constructed automatically or by a GETPOOL macro. If BFALN is omitted,
the system provides doubleword alignment for each buffer.
If the
data set being allocated or processed contains ASCII tape records
with a block prefix, the block prefix is entered at the beginning
of the buffer. Also, data alignment depends on the length of the block
prefix. For a description of how to specify the block prefix length,
see the description of the DCB BUFOFF that is not L.
You can
specify:
- 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 doubleword boundary.
If the BUILD macro 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: BFALN can be supplied in
the DCB macro, in the DCB subparameter of a DD statement, or by the
problem program before completion of the data control block exit routine.
If both BFALN and BFTEK are specified, they must be supplied from
the same source.
- BFTEK=R
- specifies that BSAM is used to read unblocked variable-length
spanned records with keys from a direct data set. Each read operation
reads one segment of the record and places it in the area designated
in the READ macro. 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 it can assemble a record, identify each segment,
and assemble the segments into a complete record.
Source: BFTEK
can be supplied in the DCB macro, in the DCB subparameter of a DD
statement, or by the problem program before completion of the data
control block exit routine. If both BFTEK and BFALN are specified,
they must be supplied from the same source.
- BLKSIZE=absexp (maximum value KEYLEN
+ BLKSIZE is 32760)
- specifies the maximum block length in bytes. For fixed-length,
unblocked records, a non-zero value for this parameter specifies the
record length. BLKSIZE includes only the data block length. If keys
are used, the length of the key is not included in the value specified
for BLKSIZE. If a physical sequential data set that
contains fixed-length records (blocked or unblocked) is accessed with
a DCB that has specified a DSORG of undefined, then the BLKSIZE value
specified must be a value that is less than or equal to the data sets
physical block size in the DSCB.
If you wish to
process blocks longer than 32760 for BSAM, then use the BLKSIZE keyword
on a DCBE macro and use the DCBE keyword on the DCB macro. That requests
the large block interface. If the system allows the large block interface,
the system modifies the BLKSIZE field in the DCB and your program
should not use that field.
The actual value you can specify
in BLKSIZE depends on the device type and the record format being
used. Device capacity for direct access storage devices is described
in Selecting logical record lengths and block sizes for specific devices. For additional information
about device capacity, see the relevant device publication.
When
PDSEs, compressed format data sets, or z/OS UNIX files are
being processed, the value specified in BLKSIZE can be up to the maximum
value. For other data sets on direct access storage devices, the value
specified for BLKSIZE cannot exceed the capacity of a single track.
If
fixed-length records are used, the value specified in BLKSIZE should
be an integral multiple of the value specified for the logical record
length (LRECL).
For fixed-length unblocked records, LRECL
must equal BLKSIZE (if LRECL is specified).
If variable-length
records are used, the value specified in BLKSIZE must include the
maximum logical record length (up to 32756 bytes) plus the 4 bytes
required for the block descriptor word (BDW). For
format-D variable-length records (ASCII data sets), the minimum BLKSIZE
value is 18 bytes.
The maximum block size is 32,760
except for Version 3 ISO/ANSI tapes (ISO 1001-1979 and ANSI X3.27-1978),
where the maximum block size is 2048. As required by the standard,
an attempt to exceed 2048 bytes for a Version 3 tape results in a
label validation installation exit being called. The exit may allow
violation of the standard by writing larger blocks. This restriction
does not apply to Version 4 labels. For more information about the
BLKSIZE restrictions, see z/OS DFSMS Using Data Sets.
If
ASCII tape records with a block prefix are processed, the value specified
in BLKSIZE must also include the length of the block prefix.
If BSAM is used to read
variable-length spanned records the value specified for BLKSIZE must
be as large as the longest possible record segment in the data set,
including 4 bytes for the segment descriptor word (SDW) and 4 bytes
for the block descriptor word (BDW). The BLKSIZE must equal at least
8 bytes.
If undefined-length records are used, the value specified
for BLKSIZE 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 parameter of a READ or WRITE
macro.
Processing
PDSEs: The system reblocks PDSE records into its own internal
format when the data set is written, and reconstructs the blocks using
the block size from the DCB when the data set is read. For fixed-length
blocked records, the value specified in BLKSIZE must be a multiple
of the value in LRECL (if LRECL is specified). The LRECL value must
be available to OPEN when the PDSE is open for output.
When
reading a PDSE directory using fixed-length blocked records, you can
specify a BLKSIZE of 256 or greater (the LRECL is ignored). specified
in BLKSIZE is the user-perceived block size of the data set. The actual
physical (or internal) block size of the data set is calculated by
the system when the data set is written. This internal block size
is transparent to the user. The system, however, maintains the user's
block boundaries when the data is written. Therefore, it is able to
reconstruct the exact user blocks when the data set is read. When
writing in a compressed format data set, the access method generally
compresses the data. This compression and decompression when reading
are transparent to the user.
Processing
z/OS UNIX files: Block boundaries are not maintained
within a z/OS UNIX file. This means that when you read, records may
be distributed among blocks differently than they were written. When
BLKSIZE is not specified (by any source), it is defaulted to 80 on
input.
System-Determined Block Size: IBM® recommends that you not specify block size
except in these cases:
- Record format is U.
- Medium is tape without standard labels.
- A z/OS UNIX file is being processed.
This makes your program less dependent on the physical characteristics
of the device.
System-Determined
Block Size for DASD Data Sets: For DASD data sets, if the block
size is not specified at the time that the data set is created, and
LRECL and RECFM are known, and the record format is not U, the system
derives an optimum block size for the data set. This system-determined
block size is retained in the data set label. When the data set is
opened for output, OPEN checks the block size in the data set label.
If it is a system-determined block size, and LRECL or RECFM have changed
from those specified in the data set label, OPEN will re-derive an
optimum block size for the data set.
System-Determined
Block Size for Tape Data Sets: If you do not specify
a block size for a tape data set and the RECFM value is not U, the
system determines the optimum block size when the data set is opened
for OUTPUT or OUTIN. The system-determined block size depends on the
record format and the device type of the tape. See z/OS DFSMS Using Data Sets for
the table showing the block sizes that are set for tape data sets.
Source: BLKSIZE
can be supplied in the DCB or DCBE macro, in the DCB subparameter
of a DD statement, by the problem program before completion of the
data control block exit routine, by the data set label of an existing
data set, or by the system determining a value for a new data set.
The system does not copy BLKSIZE when you code the JCL keyword LIKE.
It derives the BLKSIZE from RECFM and LRECL which can be copied. For
more information on LIKE, see z/OS MVS JCL Reference
and z/OS MVS JCL User's Guide.
- BUFCB=relexp
- specifies the address of the buffer pool control block that you
have constructed by issuing a BUILD macro. The buffer pool must reside
below the 16MB line.
If the buffer pool is to be constructed automatically
or by a GETPOOL macro, omit BUFCB. This is because the system places
the address of the buffer pool control block into the data control
block. Also, if the problem program is to control all buffering, omit
BUFCB. A buffer pool control block resides below the 16MB line.
Source: BUFCB
can be supplied in the DCB macro or by the problem program before
issuing a GETBUF macro.
- BUFL=absexp (maximum value is 32760)
- specifies the length, in bytes, for each buffer in
the buffer pool when the buffer pool is acquired automatically. If
BUFL parameter is omitted and you request OPEN to build a buffer pool,
the system builds buffers with a length equal to the sum of the values
specified in KEYLEN and BLKSIZE. If the problem program requires larger
buffers (up to 32760 bytes), BUFL is required. If BUFL is specified,
it must be at least as large as the value specified in BLKSIZE in
the DCB (without LBI) or in the DCBE (with LBI). If the data set is
for card image mode, BUFL should be specified as 160. The description
of DEVD contains a description of card image mode.
If the data set
contains ASCII tape records with a block prefix, the value specified
in BUFL must include the block length plus the length of the block
prefix.
If the problem program is to control all buffering
or if the buffer pool is to be constructed by a GETPOOL or BUILD macro,
BUFL is not required.
Source: BUFL can be supplied
in the DCB macro, in the DCB subparameter on a DD statement, or by
the problem program before completion of the data control block exit
routine.
- BUFNO=absexp (maximum value is 255)
- specifies the number of buffers acquired automatically
by the system during OPEN.
If the problem program controls all
buffering or if the buffer pool is constructed by a GETPOOL macro,
omit BUFNO. The default is 0, meaning the system does not acquire
buffers automatically. If the system acquires buffers for BSAM, they
reside below the 16MB line. You may obtain each buffer by issuing
a GETBUF macro.
Source: BUFNO can be supplied in the
DCB macro, in the DCB subparameter of a DD statement, or by the problem
program before completion of the data control block exit routine.
- BUFOFF={absexp|L}
- specifies the length, in bytes, of the block prefix
used with an ASCII tape data set or a tape data set with CCSID. When
BSAM is used to read this kind of 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 without BUFOFF=L and data can consist of any characters
that can be converted into 7-bit ASCII code or the CCSID code. With
BUFOFF=L the block prefix is 7-bit ASCII. Any character that cannot
be converted is replaced with a substitute character. (For a more
detailed description of ASCII conversion characteristics, see z/OS DFSMS Using Magnetic Tapes.)
For format-D
records, the RDW must be binary; if RECFM=D and BUFOFF=L, the RDW
and BDW must both be binary. On output, the control program converts
the BDW and RDW to ASCII characters and, on input, the control program
converts ASCII data to BDW and RDW. This is true even when you use
the CCSID parameter to specify a character code other than ASCII.
You can specify the following characters in BUFOFF:
- 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 macros) in the same manner as if
the data were in format-V variable-length records. For further information
on format-D records, see z/OS DFSMS Using Data Sets.
If BUFOFF 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
BUFOFF 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 parameter
of a WRITE macro.
Source: BUFOFF can be supplied in
the DCB macro, in the DCB subparameter of a DD statement, or by the
problem program before an OPEN macro is issued to open the data set.
BUFOFF=absexp can also be supplied by the
label of an existing data set. BUFOFF=L cannot be supplied by the
label of an existing data set.
- DCBE=relexp
- specifies the address of a DCB Extension (DCBE). The
DCBE may reside above the 16MB line. You may assemble a DCB and DCBE
in a program that resides above the line if the DCB is copied below
the line before opening the copy.
If the DCBE is specified, it
must be specified before issuing the OPEN macro. Like the DCB, the
DCBE must exist until the data set is closed. Otherwise, there may
be unpredictable results.
Only one open DCB at
a time can refer to a particular DCBE. After a DCB is successfully
closed, you can open a different DCB referring to the DCBE.
The DCBE is not required with BSAM unless the data set
requires a DCBE option or if you choose to use DCBE options.
If
a DCBE exists, the flags DCBH0 and DCBH1 are both set on. The pointer
to the DCBE is stored at offset +0 in the DCB (and replaces the field
DCBRELAD). If a DCBE exists, data that would be stored at DCBRELAD
is stored in the DCBE (DCBERELA). If a DCBE does not exist, DCBRELAD
continues to be located at offset +0 in the DCB.
Source: You can supply the DCBE address in the DCB macro or
before issuing an OPEN macro to open the data set.
- DDNAME=symbol
- specifies the name that is to be used to identify the job control
language data definition (DD) statement that defines the data set
being allocated or processed.
Source: DDNAME can be supplied
in the DCB macro or by the problem program before an OPEN macro is
issued to open the data set.
- DEVD={DA|TA|PR|PC|RD}
- specifies the device type where the data set can or does reside.
The device
types above are shown with the optional parameters that can be coded
when a particular device is used. The devices are listed in order
of device independence. For example, if you code DEVD=DA in a DCB
macro (or omit DEVD parameter, which causes a default to DA), you
can later use the data control block constructed during assembly for
any of the other devices, but, if you code DEVD=RD, you can use the
data control block 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 parameter and allow it to default
to DA.
Restriction: If the data set can or does reside on
DASD, do not code a value other than DEVD=DA. For spooled data sets, dummy data sets, and TSO terminals any DEVD value is
acceptable.
DEVD
is discussed below according to individual device type:
- DEVD=DA
- [,KEYLEN=absexp]
- specifies that the data control block can be used for a direct
access storage device (or any of the other device types described
following DA).
- KEYLEN=absexp
- can be specified only for data sets that reside on direct access
storage devices. Because the KEYLEN is usually coded without the DEVD
parameter (default taken), the description of KEYLEN is in alphabetic
sequence with the other parameters.
- DEVD=TA
- [,DEN={1|2|3|4}]
- [,TRTCH={C|E|ET|T}|{COMP|NOCOMP}]
- 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, you can code the following optional parameters:
- DEN={1|2|3|4}
- specifies the recording density in the number of bits-per-inch
per track as follows:
DEN |
7-Track |
9-Track |
18-Track |
36-Track |
1 |
556 |
N/A |
N/A |
N/A |
2 |
800 |
800 (NRZI)1 |
N/A |
N/A |
3 |
N/A |
1600 (PE)2 |
N/A |
N/A |
4 |
N/A |
6250 (GCR)3 |
N/A |
N/A |
Notes: - NRZI is for nonreturn-to-zero inverted mode.
- PE is for phase encoded mode.
- GCR is for group coded recording mode.
If
DEN is not supplied by any source, the highest applicable density
is assumed.
For magnetic tape drives that use cartridges, such
as the 3480, only a single density is available and is used by the
system for reading and writing; any density with the DEN parameter
is ignored.
- TRTCH={C|E|ET|T}|{COMP|NOCOMP}
- The
TRTCH parameter has two different sets of values. One of the sets,
{C|E|ET|T}, is used to specify the recording technique for 7-track
tape. The other set, {COMP|NOCOMP}, is used to specify the recording
technique for magnetic tape drives with Improved Data Recording Capability
and override the system default.
- {C|E|ET|T}
- These values specify the recording technique for 7-track tape.
One of the above four values can be coded. If TRTCH is omitted, odd
parity with no translation or conversion is assumed. You can specify:
- 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 that even parity with BCDIC to EBCDIC translation is
required and no data-conversion feature.
- T
- specifies
that BCDIC to EBCDIC translation is required with odd parity and no
data-conversion feature.
- {COMP|NOCOMP}
- These values specify the recording technique for magnetic tape
drives with Improved Data Recording Capability. Either of the two
values can be coded. If TRTCH is omitted, the system default specified
in the active DEVSUPyy member of SYS1.PARMLIB (initially set to NOCOMP)
is assumed. You can specify:
- COMP
- record data in compacted format. COMP is not supported with ISO/ANSI
tape labels.
- NOCOMP
- record data in standard format.
Source: TRTCH can be supplied in the
DCB macro, in the DCB subparameter on a DD statement, in the IBM standard tape label or by the
problem program before completion of the data control block exit routine.
- DEVD=PR
- [,PRTSP={0|1|2|3}]
- specifies that the data control block is used for a
directly allocated printer (or any of the other device types following
PR). This has no effect for a spooled (SYSOUT) or subsystem data set.
If PR is coded, you can specify:
- PRTSP={0|1|2|3}
- specifies the line spacing
on the printer. This parameter is not valid if the RECFM parameter
specifies either machine (RECFM=M) or ISO/ANSI (RECFM=A) control characters.
If PRTSP is not specified from any source, 1 is assumed. You can specify:
- 0
- specifies that spacing is suppressed (no space).
- 1
- specifies single spacing.
- 2
- specifies double spacing (one blank line between printed lines).
- 3
- specifies triple spacing (two blank lines between printed lines).
- DEVD=PC
- [,MODE=[C|E][R]]
- [,STACK={1|2}]
- [,FUNC={I|P|PW[XT]|R|RP[D]|RW[T] |RWP[XT][D]| W[T]}]
- 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, you
can specify the following optional parameters:
- MODE=[C|E][R]
- specifies the mode of operation for the card punch. You can specify
the following characters (if MODE is omitted, E is
assumed):
- C
- specifies
that the cards are punched in column binary (card image) mode. In
column binary mode, the 12 rows in each card column are punched from
2 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 the cards are
punched in EBCDIC code.
- R
- specifies that the program runs in read-column-eliminate mode
(3525 Card Punch, read feature).
If you code R for
the MODE subparameter of the DCB parameter of the DD statement, you
must also code either C or E.
- STACK={1|2}
- specifies that the stacker bin where the card is placed after
punching is completed. If this parameter is omitted, stacker number
1 is used. You can specify:
- 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]}
- defines the type of 3525 card punch data sets used. If the FUNC
parameter 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. You can specify:
- D
- specifies that the data protection option is 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.
Specify its name in the FCB parameter of the DD statement. 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 punched into 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 can be the same as the data punched
in the card, or it can 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.
- DEVD=RD
- [,MODE=[C|E][O
|R]]
- [,STACK={1|2}]
- [,FUNC={I|P|PW[XT]|R|RP[D]| RW[T]|RWP[XT][D]| W[T]}]
- 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, you can specify
the following optional parameters:
- MODE=[C|E][O|R]
- specifies the mode of operation for the card reader. You can specify:
- C
- specifies that the cards to read are in column binary (card image)
mode. In column binary mode, the 12 rows in each card column are read
into 2 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 read contain data in EBCDIC code.
- O
- specifies
that the program runs in optical-mark-read mode (3505 Card Reader).
- R
- specifies the program runs
in read-column-eliminate mode (3505 Card Reader or 3525 Card Punch,
read feature).
If you code R or O for
the MODE subparameter of the DCB parameter of the DCB parameter of
the DD statement, you must also code either C or E.
- STACK={1|2}
- specifies
the stacker bin where the card is placed after reading is completed.
If this parameter is omitted, stacker number 1 is used. You can specify:
- 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]}
- defines the type of 3525 card punch data sets used. If the FUNC
parameter 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. You can specify:
- D
- specifies that the data protection option is 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.
Specify its name in the FCB parameter of the DD statement. 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 punched into 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 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 can be the same as the data punched
in the card, or it can 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.
Source: DEVD can be supplied only in
the DCB macro. However, the optional parameters can be supplied in
the DCB macro, the DCB subparameter of a DD statement, or by the problem
program before completion of the data control block exit routine.
- DSORG={PS|PSU}
- specifies the data set organization and
whether the data set contains any location-dependent information that
would make it unmovable. You can specify:
- PS
- specifies a physical sequential data set.
- PSU
- specifies a physical sequential data set containing location-dependent
information that makes it unmovable. See NOTE—Provide relative position (BPAM and BSAM—tape and DASD only) for more information about unmovable
data sets.
Restriction: Unmovable data sets cannot be
system-managed. There are exceptions, however, in cases where the
checkpoint/restart function has set the unmovable attribute for data
sets that are already system-managed. This setting prevents data sets
opened previously by a checkpointed application from being moved
until you no longer want to perform a restart on that application.
PDSEs and extended format data sets must be system-managed, and, thus,
cannot be unmovable.
Source: You must code DSORG in the DCB
macro.
- EODAD=relexp
- specifies
the address of the routine given control when
the end of an input data set is reached. 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 determines that
the READ macro reached the end of the data. If the end of the data set is reached
but no EODAD address was supplied to the data control block (DCB)
or DCBE, the task is abnormally terminated. For additional information
on the EODAD user exit routine, see z/OS DFSMS Using Data Sets.
When the data set has been opened for other than UPDAT, the system
automatically switches volumes when the end of data on each volume
is reached.
When the data set has been opened for UPDAT and
volumes are to be switched, the problem program should issue a FEOV
macro after the EODAD routine has been entered.
This end-of-data
routine entry point specified in the DCB must reside below the line.
If you wish the entry point to reside above the line, use the EODAD
parameter of the DCBE macro. See the EODAD parameter description for
the DCBE macro, DCBE—(BDAM, BSAM, QSAM, BPAM, and EXCP). The EODAD routine
(whether it is specified in the DCBE or DCB) receives control in the
addressing mode in which the CHECK macro was issued.
Source: EODAD
can be supplied in the DCB macro or by the problem program before
the end of the data set is reached.
- EXLST=relexp
- specifies the address of the DCB exit list. EXLST
is required if the problem program requires additional processing
for user labels, user totaling, data control block OPEN exit routines,
end-of-volume, block count exits, defining a forms control buffer
(FCB) image, using the JFCBE exit (for the IBM 3800 Printing Subsystem), or using the DCB
ABEND exit for abend condition analysis.
The exit
list must reside below the line. For the function, format, and requirements
of exit list processing, see z/OS DFSMS Using Data Sets.
Exit routines can reside above the 16 MB line if you use the technique
described in Figure 1.
Source: EXLST
can be supplied in the DCB macro or by the problem program any time
before the relevant function is needed.
- KEYLEN=absexp (maximum value is
255)
- specifies the length, in bytes, for the key associated with each
data block in a direct access storage 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.
A
nonzero key length is allowed for input from a PDSE, but is not allowed
for output to a PDSE. You can use keys for reading PDSE members, but
not for writing PDSE members.
You cannot specify a nonzero
key length on output for an extended format data set. KEYLEN is
ignored for z/OS UNIX files.
Source: KEYLEN
can be supplied in the DCB macro, 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. If KEYLEN=0 is specified in the DCB macro, a special indicator
is set in RECFM so that KEYLEN cannot be supplied from the DCB subparameter
of a DD statement or data set label of an existing data set. KEYLEN=0
can be coded only in the DCB macro and is ignored if specified in
the DD statement.
Key length can be derived from the data
class associated with the data set. Key length can also be derived
from the JCL keyword LIKE. However, if KEYLEN is specified in the
DCB macro, it overrides the value derived from data class or LIKE.
For more information, see z/OS MVS JCL Reference.
- LRECL={absexp|X}
- 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 32756 bytes. Except when variable-length spanned records are
used, the value specified in LRECL cannot exceed the value specified
in BLKSIZE.
LRECL is required when using variable-length spanned
records. LRECL is also required for PDSEs and compressed format data
sets containing fixed-length block records when opened for output.
For
other types of data sets. LRECL can be omitted for BSAM; the system
uses the value specified in BLKSIZE. If you want the system to determine
the optimum block size for the data set, you must code LRECL. If an
LRECL value is coded, it is coded as follows:
Unblocked
fixed-length records: the value specified in LRECL must be equal
to the value specified in BLKSIZE.
Blocked fixed-length
records: the value specified in the LRECL parameter must be evenly
divisible into the value specified in the BLKSIZE parameter. However,
except for PDSEs and compressed format data sets, LRECL is not checked
for validity.
Variable-length records: the value specified
in LRECL must include the maximum data length (up to 32752 bytes)
plus 4 bytes for the record-descriptor word (RDW).
Undefined-length
records: omit LRECL; the actual length is supplied dynamically
in a READ/WRITE macro. 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 if your program is not using the large block interface (LBI).
z/OS
UNIX files: record boundaries are not maintained
within a binary z/OS UNIX file. When LRECL is not specified (by any
source), it is defaulted to 80 on input.
- X
- When using BSAM to create a direct data set with variable-length
spanned records, the LRECL value should be the maximum data length
(up to 32752) plus 4 bytes for the record descriptor word (RDW). Specify
LRECL=X if the logical record length is greater than 32756 bytes.
Source: LRECL can be supplied in
the DCB macro, 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.
Record length
can be derived from the data class associated with the data set. Record
length can also be derived from the JCL keyword LIKE. However, if
LRECL is specified in the DCB macro, it overrides the value derived
from data class or LIKE. For more information, see z/OS MVS JCL Reference.
- MACRF={{(R[C|P])}
- {(W[C|P|L])}
- {(R[C|P],W[C|P])}}
- specifies the type of macros (READ, WRITE,
CNTRL, and NOTE/POINT) that are used with the data set being created
or processed. The
BSAM MACRF parameter also provides the special form (MACRF=WL) for
creating a direct data set. MACRF can be coded in any of the combinations
shown above. The following characters can be coded for BSAM:
- C
- specifies
that the CNTRL macro is used with the data set. If you specify C,
the device must be one of these described in CNTRL—Control directly allocated input/output device (BSAM and QSAM). If C is
specified for use with a card reader, a CNTRL macro must follow each
input request.
- L
- specifies that BSAM is used to create a direct data set. This
character can be specified only in the combination MACRF=WL. This
does not support 31-bit addressing.
- P
- specifies
that POINT macros are used with the data set being created or processed.
Specifying P in MACRF also automatically
allows you to use NOTE macros with the data set.
Do not code P for
FIFO or character special z/OS UNIX files or with PATHOPTS=OAPPEND
(see NOTE and POINT macros for more information).
The
NOTE and POINT macros cannot be used with spooled data sets. Some
subsystems (SUBSYS on the DD statement) may support the NOTE and POINT
macros with TYPE=REL specified or defaulted. Assume it does not work
unless the subsystem documentation says it is supported.
- R
- specifies that READ macros are used. R is required if the OPEN
option is INPUT, UPDAT, or RDBACK. It has no effect if the OPEN option
is OUTPUT or EXTEND. R may be specified if the OPEN option is INOUT
or OUTIN.
- W
- specifies that WRITE macros are used. W is required if the OPEN
option is OUTPUT or EXTEND. It has no effect if the OPEN option is
INPUT or RDBACK. W may be specified if the OPEN option is UPDAT, INOUT,
or OUTIN.
Rule: You must use the CHECK macro to
check each READ and WRITE macro issued in the problem program for
completion.
Source: MACRF must be specified in the DCB
macro.
- NCP=absexp (maximum value is 255)
- specifies
the maximum number of READ and WRITE macros that are issued before
the first CHECK macro is issued to test for completion of the I/O
operation. In an address space that is constrained for storage below
the line, requesting too large a number may result in abnormal termination
of the program. If NCP is omitted, 1 is assumed unless you coded the
MULTSDN parameter on the DCBE macro.
To request the system to
default a value for NCP other than 1, you must supply a DCBE and set
MULTSDN to nonzero. The system will update DCBNCP with the system-defaulted
NCP (SDN) before the DCB OPEN exit is given control. This allows you
to give the system indicators without being dependent on device information
such as blocks per track or number of stripes. If you change parameters
in the OPEN exit which would cause recalculation of system-determined
block size, or you change block size, the SDN will be re-derived after
the OPEN exit and stored in the DCBNCP.
If NCP is
zero and MULTSDN is non-zero and the block size is greater than or
equal to 32768, then NCP will be set to the MULTSDN value with a minimum
of 2 and a maximum of 16.
Extended format data sets: Some
programs calculate NCP in the DCB OPEN exit by using TRKCALC to get
the number of blocks per track. Since a suffix is included with each
block on DASD for an extended format data set, the number of blocks
per track returned by TRKCALC might not be accurate because it does
not take into account the block suffix. This may result in allocating
more buffers than is necessary for an extended format data set which
consists of only one stripe. Also, for extended format data sets which
consist of more than one stripe, using an NCP of this number of blocks
per track will result in inadequate performance unless NCP is made
larger based on the number of stripes.
Recommendation: For
compressed format data sets, do not specify NCP (thus, allowing the
system to default it to 1) or specify NCP=1. This is the optimal value
for NCP for a compressed format data set since the system handles
all buffering internally for these data sets. Therefore, the following
technique for choosing a value for NCP does not pertain to compressed
format data sets. In fact, since the physical blocks have no relationship
to the user-specified block size, IBM recommends
that TRKCALC not be used to return number of blocks per track of a
compressed format data set, since the value returned will not be accurate.
If
you choose to calculate NCP in the DCB OPEN exit, then you may want
to choose to use the following technique to calculate a value for
extended format data sets. However, you can gain the same effect by
coding the MULTSDN parameter on the DCBE macro.
Source: NCP can be supplied in the DCB macro,
in the DCB subparameter of a DD statement, or by the problem program
before completion of the data control block open exit routine.
- OPTCD={{B}
- {T}
- {U[C]}
- {C[T][B][U]}
- {H[Z][B]}
- {J[C][U]}
- {W[C][T][B][U]}
- {Z[C][T][B][U]}
- {Q[C][B][T}
- specifies the optional services that are used with the sequential
data set. Two of the optional services, OPTCD=B
and OPTCD=H, cannot be specified in the DCB macro. They are requested
in the DCB subparameter of a DD statement. Because all optional services
requests must be supplied by the same source, you must omit OPTCD
from the DCB macro if either of these options is requested in a DD
statement.
Note: If you specify OPTCD=B on the DD statement
for a multivolume tape data set, the system will generate the equivalent
of individual concatenated DD statements for each volume serial number.
This means that the system allocates one tape drive for each volume.
You
can code the following characters in any order, in any combination,
and without commas between characters.
- C
- specifies
that chained scheduling is used. OPTCD=C cannot be specified if 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
and is ignored for direct access storage devices.
Note: Except where
it is not allowed, chained scheduling is used whether requested or
not. For conditions under which chained scheduling is not allowed,
see
z/OS DFSMS Using Data Sets.
- J
- specifies that the first data byte in the output data line is
a 3800 table reference character. This table reference character selects
a particular character arrangement table for the printing of the data
line and can be used singly or with ISO/ANSI or machine control characters.
This option has effect for DASD data sets, SYSOUT data sets, and a
directly allocated IBM 3800
Printing Subsystem or IBM 3900
Printing Subsystem. On DASD, this indication is saved in the
data set label and can be available to programs that read the data.
For a partitioned data set, the OPTCD value applies to all members.
If the SYSOUT data set is printed on a device that does not support
table reference character, the system discards that byte.
- Q
- requests conversion of the tape records between what is stored
on tape and what is supplied from/to the problem program. For input
requests, conversion is done at CHECK time. For output requests, conversion
is done just before the record is written to tape. For further information
on this conversion, see z/OS DFSMS Using Data Sets.
The Q option implies that the character representation of the
data on tape differs from that seen by the problem program. Data management
converts records according to one of the following techniques:
- CCSID Conversion
If CCSIDs are supplied from any source
for ISO/ANSI V4 tapes, records are converted between the CCSID which
represents the data on tape and the CCSID as seen by the problem program.
You can also prevent conversion by supplying a special CCSID.
- Default Character Conversion
If you are using non-ISO/ANSI
V4 tapes or if CCSIDs are not supplied by any source, data management
converts the records between ASCII code (which represents the data
on tape) to EBCDIC code (which is seen by the problem program) using
specific tables defined for this default character conversion.
Refer to z/OS DFSMS Using Data Sets,
for a complete description of CCSID conversion and default character
conversion.
See z/OS DFSMS Using Magnetic Tapes for
more information about ISO/ANSI labels.
Q is supported only
for a magnetic tape that does not have IBM standard
labels. If the tape has ISO/ANSI labels (LABEL=(,AL)), the system
assumes OPTCD=Q.
- T
- specifies
the user totaling function. If this function is requested, EXLST should
specify the address of an exit list that includes a user totaling
entry. T cannot be specified for SYSIN and
SYSOUT data sets.
Restriction: User totaling is supported only for
sequential data sets that are not extended format data sets. If you
specify user totaling for a partitioned data set, a PDSE, an extended
format data set, or a z/OS UNIX file, it is ignored.
- U
- is specified only for a printer with the universal character set
(UCS) feature or the 3800 Printing Subsystem. This option unblocks
data checks (permits them to be recognized as errors) and allows analysis
by the appropriate error analysis routine (SYNAD exit routine). If
the U option is omitted, data checks are
not recognized as errors.
- W
- specifies, for DASD, that the system is to perform a validity
check on each block written on a direct access storage device.
OPTCD=W
is ignored for PDSEs, extended format data sets, and z/OS UNIX files.
The
system reads each block back. The intent is to ensure
that the data would survive a subsequent power failure. Because of
the performance degradation and the reliability of modern IBM devices and recovery techniques, IBM recommends not coding OPTCD=W.
For
buffered tape devices, specifies that device end interrupt is given
only when a block is physically on the device. By specifying OPTCD=W
with buffered devices, you do not benefit from the performance advantage
of buffering.
- Z
- for
magnetic tape (input only). 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. OPTCD=Z is
intended for use 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.
Note: The following optional services can be requested
in the DCB subparameter of a DD statement. If either of these options
is requested, the complete OPTCD parameter must be supplied in the
DD statement.
- B
- 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. For
an input data set on a standard labeled (SL or AL) tape, the EOV routine
treats EOF labels as EOV labels until the volume serial list is exhausted.
After all the volumes have been read, control is passed to your end-of-data
routine. This option allows SL or AL tapes to be read out of volume
sequence or to be concatenated to another tape using one DD statement.
- H
- specifies that the VSE/MVS interchange feature is being
used with the data set. It is on magnetic tape and may contain VSE
embedded checkpoint records. You cannot use this option with LBI.
Source: OPTCD can be supplied in
the DCB macro, in the DCB subparameter of a DD statement, in the data
set label for direct access storage devices, or by the problem program
before completion of the DCB open exit routine or JFCBE exit routine.
However, all optional services must be requested from the same source.
- RECFM={{U[T][A|M]}
- {V[B][S][T][A|M]}
- {D[B][S][A]}
- {F[B|S|T|BS|BT][A|M]}}
- specifies the record format and characteristics
of the data set being allocated or processed. All
the record formats shown above can be specified. BSAM recognizes only
data blocks. Therefore, for record formats that specify blocked records,
the problem program must block and deblock logical records. You can
specify:
- A
- specifies
that the records in the data set contain International Organization
for Standardization (ISO) or American National Standards Institute
(ANSI) control characters. For a description of control characters,
see Control characters.
- B
- specifies that the data set contains blocked records.
- D
- specifies
that the data set contains variable-length ASCII tape 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. For a description of control characters, see Control characters. RECFM=M cannot be used with ASCII
data sets.
- S
- specifies, for fixed-length records, that the records are written
as standard blocks. Except for the last block or track in the data
set, the data set contains no truncated blocks or unfilled tracks.
Do not code S to retrieve fixed-length records
from a data set allocated using a RECFM other than standard.
For
variable-length records, including variable-length ASCII, S specifies
that a record can span more than one block.
- T
- specifies
that track overflow is used with the data set. Track overflow allows
a record to be written partially on one track of a direct access storage
device and the remainder of the record to be written on the following
tracks (if required).
Note: This is an obsolete option. The system
ignores it.
- U
- specifies
that the data set contains undefined-length records.
Restriction: Format-U records are not supported
for Version 3 or Version 4 ISO/ANSI tapes. An attempt to process a
format-U record for a Version 3 or Version 4 tape results in a label
validation installation exit being called.
On ISO/ANSI
Version 1 (ISO 1001-1969 or ANSI X3.27-1969) tapes, format-U records
can be used for input only. These records are the same as in other
types of data sets except that any control characters must be ISO/ANSI
control characters and block prefixes can be used.
- V
- specifies
that the data set contains variable-length records.
Restrictions are as follows:
- Do not specify RECFM=FS or RECFM-FBS for a partitioned data set
or PDSE because it will cause an abend.
- RECFM=V cannot be specified for a card reader data set or an ISO/ANSI
tape data set.
- RECFM=VS, VBS, DS, or DBS do not provide the spanned record function.
If this format is used, the problem program must block and segment
the records.
- RECFM=VS, VBS, DS, or DBS cannot be specified for a SYSIN data
set.
- RECFM=VS or VBS cannot be specified for a z/OS UNIX file.
- RECFM=V cannot be used for a 7-track tape unless the data conversion
feature (TRTCH=C) is used.
Source: RECFM can be supplied in the DCB macro,
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.
Record format can
be derived from the data class associated with the data set. Record
format can also be derived from the JCL keyword LIKE. However, if
RECFM is specified in the DCB macro, it overrides the value derived
from data class or LIKE. For more information, see z/OS MVS JCL Reference.
- SYNAD=relexp
- specifies
the address of the error analysis (SYNAD) routine to be given control
when an uncorrectable input/output error occurs. The entry point of
this SYNAD routine must reside below the line. If you wish the entry
point to reside above the line, use the SYNAD parameter of the DCBE
macro. You can also use the technique shown in Figure 1. The contents of the registers
when the error analysis routine is given control are described in z/OS DFSMS Using Data Sets.
Additional status information available to the SYNAD routine is described
in Status information following an input/output operation.
The system detects
I/O errors asynchronously. It calls your SYNAD routine synchronously
(hence the name SYNAD) when you issue a CHECK macro for the failed
block. If SYNAD is omitted in the DCB and DCBE, the task is abnormally
terminated when you issue a CHECK and an uncorrectable input/output
error occurred.
The error analysis routine must not use the
save area pointed to by register 13. The system does not restore registers
when it regains control from the error analysis routine. The error
analysis routine can issue a RETURN macro that uses the address in
register 14 to return control to the system. If control
is returned in this manner, the system returns control to the problem
program and proceeds as though no error had been found.
The
SYNAD routine (whether it is specified in the DCBE or DCB) receives
control in the addressing mode in which the CHECK macro was issued.
On return from a SYNADAF or SYNADRLS macro issued in the SYNAD routine,
the high order byte of register 15 will be unpredictable. Therefore,
callers of SYNADAF or SYNADRLS in 31-bit addressing mode must either
not use register 15 as a base register or restore the high order bytes
on return from SYNADAF or SYNADRLS.
When operating a directly
allocated IBM 3800 Model 3,
6, or 8 using all-points addressability, the
SYNAD exit routine is entered if Print Services Facility™ (PSF)
detects an unrecoverable error. However,
no error information is available to the SYNAD routine. If you want
to continue processing, you must close and reopen the data set to
restart PSF.
Source: SYNAD can be supplied in the DCB
macro or by the problem program. The problem program can also change
the error routine address at any time.