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