z/OS DFSMS Installation Exits
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


NSL Volume Verification with Dynamic Device Reconfiguration (NSLREPOS)

z/OS DFSMS Installation Exits
SC23-6850-01

If you use nonstandard tape labels and you want to use the dynamic device reconfiguration (DDR) option, you need an exit routine to perform volume verification.

When your NSLREPOS routine receives control from the DDR tape reposition routine, register 2 contains a pointer to an XCTL list. This list contains the module name to which you transfer control when you return control to DDR. Register 5 points to a buffer containing the first 48 bytes of a record of your label. The serial number of the volume against which verification is made is in the UCBVOL1 field of the UCB. Register 7 contains the UCB address.

If NSLREPOS gives return code 0, 12, or 16, the system's reposition routine repositions the tape. With a reel tape, this requires a count of the blocks from the labels or tape mark and this may depend on application program logic. With a cartridge tape, repositioning does not require a block count; the system uses a block identifier which is faster and more reliable.

Your NSLREPOS routine is not link-edited with any IBM-supplied routine. It resides in LPA and can have any valid combination of AMODE and RMODE. All the supplied areas reside below the 16MB line.

OPEN, EOV, and CLOSE will always turn the DEB31UCB on in the work area to signify that DXDEBUCB is a 31–bit UCB address. Although the UCB address field will be four bytes, it typically will contain a three-byte address. The modeset byte is moved from the DEBSDVM field to the DEBSDVMX field to enable 31–bit UCB addresses to be accommodated.

Before returning control, your routine should put one of these codes into register 0:

Code
Description
0 (X'00')
Volume verification is complete and a tapemark follows this label. Tape reposition routine positions the tape to that tapemark and clears the block count it has accumulated before it begins repositioning.
4 (X'04')
The NSLREPOS routine needs more information for volume verification. When the tape reposition routine receives this code, it reads the first 48 characters of the next record into the buffer and returns control to NSLREPOS.
8 (X'08')
The wrong volume has been mounted. When the tape reposition routine receives this code, it sends a message to the operator explaining that the wrong volume has been mounted.
12 (X'0C')
Volume verification is complete and no tapemark follows this label. The tape reposition routine repositions the volume, using the block count it has accumulated.
16 (X'10')
Volume verification is complete and the tapemark following the label has already been reached, the tape reposition routine clears the block count it has accumulated and repositions the volume.

If NSLREPOS uses any registers other than register 0 or 14, the routine must save the registers in subpool 245 (using a GETMAIN macro) and store them in its own area before returning control to the tape reposition routine. When your NSLREPOS routine returns control to DDR, use this sequence:

LR     15,2
XCTL   SF=(E,(15))

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014