The application of the SECURE-RESOURCE-ALLOCATION command can be monitored by systems support at two exit points:
The request exit routine can reject the SECURE request.
After the SECURE request is completed, the return exit routine can lead to suitable actions being logged or registered.
Return exit (025)
The following information is passed to the exit routine:
R1 = A(NKSEPAR parameter area) R12 = A(P2 program manager) R13 = A(save area of calling component) R14 = A(indirect return) R15 = A(exit routine)
Notes
The contents of registers 12, 13 and 14 must not be destroyed by the exit routine.
The NKSHMSG field of the NKSEPAR work area contains:
the message number (_NKSxxxx) with which the SECURE-RESOURCE-ALLOCATION command was rejected by the command processor
XL8’00’ for successful command processing.
The NKSHPTR field of the NKSEPAR work area contains:
a pointer to the erroneous element of the NKSEPAR data list or, if the erroneous element cannot be determined easily, A(0)
A(0) for successful command processing.
Request exit (026)
The register values are supplied in the same way as for the return exit.
The return code for the calling system component is passed in the NKSHEXR field of the NKSEPAR parameter area.
|
|
|
|
Notes
The contents of registers 12, 13 and 14 must not be destroyed by the exit routine.
If the SECURE request is rejected by the exit routine, the following message is displayed:
%
NKS0062 SECURE REQUEST REJECTED BY THE SYSTEM ADMINISTRATOR.
REASON: (&00)
One possible reason for the rejection could be that more than three devices of type 3590 are to be reserved.
If the SECURE-RESOURCE-ALLOCATION command is rejected by the exit routine (NKSHEXRC = X'04'), the NKSHPTR field of the NKSEPAR work area can be supplied with the start address of the errored element in the NKSEPAR data list. The user then receives further information via message NKS0062 (see above).
DSECT
A DSECT for NKSEPAR (the address is transferred in register 1) can be generated with the NKSEPAR macro:
NKSEPAR MFCHK DNAME=KSHEAD,MF=D,MACID=KSH,ALIGN=F,PREFIX=N, 200C DMACID=KSH 200 NKSHEAD DSECT , *,##### PREFIX=N, MACID=KSH ##### ********************************************************** ** SYSTEM-EXIT FOR SECURE : HEADER DESCRIPTION ** ********************************************************** *-- 1 SECURE_EXIT_HEADER, NKSHEXRT DS 0F 2 EXIT_RETURN_INFO 200 DS XL3 FILLER 200 NKSHEXRC DS X EXIT_RETURN_CODE 200 NKSHEXOK EQU X'00' SUCCESS 200 NKSHEXSR EQU X'04' SEC_RES REJECTED 200 NKSHMSG DS XL8 2 RETURN_EXIT_MSG_IDENTIFIER *-- (SEC_SUCCESS = XL8'00', *-- SEC_NO_SUCCESS = ' NKS....'), NKSHPTR DS A 2 SECURE_EXIT_ERROR_ELEMENT *-- (DEFINED = A(BEGIN_OF_ERROR_ELEM, *-- NOT_DEFINED = A(0)); *-- 2 POINTERS_AND_COUNTERS_OF_ELEMENTS *-- (UNDEFINED=POINTER_AND_COUNTER_ *-- _ARE_SET_TO_ZERO) NKSHFILE DS A 3 FILE_LIST_POINTER, NKSHFIL# DS H 3 FILE_ELEM_COUNTER, NKSHVOL DS A 3 VOLUME_LIST_POINTER, NKSHVOL# DS H 3 VOLUME_ELEM_COUNTER, NKSHDEV DS A 3 DEVICE_LIST_POINTER, NKSHDEV# DS H 3 DEVICE_ELEM_COUNTER, NKSHUNIT DS A 3 UNIT_LIST_POINTER, NKSHUNI# DS H 3 UNIT_ELEM_COUNTER, NKSHDEVL DS A 3 DEVICE_AT_LOCATION_LIST_POINTER 102 NKSHDE#L DS H 3 DEVICE_AT_LOCATION_ELEM_COUNTER 102 DS 0F **** ELEMENT_DESCRIPTION SEE BELOW **** NKSHLEN EQU *-NKSHEXRT LENGTH_OF_HEADER;
SPACE 2 MFCHK DNAME=KSELEM,MF=D,MACID=KSE,ALIGN=F,PREFIX=N, 200C DMACID=KSE 200 NKSELEM DSECT , *,##### PREFIX=N, MACID=KSE ##### ********************************************************** ** SYSTEM-EXIT FOR SECURE : ELEMENT DESCRIPTION ** ********************************************************** *-- 1 SECURE_EXIT_ELEMENTS ALIGN FW, NKSETYP DS XL1 2 TYPE_OF_ELEMENT SET NKSEFILE EQU X'01' (FILE = 1, NKSEVOL EQU X'02' VOLUME = 2, NKSEDEV EQU X'03' DEVICE = 3, NKSEUNIT EQU X'04' UNIT = 4, NKSEDEVL EQU X'05' DEVICE AT LOCATION = 5), 102 SPACE 1 NKSEDESC DS 0C 2 ELEMENTS_DESCRIPTION, *** LAYOUT FOR FILE ELEMENT *** 3 FILE_ELEMENT, NKSEFNAM DS CL54 4 FILE_NAME, NKSEFTYP DS XL1 4 FILE_DEVICE_TYPE SET NKSEFTDI EQU X'01' (DEVICE_TYPE_DISK = 1, NKSEFTTA EQU X'02' DEVICE_TYPE_TAPE = 2), NKSEFRES DS XL1 4 FILE_RESERVATION_TYPE SET NKSEFRSH EQU X'00' (SHAREABLE = 0, NKSEFREX EQU X'01' EXCLUSIVE = 1), NKSEFACC DS XL1 4 FILE_ACCESS_IF_TAPE SET NKSEFARD EQU X'00' (READ = 0, NKSEFAWR EQU X'01' WRITE = 1), * NKSEFLEN EQU *-NKSETYP LENGTH_OF_ONE_FILE_ELEMENT SPACE 2 ORG NKSEDESC SPACE 1 *** LAYOUT FOR VOLUME ELEMENT *** 3 VOLUME_ELEMENT DEFINED FILE_ELEMENT, NKSEVSN DS CL6 4 VOLUME_SERIAL_NUMBER, NKSEVDT DS XL2 4 VOLUME_DEVICE_TYPE_CODE, NKSEVTYP DS XL1 4 VOLUME_DEVICE_TYPE SET NKSEVTDI EQU X'01' (DEVICE_TYPE_DISK = 1, NKSEVTTA EQU X'02' DEVICE_TYPE_TAPE = 2), NKSEVRES DS XL1 4 VOLUME_RESERVATION_TYPE SET NKSEVRSH EQU X'00' (SHAREABLE = 0, NKSEVREX EQU X'01' EXCLUSIVE = 1), NKSEVACC DS XL1 4 VOLUME_ACCESS_IF_TAPE SET NKSEVARD EQU X'00' (READ = 0, NKSEVAWR EQU X'01' WRITE = 1), * NKSEVLEN EQU *-NKSETYP LENGTH_OF_ONE_VOLUME_ELEMENT SPACE 2
ORG NKSEDESC SPACE 1 *** LAYOUT FOR DEVICE ELEMENT *** 3 DEVICE_ELEMENT DEFINED FILE_ELEMENT, NKSEDTC DS XL2 4 DEVICE_TYPE_CODE, NKSEDEV# DS H 4 NUMBER_OF_DEVICES, * NKSEDLEN EQU *-NKSETYP LENGTH_OF_ONE_DEVICE_ELEMENT SPACE 2 ORG NKSEDESC SPACE 1 *** LAYOUT FOR UNIT ELEMENT *** 3 UNIT_ELEMENT DEFINED FILE_ELEMENT, NKSEUMN DS CL4 4 UNIT_MNEMONIC, MNE * NKSEULEN EQU *-NKSETYP LENGTH_OF_ONE_UNIT_ELEMENT SPACE 2 ORG NKSEDESC 102 SPACE 1 102 *** LAYOUT FOR DEVICE_AT_LOCATION ELEMENT *** 102 NKSEDTCL DS XL2 4 TYPE-CODE OF DEVICE_AT_LOCATION 102 NKSEDE#L DS H 4 NUMBER OF DEVICE_AT_LOCATION 102 NKSEDLOC DS CL8 4 DEVICE-LOCATION 102 * 102 NKSELLEN EQU *-NKSETYP 102 SPACE 2 102 ORG
The transferred list of members (elements) does not correspond directly to the parameters specified in the SECURE-RESOURCE-ALLOCATION command.
In addition to the explicitly specified DISK/TAPE requests, the VOLUME_ELEMENT sublist also contains the implicitly required volumes (supplemented from the catalog entries) specified by means of FILE.
The DEVICE_AT_LOCATION sublist is a purely additive, more detailed breakdown of the DEVICE sublist. It contains the device requests for which a location allocation exists. The allocation can have been made by:
the user specification (LOCATION=<loc>)
the default location with *USER-DEFAULT for MAREN
a location determined in MAREN-EXIT6 in conjunction with the specification LOCATION=*BY-FILE