Load the DEB address from the DCB field labeled DCBDEBA.
The DEB is mapped by the IEZDEB macro.
Load the address of the field labeled DEBUCBA. The result is a pointer to the UCB address in
the DEB.
Test the DEB31UCB bit before issuing the RESERVE
macro with the address of the word obtained in step 2 as the parameter
of the UCB keyword. If that bit is zero, issue RESERVE without LOC=ANY.
This informs RESERVE that the UCB address is 24-bit. If DEB31UCB
is one, code LOC=ANY on the RESERVE macro because the UCB address
is four bytes and might point above the line.
For BDAM data sets, you can reserve the device at any
point in the processing in the following manner:
Open the data set.
Convert the block address used in the READ/WRITE macro to an actual
device address of the form MBBCCHHR.
Load the DEB address from the DCB field labeled DCBDEBA.
Load the address of the field labeled DEBBASND in the DEB.
Shift the number 1 left by the value in the DEBEXSCL
byte. It is the extent scale and is the power of two that indicates
the length of each extent description. For DASD, the extent scale
currently is 4.
Multiply the “M” of the actual device address (step 2) by the result of the previous step that currently is
16.
The sum of steps 4 and 5 is the address of the correct extent
entry in the DEB for the next READ/WRITE operation. The sum is also
a pointer to the UCB address for this extent.
Issue the RESERVE macro specifying the address obtained in step
6 as the parameter of the UCB keyword.
For information concerning how to find the UCB address when using
the VSAM access method, see z/OS DFSMS Using Data Sets.