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


DCB—Construct a data control block (QISAM interface to VSAM)

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

The data control block for a queued indexed sequential access method (QISAM interface to VSAM) 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 QISAM 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.

Recommendation: The system no longer supports indexed sequential data sets. Convert the data set to a key sequenced data set (KSDS) and use the ISAM interface of VSAM or convert your program to use VSAM.

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.

The format of the DCB macro for QISAM 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.
QISAM 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. 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 provide a storage area for the buffers and control buffer alignment.

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

BLKSIZE=absexp (maximum value KEYLEN + BLKSIZE is 32760)
specifies the length, in bytes, for each data block when fixed-length records are used. Or, it specifies the maximum length in bytes, for each data block when variable-length records are used. You must specify the BLKSIZE parameter when creating an indexed sequential data set. When processing an existing indexed sequential data set, you must omit BLKSIZE (it is supplied by the data set label).

If fixed-length records are used, the value specified in BLKSIZE must be a whole number multiple of the value specified in LRECL.

Source: When an indexed sequential data set is allocated, the BLKSIZE 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. 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. When an existing indexed sequential data set is processed, BLKSIZE must be omitted from the other sources, allowing the data set label to supply the value.

BUFCB=relexp
specifies the address of the buffer pool control block that constructed by a BUILD macro.

If the system builds the buffer pool automatically or if the buffer pool is built by a GETPOOL macro, omit BUFCB, because the system places the address of the buffer pool control block into the data control block.

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 to be constructed by a BUILD or GETPOOL macro. When the data set is opened, the system computes the minimum buffer length required and verifies that the length in the buffer pool control block is equal to or greater than the minimum length required. The system then inserts the computed length into the data control block.

BUFL is not required for QISAM if the system acquires buffers automatically, because the system computes the minimum buffer length required and inserts the value into the data control block.

If the buffer pool is constructed with a BUILD or GETPOOL macro, additional space is required in each buffer for system use. For a description of the buffer length required for various ISAM operations, see z/OS DFSMS Using Data Sets.

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 to be acquired automatically by the system during OPEN. If BUFNO is omitted, the system automatically acquires two buffers.

If the GETPOOL macro is used to construct the buffer pool, 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.

CYLOFL=absexp (maximum value is number of tracks minus 1)
specifies the number of tracks on each cylinder that is reserved as an overflow area. The overflow area contains records forced off prime area tracks when additional records are added to the prime area track in ascending key sequence. ISAM maintains pointers to records in the overflow area so that the entire data set is logically in ascending key sequence.Tracks in the cylinder overflow area are used by the system only if OPTCD=Y is specified. For a more complete description of cylinder overflow area, refer to the space allocation section of z/OS DFSMS Using Data Sets.

Source: When an indexed sequential data set is allocated, CYLOFL 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. When an existing indexed sequential data set is processed, CYLOFL should be omitted, allowing the data set label to supply the parameter.

DDNAME=symbol
specifies the name that is used to identify the job control language data definition (DD) statement that defines the indexed sequential 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.

DSORG={IS|ISU}
specifies the data set organization, and whether the data set contains any location-dependent information that would make it unmovable. You can specify:
IS
specifies an indexed sequential data set organization.
ISU
specifies an indexed sequential data set that contains location-dependent information. You can specify ISU only when creating an indexed sequential data set.

Source: DSORG must be specified in the DCB macro. When an indexed sequential data set is allocated, DSORG=IS or ISU must also be specified in the DCB subparameter of the corresponding DD statement.

EODAD=relexp
specifies the address of the routine given control when the end of an input data set is reached. For ISAM, this parameter applies only to scan mode when a data set is open for an input operation. Control is given to this routine when a GET macro is issued and there are no more input records to retrieve. For additional information on the EODAD routine, see z/OS DFSMS Using Data Sets.

Source: EODAD can be supplied in the DCB macro or by the problem program before the end of the data set is reached.

EXLST=relexp
specifies the address of the DCB exit list. EXLST is required only if the problem program uses the data control block OPEN exit routine for additional processing.

For the functions, format, and requirements for exit list processing, see z/OS DFSMS Using Data Sets. The exit list must reside below the line.

Source: EXLST can be supplied in the DCB macro or by the problem program before the relevant function is needed.

KEYLEN=absexp (maximum value is 255)
specifies the length, in bytes, of the key associated with each record in an indexed sequential data set. When blocked records are used, the key of the last record in the block (highest key) is used to identify the block. However, each logical record in the block has its own identifying key that ISAM uses to access a given logical record.

Source: When an indexed sequential data set is allocated, KEYLEN 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. When an existing indexed sequential data set is processed, KEYLEN must be omitted, allowing the data set level to supply the key length value. KEYLEN=0 is not valid for an indexed sequential data set.

LRECL=absexp (maximum value is device-dependent)
specifies the length, in bytes, for fixed-length records, or it specifies the maximum length, in bytes, for variable-length records. The value specified in LRECL cannot exceed the value specified in BLKSIZE. When fixed, unblocked records are used and the relative key position (as specified in the RKP parameter) is zero, the value specified in LRECL should include only the data length (the key is not written as part of the fixed, unblocked record when RKP=0).

Source: When an indexed sequential data set is allocated, LRECL 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. When an existing indexed sequential data set is processed, LRECL must be omitted, allowing the data set label to supply the value.

MACRF={{(PM)}
   {(PL)}
   {(GM[,S{K|I}])}
   {(GL[,S{K|I}][,PU])}}
