This SAMPLIB member is a sample cartridge entry installation exit.
UXENT TITLE 'CBRUXENT - SAMPLE CARTRIDGE ENTRY INSTALLATION EXIT'
CBRUXENT START 0 SAMPLE CARTRIDGE ENTRY INST EXIT
SPACE 2
**** START OF SPECIFICATIONS *****************************************
* *
* MODULE NAME: CBRUXENT *
* *
* DESCRIPTIVE NAME: SAMPLE CARTRIDGE ENTRY INSTALLATION EXIT *
* *
* FUNCTION: *
* MODULE CBRUXENT IS INVOKED EACH TIME A CARTRIDGE IS ENTERED *
* INTO A TAPE LIBRARY. CBRUXENT MAY REFUSE TO ALLOW THE *
* CARTRIDGE TO BE ENTERED, OR UPDATE CERTAIN FIELDS IN THE TAPE *
* VOLUME RECORD, OR APPROVE THE CARTRIDGE ENTRY WITHOUT CHANGE, *
* OR LEAVE THE CARTRIDGE FOR PROCESSING BY SOME OTHER SYSPLEX. *
* *
* CBRUXENT DEMONSTRATES THE USE OF THE FOLLOWING FUNCTIONS: *
* 1. SETTING THE "IGNORE" RETURN CODE TO LEAVE AN ENTERED *
* VOLUME IN THE LIBRARY MANAGER INSERT CATEGORY SO THAT IT *
* MAY BE PROCESSED FOR ENTRY BY ANOTHER SYSPLEX. *
* 2. SETTING THE "REJECT" RETURN CODE TO PREVENT A VOLUME FROM *
* BEING ENTERED INTO THE LIBRARY. *
* 3. USING THE SHELF LOCATION AND OWNER INFORMATION FIELDS IN *
* THE TAPE VOLUME RECORD. *
* 4. PASSING INFORMATION TO CBRUXENT USING THE LIBRARY *
* DESCRIPTION FIELD, AS SET BY THE ISMF LIBRARY MANAGEMENT *
* APPLICATION. *
* 5. SETTING THE READ-COMPATIBLE ATTRIBUTE, TO ALLOW A PRIVATE *
* VOLUME RECORDED IN 18-TRACK MODE TO BE MOUNTED ON A *
* 36-TRACK DRIVE FOR READ-ONLY USAGE. *
* *
* NOTES: *
* *
* DEPENDENCIES: MVS/SP VERSION 4.3.0 *
* DFSMS/MVS 1.1.0 *
* *
* CHARACTER CODE: EBCDIC *
* *
* RESTRICTIONS: NONE *
* *
* REGISTER CONVENTIONS: *
* R0 - WORK REGISTER *
* R1 - STANDARD LINKAGE REGISTER *
* - PARAMETER LIST ADDRESS *
* - WORK REGISTER *
* R2 - NOT USED *
* R3 - NOT USED *
* R4 - NOT USED *
* R5 - NOT USED *
* R6 - NOT USED *
* R7 - NOT USED *
* R8 - BASE REGISTER FOR WORKING STORAGE *
* R9 - RETURN CODE WORK REGISTER *
* R10 - LIBRARY DESCRIPTION BASE REGISTER *
* R11 - UXEPL BASE REGISTER *
* R12 - CBRUXENT BASE REGISTER *
* R13 - STANDARD LINKAGE REGISTER *
* - SAVE AREA ADDRESS *
* R14 - STANDARD LINKAGE REGISTER *
* - RETURN POINT ADDRESS *
* R15 - STANDARD LINKAGE REGISTER *
* - ENTRY POINT ADDRESS *
* - RETURN CODE *
* *
* MODULE TYPE: CONTROL SECTION *
* *
* PROCESSOR: ASSEMBLER H *
* *
* ATTRIBUTES: *
* *
* LOCATION: JOB PACK AREA *
* STATE: PROBLEM *
* AMODE: 31 - MAY BE 24 IF NECESSARY *
* RMODE: ANY - MAY BE 24 IF NECESSARY *
* KEY: 5 (DATA MANAGEMENT) *
* MODE: TASK *
* SERIALIZATION: UNLOCKED *
* TYPE: REUSABLE *
* REENTRANT *
* REFRESHABLE *
* AUTHORIZATION: APF AUTHORIZED *
* *
* LINKAGE: STANDARD LINKAGE CONVENTIONS *
* *
* CALLING SEQUENCE: *
* CBRUXENT IS INVOKED IN THE OAM ADDRESS SPACE USING THE MVS *
* LINK MACRO. *
* *
* INPUT: *
* AT ENTRY TO CBRUXENT, REGISTER 1 CONTAINS THE ADDRESS OF *
* THE CARTRIDGE ENTRY INSTALLATION EXIT PARAMETER LIST. *
* *
* OUTPUT: *
* A RETURN CODE IS PLACED IN REGISTER 15: *
* CODE MEANING *
* 0 ENTER THE CARTRIDGE INTO THE LIBRARY. THE TAPE *
* VOLUME RECORD IS UNCHANGED. *
* 4 ENTER THE CARTRIDGE INTO THE LIBRARY. ONE OR MORE *
* FIELDS IN THE TAPE VOLUME RECORD HAVE BEEN CHANGED. *
* 8 DO NOT ALLOW THE CARTRIDGE TO BE ENTERED INTO THE *
* LIBRARY. EJECT THE CARTRIDGE IMMEDIATELY. *
* 12 IGNORE THE REQUEST TO ENTER THE CARTRIDGE INTO THE *
* LIBRARY. LEAVE THE CARTRIDGE IN THE INSERT *
* CATEGORY FOR PROCESSING BY ANOTHER SYSPLEX. *
* 16 DO NOT INVOKE THE CARTRIDGE ENTRY INSTALLATION EXIT *
* AGAIN. ALLOW ALL CARTRIDGES TO BE ENTERED WITHOUT *
* CHANGES TO THEIR TAPE VOLUME RECORDS. *
* *
* EXIT NORMAL: *
* RETURN TO THE CALLER WITH ONE OF THE RETURN CODES DESCRIBED *
* ABOVE. *
* *
* EXIT ERROR: NONE *
* *
* EXTERNAL REFERENCES: *
* *
* ROUTINES: NONE *
* *
* CONTROL BLOCKS: *
* CBRUXEPL - CARTRIDGE ENTRY INSTALLATION EXIT *
* PARAMETER LIST - R/W *
* *
* EXECUTABLE MACROS: *
* RETURN *
* SAVE *
* *
* MESSAGES: NONE *
* *
* ABEND CODES: NONE *
* *
**** END OF SPECIFICATIONS *******************************************
TITLE 'CBRUXEPL - CARTRIDGE ENTRY INST EXIT PARAMETER LIST'
CBRUXEPL , CART ENTRY INST EXIT PARM LIST
TITLE 'STANDARD REGISTER DEFINITIONS'
*--------------------------------------------------------------------*
* *
* STANDARD REGISTER DEFINITIONS *
* *
*--------------------------------------------------------------------*
R0 EQU 0 GENERAL REGISTER 0
R1 EQU 1 GENERAL REGISTER 1
R2 EQU 2 GENERAL REGISTER 2
R3 EQU 3 GENERAL REGISTER 3
R4 EQU 4 GENERAL REGISTER 4
R5 EQU 5 GENERAL REGISTER 5
R6 EQU 6 GENERAL REGISTER 6
R7 EQU 7 GENERAL REGISTER 7
R8 EQU 8 GENERAL REGISTER 8
R9 EQU 9 GENERAL REGISTER 9
R10 EQU 10 GENERAL REGISTER 10
R11 EQU 11 GENERAL REGISTER 11
R12 EQU 12 GENERAL REGISTER 12
R13 EQU 13 GENERAL REGISTER 13
R14 EQU 14 GENERAL REGISTER 14
R15 EQU 15 GENERAL REGISTER 15
TITLE 'CBRUXENT WORKING STORAGE'
*--------------------------------------------------------------------*
* *
* CBRUXENT WORKING STORAGE *
* *
*--------------------------------------------------------------------*
ENTWORK DSECT , XXA
SAVE DS 18F CBRUXENT SAVE AREA
WORKEND DS 0D XXA
WORKLEN EQU *-ENTWORK XXA
SPACE 2
TITLE 'LIBRARY DESCRIPTION FIELD FORMAT'
*--------------------------------------------------------------------*
* *
* LIBRARY DESCRIPTION FIELD FORMAT *
* *
* NOTE: THIS IS INTENDED AS AN EXAMPLE OF THE KIND OF *
* INFORMATION THE INSTALLATION CAN PASS TO THE EXIT *
* VIA THE LIBRARY DESCRIPTION FIELD, WHICH IS SET *
* USING THE ISMF LIBRARY MANAGEMENT APPLICATION. *
*--------------------------------------------------------------------*
LIBDESC DSECT , LIBRARY DESCRIPTION FIELD
LIBDDSGN DS CL8 DEFAULT STORAGE GROUP NAME
DS CL1 SEPARATOR
LIBDPRIV DS CL1 ALLOW PREVIOUSLY UNKNOWN PRIVATE
* VOLUME TO BE ENTERED
* 'Y' - ALLOW BOTH PRIVATE AND
* SCRATCH VOLUMES TO BE
* ENTERED
* 'N' - ALLOW ONLY SCRATCH
* VOLUMES TO BE ENTERED
DS CL1 SEPARATOR
LIBDRDCM DS CL1 SET READ-COMPATIBLE ATTRIBUTE
* FOR PREVIOUSLY UNKNOWN MEDIA1
* PRIVATE VOLUME
* 'Y' - SET ATTRIBUTE
* 'N' - DO NOT SET ATTRIBUTE
DS CL1 SEPARATOR
LIBDAUTH DS CL1 AUTHORIZATION REQUIRED FOR
* CARTRIDGE EJECT
* 'Y' - AUTHORIZATION REQUIRED
* 'N' - AUTH NOT REQUIRED
DS CL106 AVAILABLE
TITLE 'CBRUXENT - SAMPLE CARTRIDGE ENTRY INSTALLATION EXIT'
*--------------------------------------------------------------------*
* *
* CBRUXENT ENTRY POINT *
* *
*--------------------------------------------------------------------*
CBRUXENT CSECT , SAMPLE CARTRIDGE ENTRY INST EXIT
CBRUXENT AMODE 31
CBRUXENT RMODE ANY
SAVE (14,12),, SAVE CALLER'S REGISTERS AND +
'CBRUXENT&SYSDATE' MARK ENTRY POINT
LR R12,R15 COPY ENTRY POINT ADDRESS
USING CBRUXENT,R12 CBRUXENT BASE REGISTER
LR R11,R1 COPY PARAMETER ADDRESS
USING UXEPL,R11 CHANGE USE ATTR INST EXIT PARM LIST
GETMAIN RU, GETMAIN WORKING STORAGE FROM +
LV=WORKLEN, SUBPOOL 0 TO GET PSW KEY +
SP=0 STORAGE
LR R8,R1 SAVE WORKING STORAGE ADDRESS
USING ENTWORK,R8 CBRUXENT WORKING STORAGE
LR R14,R1 START ADDRESS OF TARGET AREA
LA R15,WORKLEN TARGET LENGTH
LR R0,R1 START ADDRESS OF SOURCE AREA
SR R1,R1 ZERO SOURCE LENGTH & PAD BYTE
MVCL R14,R0 CLEAR WORKING STORAGE
ST R13,SAVE+4 BACKWARD CHAIN SAVE AREAS
LA R0,SAVE CBRUXENT SAVE AREA ADDRESS
ST R0,8(,R13) FORWARD CHAIN SAVE AREAS
LR R13,R0 SET CBRUXENT SAVE AREA ADDRESS
LA R10,UXELDESC ADDRESS OF LIBRARY DESCRIPTION
USING LIBDESC,R10 LIBRARY DESCRIPTION FIELD
SPACE 2
*--------------------------------------------------------------------*
* *
* PRESET RETURN CODE ZERO *
* *
*--------------------------------------------------------------------*
LA R9,UXENOCHG ENTER CARTRIDGE WITHOUT CHANGING
* TAPE VOLUME RECORD
EJECT ,
*--------------------------------------------------------------------*
* *
* CHECK FOR A VOLUME WHICH BELONGS TO ANOTHER SYSPLEX *
* *
*--------------------------------------------------------------------*
CLI UXEVOLSR,C'0' FIRST VOLSER CHARACTER NUMERIC?
BL ENT1000 NO. CHECK VOLSER PREV UNKNOWN
LA R9,UXEIGNOR IGNORE CARTRIDGE ENTRY - LEAVE
* VOLUME FOR ANOTHER SYSPLEX
B EXIT RETURN TO CALLER
EJECT ,
*--------------------------------------------------------------------*
* *
* CHECK FOR A PREVIOUSLY UNKNOWN VOLUME. *
* *
* IF THE VOLUME USE ATTRIBUTE IS PRIVATE, ALLOW THE CARTRIDGE *
* TO BE ENTERED ONLY IF SPECIFICALLY AUTHORIZED IN THE *
* LIBRARY DESCRIPTION. *
* *
*--------------------------------------------------------------------*
ENT1000 DS 0H
CLC UXECREAT,=CL10' ' BLANK RECORD CREATION DATE?
BNE ENT2000 NO. RECORD ALREADY EXISTED
LA R9,UXECHG ALLOW CARTRIDGE ENTRY WITH TAPE
* VOLUME RECORD CHANGED
MVC UXEOWNER,=CL64'TUCSON PROGRAMMING CENTER' SET LOCALLY
* OWNED VOLUME
CLI UXEUSEA,UXESCRT SCRATCH USE ATTRIBUTE?
BE EXIT YES. RETURN TO CALLER
CLI LIBDPRIV,UXEYES ALLOW PRIVATE VOLUME ENTRY?
BE ENT1100 YES. SET STORAGE GROUP NAME
LA R9,UXEFAIL SET CARTRIDGE ENTRY REQUEST DENIED
* RETURN CODE
B EXIT RETURN TO CALLER
SPACE 2
*--------------------------------------------------------------------*
* *
* A PREVIOUSLY UNKNOWN PRIVATE VOLUME IS BEING ENTERED. *
* *
* SET THE STORAGE GROUP NAME AND THE READ-COMPATIBLE *
* ATTRIBUTE USING INFORMATION FROM THE LIBRARY DESCRIPTION. *
* *
*--------------------------------------------------------------------*
ENT1100 DS 0H
MVC UXEGROUP,LIBDDSGN SET DEFAULT STORAGE GROUP NAME
CLI UXEMEDIA,UXEMED1 MEDIA TYPE MEDIA1?
BNE EXIT NO. RETURN TO CALLER
CLI UXEREC,UXE18TRK 18-TRACK RECORDING TECHNOLOGY?
BNE EXIT NO. RETURN TO CALLER
CLI LIBDRDCM,UXEYES SET READ COMPATIBILITY FOR MEDIA1?
BNE EXIT NO. RETURN TO CALLER
MVI UXESPEC,UXERDCOM SET READ-COMPATIBLE ATTRIBUTE
B EXIT RETURN TO CALLER
EJECT ,
*--------------------------------------------------------------------*
* *
* THE TAPE VOLUME RECORD ALREADY EXISTS FOR THE CARTRIDGE *
* BEING ENTERED. *
* *
* IF THE SHELF LOCATION INDICATES THAT THE VOLUME MUST RESIDE *
* ON THE SHELF, OR THE VOLUME OWNER IS NOT CURRENT IN PAYING *
* LIBRARY RENT, THE CARTRIDGE DOES NOT BELONG IN THE LIBRARY. *
* *
* SET THE REJECT RETURN CODE, AND EXIT. *
* *
*--------------------------------------------------------------------*
ENT2000 DS 0H
CLC UXESHLOC,=CL32'TO THINE OWN SHELF BE TRUE' MUST VOLUME
* REMAIN ON SHELF?
BE ENT2100 YES. SET REJECT RETURN CODE
CLC UXEOWNER,=CL64'JOHN Q. DEADBEAT' HAS OWNER PAID BILL?
BNE ENT3000 YES. CHECK TAPE VOLUME REC CHANGES
ENT2100 DS 0H
LA R9,UXEFAIL SET CARTRIDGE ENTRY REQUEST DENIED
* RETURN CODE
B EXIT RETURN TO CALLER
EJECT ,
*--------------------------------------------------------------------*
* *
* IF THE VOLUME USE ATTRIBUTE IS PRIVATE, THE MEDIA TYPE IS *
* MEDIA1 (CARTRIDGE SYSTEM TAPE), AND THE TAPE RECORDING *
* TECHNOLOGY IS 18-TRACK, THE VOLUME IS INTENDED FOR USE IN *
* READ-ONLY MODE. SET THE READ-COMPATIBLE SPECIAL ATTRIBUTE. *
* *
*--------------------------------------------------------------------*
ENT3000 DS 0H
CLI UXEUSEA,UXEPRIV PRIVATE USE ATTRIBUTE?
BNE EXIT NO. RETURN TO CALLER
CLI UXEMEDIA,UXEMED1 MEDIA TYPE MEDIA1?
BNE EXIT NO. RETURN TO CALLER
CLI UXEREC,UXE18TRK 18-TRACK RECORDING TECHNOLOGY?
BNE EXIT NO. RETURN TO CALLER
LA R9,UXECHG ALLOW CARTRIDGE ENTRY WITH TAPE
* VOLUME RECORD CHANGED
MVI UXESPEC,UXERDCOM SET READ-COMPATIBLE ATTRIBUTE
EJECT ,
*--------------------------------------------------------------------*
* *
* RETURN TO THE CALLER *
* *
*--------------------------------------------------------------------*
EXIT DS 0H
L R13,SAVE+4 RESTORE CALLER'S SAVE AREA ADDRESS
FREEMAIN RU, +
LV=WORKLEN, +
A=(R8), +
SP=0
LR R15,R9 SET RETURN CODE
RETURN (14,12), RESTORE CALLER'S REGISTERS, THEN
RC=(15) RETURN TO CALLER
SPACE 2
END CBRUXENT