Dieser Makro zeigt die Definition der Zugriffsbedingungen an.
Makro | Operanden |
SHWSAC | MF = D / L / C / M / E ,PREFIX = P / <name 1> ,MACID = ROW / <name 3> ,MGMTPRE = P / <name 1> ,MGMTMAC = ROZ / <name 3> ,XPAND = PARAM / OUTPUT ,PARAM = <name 1..8> ,GUARD* = <c-string: filename 1..40 without-gen-vers with-wild> / <c-string: partial-filename 2..40 with-wild> / <var: char(40)> / (<reg: A(char(40))>) ,SUBTYPE = *ALL / *USER / *GROUP / *OTHER / *ALLUSER / <var: enum SUBTYPE> / (<reg: enum SUBTYPE>) ,SUBIDS = *ALL / array(20): <c-string: name 1..8> / <var: char(8)> / (<reg: A(char(8))>) ,VIEW = *CONDITIONS / *ADMISSION <var: enum VIEW> / (<reg: enum VIEW>) ,INFORM = *ADM / *ATTR / *ALL / *NAME / <var: enum INFORM> / (<reg: enum INFORM>) ,OUTAREA = structure(2): (1) address: <label> / (<reg: pointer>) |
Die Beschreibung der Parameter MF, PREFIX, MACID, PARAM finden Sie im Handbuch „Makroaufrufe an den Ablaufteil“ [16].
Operanden, die mit „*“ gekennzeichnet sind, sind Pflichtoperanden bei MF=L. Die Angaben zu SUBTYPE verweisen auf die DSECT des Makros SACMGMT.
MGMTPRE und MGMTMAC
Legen das Präfix fest, das den globalen DSECTS, Konstanten und Gleichsetzungen vorangestellt wird. Dieses Präfix besteht aus den beiden Operanden MGMTPRE und MGMTMAC, die in dieser Reihenfolge zusammengesetzt werden.
Wenn ein Präfix verwendet wird, muss dieses mit dem bei SACMGMT im Operanden PREFIX übereinstimmen, da sonst Übersetzungsfehler auftreten.
XPAND
gibt die zu expandierenden Deklarationen an. Dieser Operand gilt nur bei MF=D.
=PARAM
Das Modell des Parameterbereichs.
=OUTPUT
Die Modelle der Teilbereiche der Ausgabe.
GUARD
Name des anzuzeigenden Guard. Es dürfen nur Großbuchstaben verwendet werden. Der Name darf Musterzeichen enthalten (Einschränkung siehe Operand *ADMISSION in diesem Makro). Dieser Operand muss bei MF=L angegeben werden.
SUBTYPE, SUBIDS und INFORM werden nur bei VIEW=*CONDITIONS ausgewertet.
SUBTYPE
Legt den Typ mit der VIEW=*CONDITIONS anzuzeigenden Subjekte fest.
=*ALL
Es werden alle Zugriffsbedingungen angezeigt.
=*USER
Angabe der Benutzerkennungen, deren Zugriffsbedingungen angezeigt werden.
=*GROUP
Angabe der Benutzergruppe, deren Zugriffsbedingungen angezeigt werden.
=*OTHER
Die Zugriffsbedingungen für alle anderen Benutzer werden angezeigt.
=*ALLUSER
Die Zugriffsbedingungen für *ALLUSER werden angezeigt.
SUBIDS
Bestimmt, welche der bei SUBTYPE =*GROUP oder SUBTYPE=*USER vorhandenen Einzeleinträge angezeigt werden. Da für SUBTYPE=*ALLUSER und SUBTYPE=*OTHER jeweils nur ein Eintrag vorhanden ist, können für diese beiden SUBTYPES keine SUBIDS angegeben werden.
=*ALL
es werden alle Zugriffsbedingungen für den angegebenen SUBTYPE angezeigt.
=array(20)
Wie bei der Definition der Zugriffsbedingung können bis zu 20 Subjekte angegeben werden, die angezeigt werden.
VIEW
Es können die auszugebenden Informationen eingeschränkt werden:
=*CONDITIONS
Es werden Zugriffsbedingungen des Guards angezeigt, die der Aufrufer des Makros zum Schutz seiner Objekte verwenden kann. Dies wird vom
SCOPE-Attribut bestimmt.
Die Verwendung des Makros mit diesem Operandenwert entspricht dem Funktionsumfang von /SHOW-ACCESS-CONDITIONS.
=*ADMISSION
Es wird angezeigt, welche Bedingungen der Aufrufer erfüllen muss, um über dieses Guard auf ein Objekt zugreifen zu können. Der Aufrufer bekommt keine Auskunft darüber, durch welches Attribut der Zugriff gestattet ist. Die Verwendung des Makros mit diesem Operandenwert entspricht dem Funktionsumfang von /SHOW-ACCESS-ADMISSION.
Es werden nur die Bedingungen für den Aufrufer ausgewertet. Das SCOPE-Attribut wird nicht berücksichtigt - sollte sich aus einer illegalen Nutzung eines Guards das Ergebnis „Bedingung nicht erfüllt“ ergeben, wird dies über diese Option nicht angezeigt. Hierzu muss VIEW=*CONDITIONS gegeben werden.
Der Guard-Name darf bei Angabe von *ADMISSION keine Musterzeichen enthalten.
INFORM
Legt fest, welche Informationen für jedes Guard ausgegeben werden.
=*ADM
Es werden die Zugriffsbedingungen des Guards angezeigt.
=*ATTR
Es werden die Attribute des Guards angezeigt.
=*ALL
Es werden die Attribute und die Zugriffsbedingungen des Guards angezeigt.
=*NAME
Es wird nur der Name des Guards angezeigt.
OUTAREA
Adresse und Länge des Ausgabebereichs.
Layout der Ausgabebereiche von SHWSAC
Der Ausgabebereich enthält eine komprimierte Darstellung der Zugriffsbedingungen und somit variable Teile; dadurch ist es nicht möglich, den Ausgabebereich durch eine einzelne DSECT zu beschreiben.
Der Aufrufer muss deshalb die einzelnen Einträge im Ausgabebereich selbst adressieren. Die dafür notwendigen DSECTS sind im folgenden Abschnitt genau beschrieben.
Da die Menge der ausgegebenen Information von den Aufruf-Parametern abhängt, wird folgendes Ausgabemodell verwendet:
---> | Semantische Bedeutung des Feldes |
===> | Verweis auf die entsprechende DSECT. |
<prefix> ist das bei SHWSAC angegebene PREFIX verkettet mit MACID. | |
<mgmtpref> ist das bei SACMGMT angegebene Prefix von MGMTPRE | |
... | kennzeichnet, dass dieser Ausgabebereich in der angegebenen, weiteren |
======================= Level 1 - Output ===============================
----------
| Output | ====> <prefix>OPUT
----------
| Admin_o| ----> Verwaltungsinformationen ... (Level 2 - Admin_o)
----------
| Guard_1| ----> Das 1. von n ausgegebenen Guards ...(Level 2 - Guard_all
---------- - Guard_admin
| | - Guard_cond
... - Guard_nam
| | je nach VIEW und INFORMATION)
?----------
| Guard_n|
----------
======================= Level 2 - Admin_o ==============================
---------- *-----------
| Output | * | Admin_o | ====> <prefix>OPUT
----------* -----------
| Admin_o| | output- | ---> Version der Ausgabestruktur
----------* | version |
| Guard_1| * -----------
---------- *| #guard | ---> Anzahl der enthaltenen Guards
| | -----------
...
| |
----------
| Guard_n|
----------
======================= Level 2 - Guard_all =========== VIEW = *CONDITIONS
INFORMATION = *ALL
----------
| Output | -------------
---------- | Guard_all | ====> <prefix>GALL
| Admin_o| ** -------------
----------** | Mgmt_part | ---> Die Attribute des Guards
| Guard_1| ------------- ... (Level 3 Mgmt_part)
----------** | Aconds | ---> Die selektierten Zugriffsbedingungen
| | ** ------------- ... (Level 3 Aconds)
...
| |
----------
| Guard_n|
----------
======================= Level 2 - Guard_admin ======= VIEW = *CONDITIONS
INFORMATION = *ATTR
----------
| Output |
----------
| Admin_o| ** -------------
----------** |Guard_admin| ====> <prefix>GATT
| Guard_1| -------------
----------** | Mgmt_part | ---> Attribute des Guards
| | ** ------------- ... (Level 3 Mgmt_part)
...
| |
----------
| Guard_n|
----------
======================= Level 2 - Guard_cond==== VIEW = *ADMISSION ======
oder VIEW = *CONDITIONS und
---------- INFORMATION = *ADM
| Output |
----------
| Admin_o| ** -------------
----------** |Guard_cond | ====> <prefix>GCON
| Guard_1| -------------
----------** | Name | ---> Der Name des Guards
| | * -------------
... * | Aconds | ---> Selektierte Zugriffsbedingungen
... ------------- ... (Level 3 Aconds)
| |
----------
| Guard_n|
----------
======================= Level 2 - Guard_nam ========= VIEW = *CONDITIONS
INFORMATION = *NAME
----------
| Output | ====> <prefix>OUTP
----------
| Admin_o| ---> Verwaltungsinformation ... (Level 2 - Admin_o)
----------
| Name_1 | ---> Der Name des 1. von n Guards
----------
| |
...
| |
----------
| Name_n |
----------
======================= Level 3 - Mgmt_part===========================
* -----------
* |Mgmt_part| ====> <prefix>GATT
----------- * -----------
| Guard |* | Version | ---> Version des Guards
----------- -----------
|Mgmt_part| | Name | ---> Name des Guards
----------- -----------
| Aconds |* | Scope | ---> Benutzerkreis
----------- * -----------
* | Comment | ---> Kommentartext
* -----------
*| Cr-Date | ---> Zeitstempel des Erzeugungsdatums
-----------
| Lm-Date | ---> Zeitstempel letzter Änderungszeitpunkt
-----------
======================= Level 3 - Aconds===============================
------------
----------- | Aconds | ====> <prefix>ACOS
|Guard_all| * ------------
----------- * | Admin_Aco| ---> Verwaltungsinformation
|Mgmt_part| * ------------ ... (Level 4 Admin_Aco)
-----------* | Acond_1 | ---> 1. Zugriffsbedingung
| Aconds | ------------ ... (Level 4 - Acond_All)
-----------* | |
* ...
* | |
* ------------
| Acond_n |
------------
======================= Level 4 - Admin_Aco ===============================
-------------
* | Admin_Aco | ====> <prefix>ACOS
----------- * -------------
| Aconds | * | User_n | ---> Anzahl der benutzerspezifischen
-----------* ------------- Zugriffsbedingungen
|Admin_Aco| | Group_n | ---> Anzahl der gruppenspezifischen
-----------* ------------- Zugriffsbedingungen
| Acond_1 | * | Others_n | ---> OTHERS-Bedingung enthalten
----------- * ------------- 0 - Nein, 1 - Ja
| Acond_2 | * | Alluser_n | ---> ALLUSER-Bedingung enthalten
----------- ------------- 0 - Nein, 1 - Ja
| |
...
| |
-----------
| Acond_3 |
-----------
======================= Level 4 - Acond_all================================
-------------
| Acond_All | ===> <prefix>ACON
----------- *-------------
| Aconds | * | Identifier| ---> Name und Typ der Zugriffsbedingung
----------- * -------------
|Admin_Aco| * | Size | ---> Größe der Zugriffsbedingung
-----------* -------------
| Acond_1 | | Admission | ---> Art der Zugriffsbedingung
-----------* -------------
| Acond_2 | * | Time_cond | ---> komprimierte Zeit-Bedingung
----------- * ------------- ...(Level 5 Time_cond)
| | * | Date_cond | ---> komprimierte Datum-Bedingung
... *------------- ...(Level 5 Date_cond)
... | Week_cond | ---> Wochentag-Bedingung
| | ------------- ...(Level 5 Week_cond)
----------- | Priv_cond | ---> Privileg-Bedingung
| Acond_3 | ------------- ...(Level 5 Priv_cond)
----------- | Prog_cond | ---> komprimierte Programm-Bedingung
------------- ...(Level 5 Prog_cond)
======================= Level 5 Time_cond ================================= ------------- | Acond | ----------- ------------- |Time_cond| ===> <prefix>TCON | Identifier| *----------- ------------- * | Kind | ---> Art der Bedingung (Admission oder | Size | * ----------- Exclusion) siehe folgender Hinweis ------------- * | Int_n | ---> Anzahl der Intervalle (maximal 4!) | Admission | * ----------- -------------* | Int_1 | ---> 1. Intervall (low,high) | Time_cond | ----------- -------------* | | | Date_cond | * ... ------------- * | | | Week_cond | * ----------- ------------- * | Int_n | ---> Letztes Intervall | Priv_cond | *----------- ------------- | Prog_cond | -------------
======================= Level 5 Date_cond================================ ------------- | Acond | ------------- | Identifier! ----------- ------------- |Date_cond| ===> <prefix>DCON | Size | *----------- ------------- * | Kind | ---> Art der Bedingung (Admission oder | Admission | * ----------- Exclusion) siehe folgender Hinweis ------------- * | Int_n | ---> Anzahl der Intervalle | Time_cond | * ----------- (maximal 4!) -------------* | Int_1 | ---> Erstes Intervall | Date_cond | ----------- (low,high) -------------* | | | Week_cond | * ... ------------- * | | | Priv_cond | * ----------- ------------- * | Int_n | ---> letztes Intervall | Prog_cond | *----------- -------------
======================= Level - 5 Week_cond ==============================
-------------
| Acond |
-------------
| Identifier|
-------------
| Size | -----------
------------- |Week_cond| ===> <prefix>WCON
| Admission | *-----------
------------- * | Kind | ---> Art der Bedingung (Admission oder
| Time_cond | * ----------- Exclusion) siehe folgender Hinweis
------------- * | MO | ---> Wert für Montag (YES oder NO)
| Date_cond | * -----------
-------------* | TU | ---> Wert für Dienstag (YES oder NO)
| Week_cond | -----------
-------------* | |
| Priv_cond | * ...
------------- * | |
| Prog_cond | * -----------
------------- * | SU | ---> Wert für Sonntag (YES oder NO)
*-----------
======================= Level - 5 Priv_cond ===============================
-------------
| Acond |
-------------
| Identifier|
-------------
| Size |
-------------
| Admission | -----------
------------- |Priv_cond| ===> <prefix>PVCO
| Time_cond | *-----------
------------- * | Kind | ---> Art der Bedingung (Admission oder
| Date_cond | * ----------- Exclusion) siehe folgender Hinweis
------------- * | TSOS | ---> Wert für Privileg TSOS
| Week_cond | * -----------
-------------* | USRADM | ---> Wert für Privileg USRADM
| Priv_cond | -----------
-------------* | |
| Prog_cond | * ...
------------- * | |
* -----------
* | SECADM | ---> Wert für Privileg SECADM
*-----------
======================= Level 5 - Prog_cond ===============================
-------------
| Acond |
-------------
| Identifier|
-------------
| Size |
-------------
| Admission |
------------- -------------
| Time_cond | | Prog_cond | ====> <prefix>PCON
------------- -------------
| Date_cond | | Kind | ---> Art der Bedingung (Admission oder
------------- * ------------- Exclusion) siehe folgender Hinweis
| Week_cond | * | Prog_n | ---> Anzahl der Programme
------------- * ------------- ... (Level 6 Prog_All)
| Priv_cond | * | Prog_1 | ---> 1. komprimiertes Programm
-------------* | |
| Prog_cond | ...
-------------* | |
* | |
* -------------
* | Prog_n | ---> letztes komprimiertes Programm
-------------
======================= Level 6 - Prog_All ================================ ------------- | Prog_All | ====> <prefix>PRG ------------- | Type | ---> Typ des Programmes (File, Phase oder Module) ------------- | all_# | ---> Länge des folgenden Programmnamens ------------- | lib_# | ---> Länge des im Programmnamen enthaltenen Bibliotheksnamen ------------- | elem_# | ---> Länge des im Programmnamen enthaltenen Bibliothek- ------------- elementnamen | vers_# | ---> Länge der im Programmnamen enthaltenen Version ------------- | name | ---> Programmname -------------
Hinweise zur Auswertung des Ausgabebereichs von Bedingungen
Bei der Auswertung von Bedingungen ist zu beachten:
Die oben dargestellte Struktur einer Bedingung ist nur dann gültig, wenn die Art der Bedingung ’Kind’ ungleich dem Wert *NO für CONDITION_KIND ist. (CONDITION_KIND wird im Makro SACMGMT definiert)
Im Fall *NO für CONDITION_KIND wird nur die Art der Bedingung in der Ausgabe hinterlegt.
Analog zu CONDITION_KIND gilt dieses Verhalten auch für Time_cond, Date_cond, Week_cond, Priv_cond und Prog_cond.
So kann die Ausgabestruktur einer Zugriffsbedingung folgendes Aussehen haben (Auszug aus der gesamten Ausgabe).
======================= Level 4 - Acond_All =============================== ------------------------ | Acond_All | ------------------------ | Identifier | ------------------------ | Size | ------------------------ | Admission | ------------------------ | Time_cond: Kind | ---> mit Wert NO belegt ------------------------ | Date_cond: Kind | ---> mit Wert NO belegt ------------------------ | Week_cond: Kind | ---> mit Wert NO belegt ------------------------ | Priv_cond: Kind | ---> mit Wert NO belegt ------------------------ | Prog_cond: Kind | ---> mit Wert NO belegt ------------------------
Hinweise zur Anwendung
Ist im Parameterbereich der Indikator prefix.RONOMOR gesetzt, gibt es noch Guards, die das Auswahlkriterium erfüllen, aber im Ausgabebereich nicht mehr Platz gefunden haben.
Diese Guards können durch einen erneuten Aufruf der Prozedur gelesen werden, wobei jedoch zu beachten ist, dass der Parameterblock nicht verändert werden darf.
Das Feld prefix.RONOUS# in der Unterstruktur prefix.ROWOPUT des Parameterbereichs gibt die in den Ausgabebereich übertragene Größe an.
Liegen Guards auf einem Pubset, das über RFA zugreifbar ist, wird nur ein Ausgabebereich bis max. 64 KByte unterstützt, d.h. auch bei Angabe eines größeren Bereichs (> 64KByte) werden nur 64 KByte Ausgabeinformation in den Ausgabebereich übertragen. Ist der zu übertragende Block größer als 64 KByte, muss der Aufruf entsprechend oft wiederholt werden, um alle Daten zu übertragen.
Das Feld prefix.ROWOUTV der Verwaltungsinformation zeigt die Version der Ausgabestruktur an. Diese Information ist jedoch erst von Bedeutung, wenn mehrere Versionen von SHWSAC mit unterschiedlicher Ausgabestruktur vorhanden sein können.
Wird SHWSAC mit VIEW=*ADMISSION aufgerufen, wird nur dann die gefundene Zugriffsbedingung zurückgegeben, wenn der Wert des Felds prefix.ROWAADM ungleich *NO ist.
Ist das Feld prefix.ROWAADM der Zugriffsbedingung mit *NO belegt oder wird keine passende Zugriffsbedingung gefunden, wird der Returncode (X’1030’, siehe DSECT von Makro MSGGUAD) zurückgegeben.
Wird SHWSAC mit VIEW=*ADMISSION aufgerufen, hat die Ausgabe dieselbe Struktur wie bei einem Aufruf mit VIEW=*CONDITIONS, INFORM=*ADM(siehe Level 2 - Guards_Cond).
Wurde in einem der Kommandos /ADD-ACCESS-CONDITIONS bzw. /MODIFY-ACCESS-CONDITIONS oder mit dem Makro MODSAC bei der PROGRAM-Bedingung der Operand VERSION mit *ANY versorgt, enthält die Version bei der Ausgabe ebenfalls die Zeichenkette *ANY.
Die Zeitstempel für CREATION-DATE und LAST-MODIFICATION-DATE werden in UNIVERSAL-TIME-COORDINATE (UTC) in Deutsch ausgegeben.
Die Schnittstelle MODSAC erlaubt nur die Eingabe von Großbuchstaben. Beim Operanden SUBIDS ist deshalb darauf zu achten, dass die Bezeichner nur Großbuchstaben enthalten.
Werden trotzdem Kleinbuchstaben angegeben, führt das zwar zu keinem Fehler, es werden dann aber keine Zugriffsbedingungen selektiert und zurückgegeben.
Makro-Returncode
SC2 | SC1 | Maincode | Erläuterung |
X’01’ | X’1000’ | Der angegebene Wert des Operanden liegt nicht im erlaubten Bereich. Der fehlerhafte Operand steht als symbolischer Wert im SC2 | |
X’20’ | X’1001’ | Ein interner Fehler trat auf. Für eine genauere Analyse wurde ein SERSLOG-Eintrag geschrieben | |
X’40’ | X’1002’ | Der Guard-Name ist syntaktisch falsch | |
X’40’ | X’1003’ | Speicher für den Ausgabebereich nicht in der benötigten Länge allokiert oder nicht zugreifbar | |
X’40’ | X’1004’ | Speicher für den Parameterbereich nicht in der benötigten Länge allokiert oder nicht beschreibbar | |
X’40’ | X’1005’ | Der Ausgabebereich ist zu klein | |
X’40’ | X’1007’ | Das angegebene Guard existiert nicht | |
X’80’ | X’1009’ | Das angegebene Guard ist von einer anderen Task gesperrt | |
X’40’ | X’1012’ | Der angegebene Katalog ist nicht definiert oder nicht zugreifbar | |
X’40’ | X’1013’ | Das Pubset ist bei der GUARDS-Verwaltung unbekannt (Guardskatalog wurde wahrscheinlich bei IMPORT-PUBSET nicht geöffnet) | |
X’40’ | X’1016’ | Fehler im Kommunikationsmittel des MRS | |
X’40’ | X’1017’ | Unbekannte Benutzerkennung | |
X’40’ | X’1018’ | Fernes System nicht verfügbar | |
X’40’ | X’1020’ | Kein Speicher mehr vorhanden | |
X’40’ | X’1021’ | BCAM-Verbindungsfehler | |
X’40’ | X’1022’ | BCAM-Verbindung unterbrochen | |
X’40’ | X’1023’ | Kein Guard entspricht den Auswahlkriterien | |
X’40’ | X’1024’ | Nutzung des Guards nicht zugelassen | |
X’40’ | X’1028’ | Guard hat falschen Typ | |
X’40’ | X’1029’ | GUARDS auf dem fernen Rechner nicht verfügbar | |
X’40’ | X’1030’ | Benutzer-Bedingung im Guard nicht erfüllbar |