specifies the type of macros, the transmittal mode, and type of search that are used with the data set being processed. The parameter can be coded in any of the combinations shown above. You can specify the following characters for QISAM:
The following characters can be specified only when the data set is being created (load mode) or additional records are being added to the end of the data set (resume load):
PL
specifies that PUT macros are used in the locate transmittal mode. The system provides the problem program with the address of a buffer containing the data to be written into the data set.
PM
specifies that PUT macros are used in the move transmittal mode. The system moves the data to be written from the problem program work area to the buffer being used.
The following characters can be specified only when the data set is being processed (scan mode) or when records in an indexed sequential data set are being updated in place:
GL
specifies that GET macros are used in the locate transmittal mode. The system provides the problem program with the address of a buffer containing the logical record read.
GM
specifies that GET macros are used in the move mode. The system moves the logical record from the buffer to the problem program work area.
I
specifies that actual device addresses (MBBCCHHR) are used to search for a record (or the first record) to be read.
K
specifies that a key or key class is used to search for a record (or the first record) to be read.
PU
specifies that PUTX macros are used to return updated records to the data set.
S
specifies that SETL macros are used to set the beginning location for processing the data set.

Source: MACRF must be coded in the DCB macro.

NTM=absexp (maximum value is 99)
specifies the number of tracks that are created in a cylinder index before a higher-level index is created. If the cylinder index exceeds this number, a master index is created by the system. If a master index exceeds this number, the next level of master index is created. The system creates as many as three levels of master indexes. NTM is ignored unless the master index option (OPTCD=M) is selected.

Source: When an indexed sequential data set is being allocated, NTM 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. When an indexed sequential data set is being processed, master index information is supplied to the data control block from the data set label, and NTM must be omitted.

OPTCD={[I][L][M][R ][U][W][Y]}
specifies the optional services that are performed by the system when an indexed sequential data set is being allocated or updated. You can code the following characters in any order, in any combination, and without commas between characters:
I
specifies that the system uses the independent overflow areas to contain overflow records. It is only the use of the allocated independent overflow area that is optional. Under certain conditions, the system designates an overflow area that was not allocated for independent overflow by the problem program. z/OS DFSMS Using Data Sets explains how to allocate space for an indexed sequential data set.
L
specifies that the data set is to contain records flagged for deletion. A record is flagged for deletion by placing a hexadecimal value of 'FF' in the first data byte. Records flagged for deletion remain in the data set until the space is required for another record to be added to the track and are ignored during sequential retrieval of the indexed sequential data set (QISAM, scan mode). This option cannot be specified for blocked fixed-length records if the relative key position is 0 (RKP=0), or it cannot be specified for variable-length records if the relative key position is 4 (RKP=4).

When an indexed sequential data set is being processed with BISAM interface to VSAM, a record with a duplicate key can be added to the data set (WRITE KN macro), only when OPTCD=L is specified and the original record (the one whose key is being duplicated) is flagged for deletion.

M
specifies that the system create and maintain a master index or indexes according to the number of tracks specified in NTM.
R
specifies that the system place reorganization statistics in the data control block. The problem program can analyze these statistics to determine when to reorganize the data set. If OPTCD is omitted, the reorganization statistics are automatically provided. However, if you use OPTCD, you must specify OPTCD=R to obtain the reorganization statistics.
U
specifies that the system is to accumulate track index entries in storage and write them as a group for each track of the track index. OPTCD=U can be specified only for fixed-length records. The entries are written in fixed-length unblocked format.
W
specifies a validity check on each record that is written.
Y
specifies that the system is to use the cylinder overflow areas to contain overflow records. If OPTCD=Y is specified, CYLOFL specifies the number of tracks used for the cylinder overflow area. The reserved cylinder overflow area is not used unless OPTCD=Y is specified.

Source: When an indexed sequential data set is allocated, OPTCD 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. However, all optional services must be requested from the same source. When an existing indexed sequential data set is processed, the optional service information is supplied to the data control block from the data set label, and OPTCD should be omitted.

RECFM={V[B]|F[B]}
specifies the format and characteristics of the records in the data set. If the RECFM parameter is omitted, variable-length records (unblocked) are assumed. You can specify:
B
specifies that the data set contains blocked records.
F
specifies that the data set contains fixed-length records.
V
specifies that the data set contains variable-length records.

Source: When an indexed sequential data set is allocated, RECFM 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. When an existing indexed sequential data set is processed, the record format information is supplied by the data set label, and RECFM should be omitted.

If the record format information is supplied in the DD statement or the DCB, it must agree with the information in the data set label.

RKP=absexp
specifies the relative position of the first byte of the key within each logical record. For example, if RKP=9 is specified, the key starts in the 10th byte of the record. Do not specify the delete option (OPTCD=L) if the relative key position is the first byte of a blocked fixed-length record or the fifth byte of a variable-length record. If the RKP parameter is omitted, RKP=0 is assumed.

If unblocked fixed-length records with RKP=0 are used, the key is not written as a part of the data record, and the delete option can be specified. If blocked fixed-length records are used, the key is written as part of each data record; either RKP must be greater than zero or the delete option must not be used.

If variable-length records (blocked or unblocked) are used, and if the delete option is not specified, RKP must be 4 or greater. If the delete option is specified, RKP must be specified as 5 or greater. The 4 additional bytes allow for the block descriptor word in variable-length records.

Source: When an indexed sequential data set is allocated, RKP 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. When an existing indexed sequential data set is processed, the RKP information is supplied by the data set label and the RKP parameter should be omitted.

SYNAD=relexp
specifies the address of the error analysis routine given control when an uncorrectable input/output error occurs. The entry point of this SYNAD routine must reside below the line. 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 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.When control is returned in this manner, the system returns control to the problem program and proceeds as though no error had been found; if the error analysis routine continues processing, the results might be unpredictable.

For additional information on error analysis routine processing for indexed sequential data sets, see z/OS DFSMS Using Data Sets .

Source: SYNAD can be supplied in the DCB macro or by the problem program. The problem program can also change the error analysis routine address at any time.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014