SAMPLIB member CBRSPUXE

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