|
The data control block for a queued sequential access method (QSAM)
data set is constructed during assembly of the problem program. You
must code DSORG and MACRF in the DCB macro, but the other DCB parameters
can be supplied to the data control block from other sources. Each
DCB parameter description contains a heading, "Source". The information
under this heading describes the sources that can supply the parameter.
Each reference to a DCB OPEN exit routine applies also to a JFCBE
exit routine.
You can assemble the DCB macro into a program that resides above
the 16 MB line, but the program must move it below the line before
using it. Except for the DCBE, all areas that the DCB refers to, such
as EXLST and EODAD, must be below the 16 MB line.
The format of the DCB macro for QSAM is:
[label]
|
DCB
|
[BFALN={F|D}] [,BFTEK={S|A}] [,BLKSIZE=absexp] [,BUFCB=relexp] [,BUFL=absexp] [,BUFNO=absexp] [,BUFOFF={absexp|L}] [,DCBE=relexp] 1 [,DDNAME=symbol] 1 [,DEVD={{DA} {TA [,DEN={1|2|3|4}] [,TRTCH={C|E|ET|T}|{COMP|NOCOMP}]} {PR [,PRTSP={0|1|2|3}]} {PC [,MODE=[C|E][R]] [,STACK={1|2}] [,FUNC={I|P|PW[XT]|R|RP[D]| RW[T]|RWP[XT][D]|W[T]}]} {RD [,MODE=[C|E][O|R]] [,STACK={1|2}] [,FUNC={I|P|PW[XT]|R|RP[D]| RW[T]|RWP[XT][D]|W[T]}]}}],DSORG={PS|PSU} [,EODAD=relexp] [,EROPT={ACC|SKP|ABE}] [,EXLST=relexp] [,LRECL={absexp|X|0K|nnnnnK}] ,MACRF={{(G{M|L|D}[C])} {(P{M|L|D}[C])} {(G{M|L|D}[C],P{M|L|D}[C])}}[,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]}] {Z}}] [,RECFM={{U[T][A|M]} {V[B][S][T][A|M]} {D[B][S][A]} {F[B|S|T|BS|BT][A|M]}}] [,SYNAD=relexp]
|
Note: - This parameter must be supplied before an OPEN macro
is issued for this DCB; it cannot be supplied in the open exit routine.
Recommendation: When creating a DCB to open a data set allocated
to an SMS-managed volume, do not specify values that would change
the data set to a type which cannot be SMS-managed, such as DSORG=PSU.
QSAM supports the following DCB parameters: - BFALN={F|D}
- specifies the boundary alignment of 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 BUFOFF.
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, the problem program must 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={S|A}
- specifies
the buffering technique. If BFTEK is omitted, simple buffering is
assumed. You can specify:
- S
- specifies
that simple buffering is used.
- 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. LRECL=0 is invalid. The LRECL provided
at open should be the maximum length in bytes. When a logical record
interface is requested, the system uses the simple buffering technique.
BFTEK=A is invalid with move transmittal mode.
BFTEK=A
is invalid with UNIX files.
To use the simple buffering technique efficiently,
you should be familiar with the three transmittal modes for QSAM and
the buffering techniques described in z/OS DFSMS Using Data Sets.
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 is
32760 bytes)
- specifies the maximum length, in bytes, of each data block for
fixed-length, unblocked records. This parameter specifies the record
length. If a physical sequential data set that
contains fixed-length records (blocked or unblocked) is accessed with
a DCB that has specified a DSORG or 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 the data set
for QSAM contains blocks longer than 32760 bytes, then use the BLKSIZE
keyword on a DCBE macro and use the DCBE keyword on the DCB macro.
That requests the large block interface (LBI). If the system allows
LBI, the system modifies the BLKSIZE field in the DCB and your program
should not use it.
The actual value that you can specify in
BLKSIZE depends on the device type and record format being used. (For
additional information about device capacity, refer to the relevant
device publication.)
When
PDSEs, compressed format data sets, and 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 in BLKSIZE cannot exceed the capacity of a single
track.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 parameter (see the description of LRECL).
If fixed-length records are used and you specify a value
in BLKSIZE, it must be a whole number multiple of the value specified
in LRECL.If the
records are unblocked fixed-length records, the value specified in
BLKSIZE must equal the value specified in LRECL.
If
variable-length records are used, the value specified in BLKSIZE must
include the data length (up to 32756 bytes) plus 4 bytes required
for the block descriptor word (BDW). For format-D variable-length
records, the minimum BLKSIZE value is 18 bytes.
The
maximum block size is 32,760 except for ISO/ANSI Version 3 records,
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 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 an
ASCII format DB or DBS tape data set is opened for output using QSAM
with the system acquiring the buffers and BUFOFF that is not L specified,
the value specified in BLKSIZE must be increased by 4 to allow for
a 4 byte QSAM internal processing area. If BUFL is specified, the
BUFL value must be increased by 4, instead of the BLKSIZE value.
If
variable-length spanned records are used, the value specified in BLKSIZE
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 BLKSIZE 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 record
length into the DCBLRECL field. See the description of LRECL.
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. The LRECL value must be available to OPEN when
the data set is open for output.
For fixed-length unblocked
records, LRECL (if specified) must equal BLKSIZE.
When reading
a PDSE directory using fixed-length blocked records, you can specify
a BLKSIZE of 256 or greater (the LRECL is ignored).
Processing UNIX files:Block boundaries
are not maintained within a 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.
- 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 blocked DASD data sets, if
the block size is not specified at the time that the data set is created,
and the LRECL and RECFM are known, 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 the LRECL or RECFM have changed from those specified
in the data set label, OPEN redetermines 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 type of the tape data set. See z/OS DFSMS Using Data Sets
for the table showing the block sizes 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 or BUILDRCD macro. The buffer
pool control block resides below the 16MB line. If the buffer pool
is constructed automatically above the line because RMODE31=BUFF is
coded on the DCBE macro, omit the BUFCB parameter because the system
places the address of the buffer pool control block into the data
control block.
If you want the system to acquire buffers automatically
above the 16MB line, omit the BUFCB parameter and code RMODE31=BUFF
on the DCBE macro. In this case, the buffer pool control block will
continue to reside below the 16MB line although the buffers are above
the 16MB line.
Source: BUFCB can be supplied in the
DCB macro or by the problem program before completion of the data
control block exit routine.
- BUFL=absexp (maximum value is 32760)
- specifies the length, in bytes, of each buffer in the
buffer pool when the buffer pool is acquired automatically. If BUFL
is omitted or if RMODE31=BUFF is coded on the DCBE macro, the system
acquires buffers with a length equal to the value specified in BLKSIZE
in the DCB (without LBI) or in the DCBE (with LBI). If the problem
program requires larger buffers (up to 32760 bytes), BUFL is required.
If the data set is for card image mode, BUFL is specified as 160 bytes.
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 also include the length of the block
prefix. If an ASCII format DB or DBS tape data set is opened for output
using QSAM and BUFOFF that is not L is specified, then the BUFL value,
if specified, must be increased by 4 to allow for a 4-byte QSAM internal
processing area.
If the buffer
pool is constructed by a BUILD, BUILDRCD, or GETPOOL macro, BUFL is
not required.
Source: BUFL 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.
- BUFNO=absexp (maximum value is 255)
- specifies
the number of buffers that are acquired automatically during OPEN.
If chained scheduling is specified, the value of BUFNO also determines
the maximum number of channel program segments that can be chained
and must be specified as more than one. If BUFNO is omitted and the
buffers are acquired automatically, the system acquires:
- 1 for a PDSE member
- 1 for an extended format data set in compressed format
- 1 for a UNIX file
- (2 * number of stripes * number of blocks per track) for an extended
format data set if it is not in the compressed format
- 2 if the block size is greater than or equal to 32768
- 3 for an IBM 2540 card reader
or card punch
- 5 for other types of devices or data sets
It is not useful to specify more than one buffer
for a data set in compressed format or a UNIX file unless you expect to reuse the buffer
pool for a different data set.
If the buffer pool is constructed
by a GETPOOL macro, BUFNO is not required.
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
QSAM is used to read this kind of tape data set, 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. You can specify:
- 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 are processed. QSAM uses the
4 bytes as a block-descriptor word (BDW). See z/OS DFSMS Using Data Sets for
further information on format-D records.
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 second system 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 QSAM 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 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}[,options]
- 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, which causes a default to DA), you can
use later 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.
Rule: If the data set can or does reside on DASD,
do not code a value other than DEVD=DA.
For spooled data sets,
the system ignores these device-dependent parameters. If you code
DEVD=PR, PC, or RD, do not code the DCB macro in the first 16 bytes
of addressability for the control section.
DEVD is discussed
below according to individual device type: - DEVD=DA
- 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).
- 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 specify 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.
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 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.
- {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 default specified in
the active DEVSUPyy member of SYS1.PARMLIB (initially set to NOCOMP)
is assumed. You can specify:
- COMP
- specifies record data in compacted format. COMP is not supported
with ISO/ANSI tape labels.
- NOCOMP
- specifies 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 the following optional parameter:
- PRTSP={0|1|2|3}
- specifies the line spacing on the printer. This
parameter is not valid if RECFM specifies either machine (RECFM=M),
or ANSI or ISO control characters (RECFM=A). 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).
Restriction: You
cannot use MODE and FUNC subparameters with this specification.
- DEVD=PC
- [,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 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. If MODE is
omitted, E is assumed. You can specify:
- 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 of virtual storage. Rows 12 through 3 are punched
from the 6 low-order bits of one byte, and rows 4 through 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).
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
the stacker bin where the card is placed after punching completes.
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]}
- specifies
the type of 3525 card punch data sets to be used. If FUNC 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 be 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 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 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 distinguishes
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]}]
- 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, 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 be read are in card image mode. In
card image mode, the 12 rows of each card column are read into 2 consecutive
bytes of virtual storage. Rows 12 through 3 are read into the 6 low-order
bits of one byte, and rows 4 through 9 are read into the 6 low-order
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).
- R
- specifies that the program
runs in read-column-eliminate mode (3505 card reader and 3525 card
punch, read feature).
If the MODE parameter 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 O is
specified.
- STACK={1|2}
- specifies
the stacker bin into which the card is placed after being read. 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 be 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 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. Thisallows
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 distinguishes
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 makes 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.
Restriction: An unmovable data set cannot be SMS-managed.
PDSEs cannot be in unmovable data sets. See NOTE—Provide relative position (BPAM and BSAM—tape and DASD only) for more information about unmovable
data sets.
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. Control is given to
this routine when a GET macro is issued and there are no additional
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.
If the end
of the data set is reached but no EODAD address was supplied to the
data control block (DCB) or DCBE, or if a GET macro is issued after
an end-of-data exit is taken, the task is abnormally terminated. For
additional information on the EODAD routine, see z/OS DFSMS Using Data Sets.
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. The EODAD routine (whether
it is specified in the DCBE or DCB) receives control in the addressing
mode in which the GET macro was issued. See the EODAD parameter description
for the DCBE macro, DCBE—(BDAM, BSAM, QSAM, BPAM, and EXCP).
Source: EODAD
can be supplied in the DCB macro or by the problem program before
the end of the data set has been reached.
- EROPT={ACC|SKP|ABE}
- specifies
the action taken by the system if an uncorrectable input/output data
validity error occurs and no error analysis (SYNAD) routine address
is 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. The specified action is taken for input operations
for all devices or for output operations to a printer.
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 parameter.
For UNIX file processing, the system
treats EROPT=ACC or EROPT=SKP as EROPT=ABE.
You can specify:
- ACC
- specifies that the problem program accepts the block causing the
error. The system recognizes this option if the DCB is open for INPUT,
RDBACK, UPDAT, or OUTPUT (OUTPUT applies to printer data sets only).
- SKP
- specifies that the block causing the error is skipped. The system
tries to process the next block. If it also returns an uncorrectable
I/O error, the system again will use the SYNAD and EROPT parameters.
The system recognizes SKP if the OPEN macro option was for INPUT,
RDBACK, or UPDAT. If the device is a printer, the system treats EROPT=SKP
as EROPT=ABE.
- ABE
- specifies that the error results in the abnormal termination of
the task. The system recognizes this option if the DCB is open for
INPUT, OUTPUT, RDBACK, or UPDAT. If EROPT is omitted, the ABE action
is assumed.
Recommendation: If EROPT is ACC or
SKIP, accept or skip processing is done after returning from the error
analysis (SYNAD) routine. For this reason, do not issue FEOV from
within the error analysis routine.
Source: EROPT can
be specified in the DCB macro, 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
- 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 3800 printer), or using the DCB ABEND exit for abend
condition analysis.
The
exit list must reside below the line. For the functions, 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.
- LRECL={absexp|X|0K|nnnnnK}
- specifies the length, in bytes, for fixed-length records.
Or, it specifies the
maximum length, in bytes, for variable-length or undefined-length
(output only) records. The value specified in LRECL cannot exceed
the value specified in BLKSIZE except when variable-length spanned
records are used.
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 LRECL must be evenly
divisible into the value specified in BLKSIZE. LRECL is required for
blocked fixed-length records.
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: the problem program must insert the actual logical record
length into the DCBLRECL field before writing the record, or else
the maximum-length record is written.
Variable-length spanned
records: the logical record length (LRECL) can exceed the value
specified in BLKSIZE, and a variable-length spanned record can exceed
the maximum block size (32760 bytes). When the logical record length
exceeds the maximum block size (for non-XLRI processing), you must
specify LRECL=X and use GET or PUT locate mode.
UNIX files: record boundaries
are not maintained within a binary UNIX file.
When LRECL is not specified (by any source), it is defaulted to 80
on input.
ISO/ANSI/FIPS variable-length spanned records:
(RECFM=DS or RECFM=DBS), you can use the extended logical record interface
(XLRI) when the maximum logical record length exceeds 32760 bytes.XLRI
must be invoked by specifying LRECL=0K or LRECL=nnnnn K.
- nnnnnK
- specifies the size of the record area (in 1024-byte units) required
to contain the longest logical record of the data set. The value nnnnnK can
range from 1K to 16383K.
- 0K
- specifies that the length of the longest logical record must come
from the DD statement or the data set label. XLRI processing is only
valid in QSAM locate mode. You must not specify LRECL=X for RECFM=DS
or DBS.
When LRECL=0K is used in the DCB, the LRECL data must
come from JCL, the file label (for an input data set), or from the
DCB exit during open merge.
- X
- specifies that the logical record length exceeds the maximum block
size (32760 bytes), and GET or PUT locate mode is used.
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. The label indicates
a logical record length of '99999' when an IBM standard label tape contains a logical record
equal to or greater than 100KB. The label indicates '00000' if the
same maximum is reached for an ISO/ANSI label tape.
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.
Although LRECL=0K
is only valid with RECFM=DS or DBS, you can specify the 0K option
on the DCB macro even though the RECFM is not determined until the
DCB is opened. (The RECFM is obtained from the data set label or the
DD statement.) If you specify neither the DS nor the DBS option, the
system turns the 0K indicator off, and restores
it when the DCB is closed.
- MACRF={{(G{M|L|D}[C])}
- {(P{M|L|D}[C])}}
- {(G{M|L|D}[C],P{M|L|D }[C])}}
- specifies the type of macros (GET, PUT
or PUTX, CNTRL, RELSE, and TRUNC) and the transmittal modes (move,
locate, and data) that are used with the data set being created or
processed. The parameter can be coded in any of the combinations shown
above. You can specify:
- 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). The CNTRL option can be specified
with GET in the move mode only.Use
of the CNTRL macro is invalid for 3525 input data sets.
- 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 macros are used. Specifying G also
provides the routines that allow the problem program to issue RELSE
macros. G is required if the OPEN option is INPUT or UPDAT. It has
no effect if the OPEN option is OUTPUT or EXTEND.
- 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 macros are used. Specifying P also
provides the routines that allow the problem program to issue TRUNC
macros. P is required if the OPEN option is OUTPUT or EXTEND. It has
no effect if the OPEN option is INPUT. P may be specified if the OPEN
option is UPDAT.
Rule: For data sets processed by QSAM
using MACRF=(GM) or MACRF=(PM), do not code BFTEK=A.
Source: MACRF
can be supplied only in the DCB macro.
- 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]}
- {Z}}
- 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 codes 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
OPTCD=B is specified 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, and without commas between characters:
- C
- specifies
that chained scheduling is 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 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 it 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/FIPS or machine control characters.
This option has effect for DASD data sets, SYSOUT data sets, and a
directly allocated IBM 3800
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 after the data is read from tape. For output requests,
conversion is done just before the record is written to tape.
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.
Refer to 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/FIPS labels (LABEL=(,AL)), the system
assumes OPTCD=Q.
- T
- requests the user totaling function. If
this function is requested, EXLST should specify the address of an
exit list that includes a totaling entry. T cannot
be specified for a SYSIN or SYSOUT data set.
User totaling can
be specified for only sequential data sets that are not extended format
data sets. If specified for a partitioned data set, a PDSE, an extended
format data set, or a UNIX file,user
totaling is ignored.
- U
- 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. This option
has effect only for a printer with the universal-character-set feature
(UCS) or the IBM 3800 Printing
Subsystem.
For magnetic tape drives, sets to "tape write immediate" mode.
- W
- specifies, for DASD, that the system performs a validity check
on each block written on a direct access storage device.
OPTCD=W
is ignored for PDSEs, extended format data sets, and UNIX files.
The system reads each block
back. The intent is to ensure that the data would survive a subsequent
power failure.
Recommendation: 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, 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
- requests
for magnetic tape input only, that the system 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 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 other devices, the Z option
is ignored.
Note: The following optional services can be specified
in the DCB subparameter of a DD statement.If either of these options are 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 record formats can be used in QSAM. You
can specify:
- A
- specifies
that the records in the data set contain ISO/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 tape records with RDWs
in ASCII format. See OPTCD=Q and BUFOFF for a description of how to
specify these types of 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. 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 does not contain any truncated blocks or unfilled
tracks. Do not code S to retrieve fixed-length
records from a data set that was allocated using a RECFM other than
standard.
For variable-length records, 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 and the remainder of
the record on the following track (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: - 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 cannot be specified for a SYSIN data
set.
- RECFM=VS or VBS cannot be specified for a UNIX file.
- RECFM=DS or RECFM=DBS provides blocking, unblocking, and segmenting
for Version 3 ISO/ANSI tape data sets.
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 given control if
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 but calls your SYNAD routine synchronously when
you issue a GET macro for the failed block or when you issue a PUT
macro that requires the buffer containing the failed block.
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
the error analysis routine returns and the error condition was the
result of a data-validity error, the control program takes the action
specified in the EROPT parameter; otherwise, the task is abnormally
terminated. The control program takes these actions when SYNAD is
omitted in the DCB and DCBE or when the error analysis routine returns
control.
The SYNAD routine (whether specified in
the DCBE or DCB) receives control in the addressing mode in which
the GET or PUT macro was issued. On return from the 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 byte 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.
|