ROBID (Robot identifier)-
The OAM CBRUXENT exit is executed whenever a tape cartridge is inserted into the ATL. The CBRUXENT exit, which is provided by CA 1 determines the status of the tape within the TMC, then allows or disallows the entry of the tape and sets the status in the TCDB to scratch or private based on the status in the TMC. When installed, the CBRUXENT exit updates TMC fields ROBTY and ROBID to indicate the tape is in the ATL.
For basic IBM ATL processing, the OAM CBRUXEJC exit is invoked when a tape is physically ejected from the ATL. The sample CBRUXEJC exit that is provided by CA 1 clears the ROBTY and ROBID fields to indicate that the volume doesn't reside in any robot. For basic IBM ATL support, no changes to the CBRUXEJC sample exit are required.
A robotic device indicator used to distinguish between multiple robots of the same type in an installation. This field is a field that you need to assign. Typically, if an installation has three robots of the same type they are assigned the identifiers of 1,2, and 3, however the identifiers can be assigned any number up to 255.
What is happening is that CTSUXEJC is updating those fields when it detects
that an Eject failed.
CLI UXJNCALL,UXJEJECT IF NOT VTS
BE NOTVTS THEN SKIP
CLI UXJNCALL,UXJRFAIL FAILED TO EJECT P5XD294
BE CLROBNFO YES CLEAR FIELDS P5XD294
CLI UXJNCALL,UXJEXPRT IF NOT EXPORTED VTS
BNE NOTVTS THEN SKIP
MVI WKATLTYP,X'81' INDICATE VTS-IBM (VIBM)
MVC WKVTXVSN,UXJSTKVS SAVE CONTAINER VSN
LA R0,WKVTXVSN SAVE CONTAINER VSN
ST R0,LQUERY+8 IN PARMLIST
B MOVEDSN P5XD294
CLROBNFO DS 0H P5XD294
MVI WKATLTYP,X'01' IBM ROBOT P5XD294 ---here
MVI WKATLNUM,X'FE' EJECT FAILED P5XD294 ---here
B NOTVTS P5XD294
When OAM attempts to eject a volume, it calls CBRUXEJC before the eject occurs. When the eject fails as in this case(because it was in use), OAM redrives the call to CBRUXEJC with the UXJRFAIL bit set. This causes our exit to update the ROBTY and ID to be updated to 01 and 254 respectively. What this means is that the volume is left in the robot without being ejected. Upon the next reject attempt(if it is not in use) the eject will complete normally.