|
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:
[label]
|
DCB
|
[BFALN={F|D}] [,BLKSIZE=absexp] [,BUFCB=relexp] [,BUFL=absexp] [,BUFNO=absexp] [,CYLOFL=absexp] [,DDNAME=symbol] 1 ,DSORG={IS|ISU} [,EODAD=relexp] [,EXLST=relexp] [,KEYLEN=absexp] [,LRECL=absexp] ,MACRF={{(PM)} {(PL)} {(GM[,S{K|I}])} {(GL[,S{K|I}][,PU])}} [,NTM=absexp] [,OPTCD={[I][L][M][R][U][W][Y]]} [,RECFM={V[B]|F[B]}] [,RKP=absexp] [,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.
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.
|