This SAMPLIB member is a sample change use attribute installation
exit.
UXCUA TITLE 'CBRUXCUA - SAMPLE CHANGE USE ATTRIBUTE INST. EXIT'
CBRUXCUA START 0 SAMPLE CHANGE USE ATTRIBUTE INSTALLATION EXIT
SPACE 2
**** START OF SPECIFICATIONS *****************************************
* *
* MODULE NAME: CBRUXCUA *
* *
* DESCRIPTIVE NAME: SAMPLE CHANGE USE ATTRIBUTE INSTALLATION *
* EXIT *
* *
* FUNCTION: *
* MODULE CBRUXCUA IS INVOKED EACH TIME A REQUEST IS MADE TO *
* CHANGE THE VOLUME USE ATTRIBUTE OF AN SMS-MANAGED TAPE *
* VOLUME. CBRUXCUA MAY REFUSE TO ALLOW THE VOLUME USE *
* ATTRIBUTE TO BE CHANGED, OR UPDATE CERTAIN FIELDS IN THE TAPE *
* VOLUME RECORD, OR APPROVE THE CHANGE USE ATTRIBUTE REQUEST *
* WITHOUT CHANGE. *
* *
* CBRUXCUA DEMONSTRATES THE USE OF THE FOLLOWING FUNCTIONS: *
* 1. SETTING THE "REJECT" RETURN CODE TO PREVENT A CHANGE IN *
* THE VOLUME USE ATTRIBUTE. *
* 2. USING THE INFORMATION IN VARIOUS FIELDS IN THE TAPE VOLUME *
* RECORD. *
* 3. PASSING INFORMATION TO CBRUXCUA USING THE LIBRARY *
* DESCRIPTION FIELD, AS SET BY THE ISMF LIBRARY MANAGEMENT *
* APPLICATION. *
* 4. PASSING INFORMATION TO CBRUXCUA USING THE CBRXLCS *
* FUNC(CUA) PROGRAMMING INTERFACE. *
* *
* 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 - CBRUXCUA WORKING STORAGE BASE REGISTER *
* R9 - RETURN CODE WORK REGISTER *
* R10 - LIBRARY DESCRIPTION BASE REGISTER *
* R11 - UXCPL BASE REGISTER *
* R12 - CBRUXCUA BASE REGISTER *
* R13 - STANDARD LINKAGE REGISTER *
* - SAVE AREA ADDRESS *
* R14 - STANDARD LINKAGE REGISTER *
* - RETURN POINT ADDRESS *
* - WORK REGISTER *
* R15 - STANDARD LINKAGE REGISTER *
* - ENTRY POINT ADDRESS *
* - RETURN CODE *
* - WORK REGISTER *
* *
* MODULE TYPE: CONTROL SECTION *
* *
* PROCESSOR: ASSEMBLER H *
* *
* ATTRIBUTES: *
* *
* LOCATION: JOB PACK AREA *
* STATE: SUPERVISOR *
* AMODE: 31 *
* RMODE: ANY *
* KEY: CALLER'S *
* MODE: TASK *
* SERIALIZATION: UNLOCKED *
* TYPE: REUSABLE *
* REENTRANT *
* REFRESHABLE *
* AUTHORIZATION: APF AUTHORIZED *
* *
* LINKAGE: STANDARD LINKAGE CONVENTIONS *
* *
* CALLING SEQUENCE: *
* CBRUXCUA IS INVOKED USING THE MVS LINK MACRO. *
* *
* INPUT: *
* AT ENTRY TO CBRUXCUA, REGISTER 1 CONTAINS THE ADDRESS OF *
* THE CHANGE USE ATTRIBUTE INSTALLATION EXIT PARAMETER LIST. *
* *
* OUTPUT: *
* A RETURN CODE IS PLACED IN REGISTER 15: *
* CODE MEANING *
* 0 CHANGE THE VOLUME USE ATTRIBUTE AS REQUESTED. NO *
* CHANGES HAVE BEEN MADE TO THE TAPE VOLUME RECORD. *
* 4 CHANGE THE VOLUME USE ATTRIBUTE AS REQUESTED. ONE *
* OR MORE FIELDS IN THE TAPE VOLUME RECORD HAVE BEEN *
* CHANGED. *
* 8 DO NOT ALLOW THE VOLUME USE ATTRIBUTE TO BE *
* CHANGED. *
* 12 NOT USED. *
* 16 DO NOT INVOKE THE CHANGE USE ATTRIBUTE INSTALLATION *
* EXIT AGAIN. ALLOW ALL REQUESTS TO CHANGE THE *
* VOLUME USE ATTRIBUTE. *
* *
* EXIT NORMAL: *
* RETURN TO THE CALLER WITH ONE OF THE RETURN CODES DESCRIBED *
* ABOVE. *
* *
* EXIT ERROR: NONE *
* *
* EXTERNAL REFERENCES: *
* *
* ROUTINES: NONE *
* *
* CONTROL BLOCKS: *
* CBRUXCPL - CHANGE USE ATTRIBUTE INSTALLATION *
* EXIT PARAMETER LIST - R/W *
* *
* EXECUTABLE MACROS: *
* FREEMAIN *
* GETMAIN *
* RETURN *
* SAVE *
* *
* MESSAGES: NONE *
* *
* ABEND CODES: NONE *
* *
*** END OF SPECIFICATIONS ********************************************
TITLE 'CBRUXCPL - CHANGE USE ATTRIBUTE INST EXIT PARAM LIST'
CBRUXCPL , CHANGE USE ATTR INST EXIT PLIST
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 '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 'CBRUXCUA WORKING STORAGE'
*--------------------------------------------------------------------*
* *
* CBRUXCUA WORKING STORAGE *
* *
*--------------------------------------------------------------------*
CUAWORK DSECT , CBRUXCUA WORKING STORAGE
SAVE DS 18F CBRUXCUA SAVE AREA
SPACE 2
WORKEND DS 0D END OF CBRUXCUA WORKING STORAGE
WORKLEN EQU *-CUAWORK CBRUXCUA WORKING STORAGE LENGTH
TITLE 'CBRUXCUA - SAMPLE CHANGE USE ATTRIBUTE INST EXIT'
*--------------------------------------------------------------------*
* *
* CBRUXCUA ENTRY POINT *
* *
*--------------------------------------------------------------------*
CBRUXCUA CSECT , SAMPLE CHANGE USE ATTR INST EXIT
CBRUXCUA AMODE 31
CBRUXCUA RMODE ANY
SAVE (14,12),, SAVE CALLER'S REGISTERS AND
'CBRUXCUA&SYSDATE' MARK ENTRY POINT
LR R12,R15 COPY ENTRY POINT ADDRESS
USING CBRUXCUA,R12 CBRUXCUA BASE REGISTER
LR R11,R1 COPY PARAMETER ADDRESS
USING UXCPL,R11 CHANGE USE ATTR INST EXIT PARM LIST
GETMAIN RU, GETMAIN WORKING STORAGE FROM
LV=WORKLEN, SUBPOOL 230 TO GET PSW KEY
SP=230 STORAGE
LR R8,R1 SAVE WORKING STORAGE ADDRESS
USING CUAWORK,R8 CBRUXCUA 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 AND PAD BYTE
MVCL R14,R0 CLEAR WORKING STORAGE
ST R13,SAVE+4 BACKWARD CHAIN SAVE AREAS
LA R0,SAVE CBRUXCUA SAVE AREA ADDRESS
ST R0,8(,R13) FORWARD CHAIN SAVE AREAS
LR R13,R0 SET CBRUXCUA SAVE AREA ADDRESS
LA R10,UXCLDESC ADDRESS OF LIBRARY DESCRIPTION
USING LIBDESC,R10 LIBRARY DESCRIPTION FIELD
EJECT ,
*--------------------------------------------------------------------*
* *
* PRESET RETURN CODE ZERO *
* *
*--------------------------------------------------------------------*
LA R9,UXCNOCHG CHANGE USE ATTRIBUTE WITHOUT
* CHANGING TAPE VOLUME RECORD
SPACE 2
*--------------------------------------------------------------------*
* *
* IF THE VOLUME USE ATTRIBUTE WILL NOT CHANGE, ALLOW THE *
* FUNCTION TO CONTINUE. THE INVOKER OF CUA IS PROBABLY ISMF *
* VOLUME ALTER, AND THE PURPOSE IS TO ENSURE THAT THE USE *
* ATTRIBUTE AND THE LIBRARY MANAGER CATEGORY MATCH. *
* *
*--------------------------------------------------------------------*
CLC UXCCUSEA,UXCUSEA OLD ATTRIBUTE = NEW ATTRIBUTE?
BE EXIT YES. RETURN TO CALLER
SPACE 2
*--------------------------------------------------------------------*
* *
* IF THE VOLUME IS SHELF-RESIDENT, DO NOT ALLOW THE VOLUME *
* USE ATTRIBUTE TO BE CHANGED. *
* *
* SET THE REJECT RETURN CODE, AND EXIT. *
* *
*--------------------------------------------------------------------*
CLC UXCLIB,=CL8'SHELF' SHELF-RESIDENT VOLUME?
BNE CUA2000 NO. CHECK CHANGE TO SCRATCH
LA R9,UXCFAIL SET CHANGE USE ATTRIBUTE REQUEST
* DENIED RETURN CODE
B EXIT RETURN TO CALLER
EJECT ,
*--------------------------------------------------------------------*
* *
* IF THE USE ATTRIBUTE IS TO BE CHANGED TO SCRATCH, AND IF *
* THE REQUEST IS FROM THE PROGRAMMED INTERFACE (USING THE *
* CBRXLCS MACRO), ALLOW THE REQUEST. *
* *
*--------------------------------------------------------------------*
CUA2000 DS 0H
CLI UXCUSEA,UXCSCRT CHANGE TO SCRATCH?
BNE CUA3000 NO. CHECK STORAGE GROUP NAME
CLC UXCEXITI,PASSTHRU EJECT AUTHORIZED BY PROGRAMMED
* INTERFACE?
BE EXIT YES. RETURN TO CALLER
SPACE 2
*--------------------------------------------------------------------*
* *
* THE REQUEST IS NOT FROM THE PROGRAMMED INTERFACE. ALLOW *
* THE CHANGE TO SCRATCH ONLY WHEN THE VOLUME IS NOT WRITE *
* PROTECTED AND IS NOT A SECURE CHECKPOINT VOLUME. *
* *
*--------------------------------------------------------------------*
CLI UXCWPROT,UXCYES WRITE PROTECTED VOLUME?
BE CUA2100 YES. REJECT CUA REQUEST
CLI UXCCHKPT,UXCYES SECURE CHECKPOINT VOLUME?
BNE EXIT NO. RETURN TO CALLER
CUA2100 DS 0H
LA R9,UXCFAIL SET CHANGE USE ATTRIBUTE REQUEST
* DENIED RETURN CODE
B EXIT RETURN TO CALLER
EJECT ,
*--------------------------------------------------------------------*
* *
* THE USE ATTRIBUTE IS TO BE CHANGED TO PRIVATE. *
* *
* IF THE STORAGE GROUP NAME IS BLANK, SET THE DEFAULT STORAGE *
* GROUP NAME FROM THE LIBRARY DESCRIPTION. *
* *
*--------------------------------------------------------------------*
CUA3000 DS 0H
CLC UXCGROUP,=CL8' ' BLANK STORAGE GROUP NAME?
BNE EXIT NO. RETURN TO CALLER
LA R9,UXCCHG ALLOW CHANGE USE ATTRIBUTE WITH
* TAPE VOLUME RECORD CHANGED
MVC UXCGROUP,LIBDDSGN SET DEFAULT STORAGE GROUP NAME
EJECT ,
*--------------------------------------------------------------------*
* *
* RETURN TO THE CALLER *
* *
*--------------------------------------------------------------------*
EXIT DS 0H
L R13,SAVE+4 RESTORE CALLER'S SAVE AREA ADDRESS
FREEMAIN RU, RELEASE WORKING STORAGE
LV=WORKLEN,
A=(R8),
SP=230
LR R15,R9 SET RETURN CODE
RETURN (14,12), RESTORE CALLER'S REGISTERS, THEN
RC=(15) RETURN TO CALLER
TITLE 'CBRUXCUA CONSTANTS'
*--------------------------------------------------------------------*
* *
* CBRUXCUA CONSTANTS *
* *
*--------------------------------------------------------------------*
LTORG , LITERAL CONSTANTS
SPACE 2
PASSTHRU DC CL16'SIMP' PASSTHRU VALUE TO AUTHORIZE CUA
SPACE 2
END CBRUXCUA