Die Anwendung des Kommandos SECURE-RESOURCE-ALLOCATION kann an zwei Exit-Punkten von der Systembetreuung überwacht werden:
Die Request Exit-Routine kann die SECURE-Anforderung abweisen.
Die Return Exit-Routine kann nach der Bearbeitung der SECURE-Anforderung geeignete Aktionen zur Protokollierung bzw. Registrierung durchführen.
Return Exit (025)
Folgende Informationen werden an die Exit-Routine übergeben:
R1 = A(Parameterbereich NKSEPAR) R12 = A(P2 Program Manager) R13 = A(Sicherungsbereich der rufenden Komponente) R14 = A(indirekter Rücksprung) R15 = A(Exit-Routine)
Hinweise
Register 12, 13 und 14 dürfen von der Exit-Routine nicht zerstört werden.
Das Feld NKSHMSG des NKSEPAR-Arbeitsbereiches enthält:
die Meldungsnummer (_NKSxxxx), mit der das SECURE-RESOURCE-ALLOCATION-Kommando vom Kommandoprozessor abgewiesen wurde;
XL8'00' bei erfolgreicher Kommandobearbeitung.
Das Feld NKSHPTR des NKSEPAR-Arbeitsbereiches enthält:
einen Zeiger auf das fehlerhafte Element der NKSEPAR-Datenliste oder A(0), wenn das fehlerhafte Element nicht eindeutig zu bestimmen ist;
A(0) bei erfolgreicher Kommandobearbeitung.
Request Exit (026)
Die Registerversorgung erfolgt wie beim Return Exit.
Die Rückkehrinformation an die rufende Systemkomponente erfolgt im Feld NKSHEXR des Parameterbereichs NKSEPAR.
|
|
|
|
Hinweise
Register 12, 13 und 14 dürfen von der Exit-Routine nicht zerstört werden.
Wird die SECURE-Anforderung von der Exit-Routine abgewiesen, erscheint die Meldung:
% NKS0062 SECURE-ANFORDERUNG VOM SYSTEMVERWALTER ABGEWIESEN. GRUND: (&00)
Ein Ablehnungsgrund wäre z.B., dass mehr als drei Geräte vom Typ 3590 reserviert werden sollen.
Wird das SECURE-RESOURCE-ALLOCATION-Kommando von der Exit-Routine abgewiesen (NKSHEXRC = X'04'), kann das Feld NKSHPTR des NKSEPAR-Arbeitsbereichs von der Exit-Routine mit der Anfangsadresse des fehlerhaften Elements in der NKSEPAR-Datenliste versorgt werden. Der Benutzer erhält dann weitere Informationen in der Meldung NKS0062 (s.o.).
DSECT
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
Die übergebene Elementliste entspricht nicht unmittelbar den im SECURE-RESOURCE-ALLOCATION-Kommando angegebenen Parametern.
Die VOLUME_ELEMENT-Teilliste enthält neben den explizit angegebenen DISK-/TAPE-Anforderungen auch die durch FILE spezifizierten implizit benötigten Volumes, die aus den Katalogeinträgen ergänzt wurden.
Die DEVICE_AT_LOCATION-Teilliste ist eine rein additive verfeinerte Aufschlüsselung der DEVICE-Teilliste. Sie enthält die Device-Anforderungen, für die eine Lagerortzuordnung existiert. Diese Zuordnung kann entstanden sein durch:
die Angabe des Anwenders (LOCATION=<loc>)
die Default-Location bei *USER-DEFAULT für MAREN
eine im MAREN-EXIT6 ermittelte Location bei Angabe von LOCATION=*BY-FILE