z/OS DFSMSdfp Advanced Services
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?
  • To decrease your program's dependence on the device type
  • The system stores this value in the data set label for use by z/OS® and on other systems
  • The system stores this value in various SMF records to improve monitoring of system resources
  • DFSMSrmm™ retains this information for its tape reports.
Unlike the regular access methods, EXCP processing does not do complete checking of the BLKSIZE value in an EXCP DCBE.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014