Previous topic |
Next topic |
Contents |
Contact z/OS |
Library |
PDF
Set and Retrieve Data Set Block Size z/OS DFSMSdfp Advanced Services SC23-6861-01 |
|
The DCBE has a field to contain the current or maximum block size for the data set. In order to use this field, your program must code a value for the BLKSIZE keyword on the DCBE macro or turn on the DCBEULBI bit. The keyword value can be numeric or a non-relocatable symbolic expression. The value can be 0. If you code a zero value or turn on DCBEULBI, then OPEN stores
into DCBEBLKSI the block size value from the data set label if opening
for input or output with DISP=MOD, which can be disk or tape. If
your program issues the OPEN macro with the OUTPUT or OUTIN option,
then OPEN tries to calculate an optimal value for BLKSIZE as it does
for BSAM and QSAM. The system-determined block size function is described
in z/OS DFSMS Using Data Sets.
The basic principle is that your program supplies the LRECL value
and RECFM value (not U) and OPEN calculates an optimal BLKSIZE value
for the device and stores it into DCBEBLKSI.
Attention: OPEN might calculate a BLKSIZE value in the DCBE that
exceeds the maximum that is supported by the regular access methods
or other programs that read your program's data sets. For example,
on magnetic tape the value probably will exceed 32760. If this is
a problem, you can do the following:
Supply a DCB OPEN exit routine as described in z/OS DFSMS Using Data Sets. If your exit routine finds that the DCBEBLKSI field is still 0, it means that the data set label and the DD statement do not have a value for BLKSIZE. If your program is opening for output, it can leave the DCBE alone and let OPEN calculate an optimal BLKSIZE value or it can calculate one. This is your program's last chance to set it before the system stores the BLKSIZE value in various system control blocks and the data set label. Your DCB OPEN exit routine can issue the DEVTYPE macro with the INFO=AMCAP parameter to learn the optimal and maximum BLKSIZE values for the device. If it is too large, your program can calculate a smaller valid value. Store a value into DCBEBLKSI before OPEN can set it. The INFO=AMCAP parameter of DEVTYPE is described on DEVTYPE—Info Form. OPEN builds the DEB after calling the DCB OPEN exit routine. If your program calculates a maximum block size, it can take into consideration a value for BLKSZLIM coded on the DD statement. To find this value, issue the RDJFCB macro with an X'13 ' code. See Reading and Modifying a Job File Control Block (RDJFCB Macro). Why should your program do this?
|
Copyright IBM Corporation 1990, 2014
|