z/OS DFSMS Macro Instructions for Data Sets
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


DCB—Construct a data control block (QSAM)

z/OS DFSMS Macro Instructions for Data Sets
SC23-6852-02

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:

Note:
  1. 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:
  1. NRZI is for nonreturn-to-zero inverted mode.
  2. PE is for phase encoded mode.
  3. 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=nnnnnK.
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.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014