Mit diesem Makro werden, je nach Angabe des Operanden ACTION, neue Bedingungsdefinitionen einem Guard hinzugefügt oder bestehende Bedingungsdefinitionen geändert.
Makro | Operanden |
MODSAC | MF = D / L / C / M / E ,PREFIX = P / <name 1> ,MACID = ROY / <name 3> ,MGMTPRE = P / <name 1> ,MGMTMAC = ROZ / <name 3> ,PARAM = <name 1..8> ,ACTION *= *ADD / *MODIFY ,DIALOG = *STD / *NO / *GUARD / *USERID / *CATALOG / <var: enum DIALOG> / (<reg: enum DIALOG>) ,ERRMSG = *NO / *YES ,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 = *NONE / *USER / *GROUP / *OTHER / *ALLUSER / <var: enum SUBTYPE> / (<reg: enum SUBTYPE>) ,SUBIDS = array(20): <c-string: name 1..8> / <var: char(8)> / (<reg: A(char(8))>) ,ADMISS = *YES / *NO / *PARAMS / <var: enum ADMISS> / (<reg: enum ADMISS>) ,CKTIME = *NO / *ADMISSION / *EXCLUSION / <var: enum COND_KIND> / (<reg: enum COND_KIND>) ,TIMEN =<integer 1..4> / <var: integer(1)> / (<reg: A(integer(1))>) ,TIME#1 = structure(2): (1) low: <c-string: time 5> / <var: char(5)> / (<reg: A(char(5))>) ,TIME#2 = siehe TIME#1 |
MODSAC | ,CKDATE = *NO / *ADMISSION / *EXCLUSION / <var: enum COND_KIND> / (<reg: enum COND_KIND>) ,DATEN = <integer 1..4> / <var: integer(1)> / (<reg: A(integer(1))>) ,DATE#1 = structure(2): (1) low: <c-string: date 10> / <var: char(10)> / (<reg: A(char(10))>) ,DATE#2 = siehe DATE#1 ,CKWEEK = *NO / *ADMISSION / *EXCLUSION / <var: enum COND_KIND> / (<reg: enum COND_KIND>) ,MO = *NO / *YES ,CKPRIV = *NO / *ADMISSION / *EXCLUSION / <var: enum COND_KIND> / (<reg: enum COND_KIND>) ,ACSADM = *NO / *YES ,CUPRV002 = *NO / *YES |
MODSAC | ,OPERATG = *NO / *YES ,CKPROG = *NO / *ADMISSION / *EXCLUSION / <var: enum COND_KIND> / (<reg: enum COND_KIND>) ,PHASEN = <integer 1..4> / <var: integer(1)> / (<reg: A(integer(1))>) ,PHASE#1 = structure(4): (1) type: *FILE / *PHASE / *MODULE / <var: enum PROG_TYPE> / (<reg: enum PROG_TYPE>) (2) library: <c-string: filename 1..54> / <var: char(54)> / (<reg: A(char(54))>) (3) element: <c-string: composed-name 1..54> / <var: char(54)> / (<reg: A(char(54))>) (4) version: *ANY / <c-string: composed-name 1..24> / <var: char(24)> / (<reg: A(char(24))>) ,PHASE#2 = siehe PHASE#1 |
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.
Unterstrichene Operandenwerte sind nur bei ACTION=*ADD die voreingestellten Werte. Für ACTION=*MODIFY werden nur die explizit angegebenen Werte geändert; alle anderen bleiben unverändert.
Die Angaben COND_KIND, PROG_TYPE, DIALOG, SUBTYPE und ADMISSION verweisen auf die DSECT des Makros SACMGMT.
MGMTPRE und MGMTMAC
Legen den Präfix fest, der den globalen DSECTS, Konstanten und Gleichsetzungen vorangestellt wird. Dieses Präfix besteht aus den beiden Operanden MGMTPRE und MG-MTMAC, die in dieser Reihenfolge zusammengesetzt werden.
Wenn ein Präfix verwendet wird, muss dieser mit dem bei SACMGMT im Operanden PREFIX übereinstimmen, da sonst Übersetzungsfehler auftreten.
ACTION
legt die auszuführende Aktion fest. Dieser Operand muss bei MF=L angegeben werden. Wird nur ein Parameterbereich verwendet, so muss dieser bei einem Wechsel von *ADD nach *MODIFY oder umgekehrt neu initialisiert werden.
=*ADD
Die Zugriffsbedingung wird hinzugefügt. Dies entspricht dem Kommando /ADD-AC-CESS-CONDITIONS. Existiert das angegebene Guard nicht, wird es durch einen impliziten CREGUAD-Aufruf mit den Standardwerten angelegt.
=*MODIFY
Eine bestehende Zugriffsbedingung wird geändert. Dies entspricht dem SDF-Kommando /MODIFY-ACCESS-CONDITIONS
DIALOG
Im Dialogbetrieb kann der Anwender die Funktion mit Kontrolldialog nutzen. Im Batchbetrieb wird immer DIALOG=*NO angenommen, auch wenn andere Angaben gemacht wurden.
=*STD
Im Dialogbetrieb: *GUARD (siehe dort) Im Batchbetrieb: *NO
=*NO
Die Funktion wird ohne Rückfrage auf jedes der Auswahl entsprechende Guard ausgeführt.
=*GUARD
Der Anwender kann für jedes der Auswahl entsprechende Guard im Dialog entscheiden, wie weiterzuverfahren ist:
NO: Funktion nicht ausführen
YES: Funktion ausführen
TERMINATE: Funktion abbrechen, auch wenn noch weitere Guards bearbeitet werden könnten.
=*USERID
Diesen Kontrolldialog kann nur ein Guard-Administrator verwenden.
Wurden in der Benutzerkennung Musterzeichen verwendet, wird bei jedem Wechsel einer Benutzerkennung ein Dialog eröffnet, in dem bestimmt werden kann, ob die der Auswahl entsprechende Benutzerkennung bearbeitet wird. Der Dialog kann wie bei *GUARD gesteuert werden.
=*CATALOG
Wurden in der Katalogkennung Musterzeichen verwendet, wird bei jedem Wechsel einer Katalogkennung ein Dialog eröffnet, in dem bestimmt werden kann, ob die der Auswahl entsprechende Katalogkennung bearbeitet wird. Der Dialog kann wie bei *GUARD gesteuert werden.
ERRMSG
gibt an, ob Fehlermeldungen am Terminal (*SYSOUT) angezeigt werden.
=*NO
Keine Fehlermeldungsausgabe am Terminal
=*YES
Fehlermeldungsausgabe am Terminal
GUARD
Name des zu bearbeitenden Guard. Der Name darf Musterzeichen enthalten. Es dürfen nur Großbuchstaben verwendet werden. Musterzeichen in der Benutzerkennung sind nur dem Guard-Administrator erlaubt. Dieser Operand muss bei MF=L angegeben werden.
SUBTYPE
Legt den Typ der zu ändernden Subjekte fest.
=*NONE
Es werden keine speziellen Zugriffsbedingungen definiert. Es wird ein Guard vom Typ STDACC eingerichtet.
=*USER
Angabe der Benutzerkennungen, für die die nachfolgende Definition gilt.
=*GROUP
Angabe der Benutzergruppe, für die die nachfolgende Definition gilt.
=*OTHER
Angabe, wie mit allen anderen Benutzern, die weder in der *USER-Liste noch einer der explizit genannten Benutzergruppen enthalten sind, verfahren werden soll.
=*ALLUSER
Einträge bei *ALLUSER werden als letzte ausgewertet, wenn die bis dahin ausgewerteten Bedingungen das Ergebnis „Bedingungen erfüllt“ geben. Bei der Auswertung werden die Zugriffsbedingungen für *USER, *GROUP und *OTHERS mit der von *ALL-USERS über das logische UND verknüpft.
SUBIDS
Bis zu je 20 Einträgen für *USER und *GROUP können explizit mit einem Aufruf eingetragen werden. Sollen Subjekte von diesem Guard verwaltet werden, muss überlegt werden, ob die Zusammenfassung über Gruppen zusammen mit der Definition der Zugriffsbedingung bei *ALLUSER diese Liste soweit verkürzt, dass nur die wirklichen Sonderfälle einzeln eingetragen werden müssen.
ADMISS
Regelt, wie auf das durch das Guard geschützte Objekt zugegriffen werden darf. Ist für *ALLUSER ADMISS=*NO gegeben worden, lautet das Ergebnis der Auswertung immer, dass die Bedingungen nicht erfüllt sind, selbst wenn für einen Benutzer AD-MISS=*YES eingetragen ist.
=*YES
ein Zugriff ist immer erlaubt (sofern durch *ALLUSER überhaupt zugelassen)
=*NO
ein Zugriff ist nie erlaubt
=*PARAMS
Ein Zugriff ist unter bestimmten Bedingungen gestattet, die im folgenden definiert werden
CKTIME
legt fest, wie eine zeitliche Begrenzung in Stunden und Minuten zu werten ist:
=*NO
Die Zeit-Bedingung wird nicht bewertet.
=*ADMISSION
Während der angegebenen Zeit ist der Zugriff erlaubt.
=*EXCLUSION
Während der angegebenen Zeit ist der Zugriff verboten.
TIMEN
Gibt an, wie viele Zeitintervalle definiert werden. Es sind maximal 4 Zeitintervalle möglich.
TIME#1 - TIME#4
Definition je eines Zeitintervalls in Stunden und Minuten. Die Zeit ist in Form von HH:MM immer fünfstellig anzugeben.
CKDATE
legt fest, wie eine zeitliche Begrenzung in Form eines Datums zu werten ist:
=*NO
Die Datumsbedingung wird nicht bewertet.
=*ADMISSION
Während der angegebenen Zeit ist der Zugriff erlaubt.
=*EXCLUSION
Während der angegebenen Zeit ist der Zugriff verboten.
DATEN
Gibt an, wie viele Datumsintervalle definiert werden. Es sind maximal 4 Datumsintervalle möglich.
DATE#1 - DATE#4
Definition je eines Datumsintervalls. Das Datum ist in Form von
JJJJ-MM-DD immer zehnstellig anzugeben. Wird bei einem Datums-Intervall die obere Grenze weggelassen, wird sie mit der unteren gleichgesetzt.
CKWEEK
legt fest, wie eine zeitliche Begrenzung in Form eines Wochentags zu werten ist:
=*NO
Die Wochentagsbedingung wird nicht bewertet.
=*ADMISSION
Während der angegebenen Zeit ist der Zugriff erlaubt.
=*EXCLUSION
Während der angegebenen Zeit ist der Zugriff verboten.
MO, ..., SU
Angabe der Wochentage, an denen die mit CKWEEK festgelegte Zugriffsbedingung gilt. Die Operandennamen haben folgende Bedeutung:
MO: MOnday (Montag)
TU: TUesday (Dienstag)
WE: WEdnesday (Mittwoch)TH: THursday (Donnerstag)FR: FRiday (Freitag)
SA: SAturday (Samstag
SU: SUnday (Sonntag)
=*NO
Der Wochentag hat keinen Einfluss auf eine Zugriffsbedingung.
=*YES
Die Zugriffsbedingung gilt an diesem Wochentag.
CKPRIV
legt fest, wie die Angabe eines Privilegs zu werten ist:
=*NO
Die Privileg-Angabe wird nicht bewertet.
=*ADMISSION
Dem angegebenen Privileg ist der Zugriff erlaubt.
=*EXCLUSION
Dem angegebenen Privileg ist der Zugriff verboten.
ACSADM, ..., VM2ADM
Angabe der Privilegien, an denen die mit CKPRIV festgelegte Zugriffsbedingung gilt:
Die Operandennamen haben folgende Bedeutung:
Operand | Prvileg |
ACSADM | ACS-ADMINISTRATION |
CUPRV001 ... 008 | CUSTOMER-PRIVILEGE-1 ... 8 |
FTADM | FT-ADMINISTRATION |
FTACADM | FTAC-ADMINISTRATION |
GUAADM | GUARD-ADMINISTRATION |
HWMAINT | HARDWARE-MAINTENANCE |
HSMSADM | HSMS-ADMINISTRATION |
NETADM | NET-ADMINISTRATION |
NOTIFADM | NOTIFICATION-ADMINISTRATION |
OPERATG | OPERATING |
POSXADM | POSIX-ADMINISTRATION |
PRSVADM | PRINT-SERVICE-ADMINISTRATION |
PROPADM | PROP-ADMINISTRATION |
SATFEVA | SAT-FILE-EVALUATION |
SATFMGM | SAT-FILE-MANAGEMENT |
SECADM | SECURITY-ADMINISTRATION |
STDPROC | STD-PROCESSING |
SUBSMGM | SUBSYSTEM-MANAGEMENT |
SWMONAD | SW-MONITOR-ADMINISTRATION |
TAPEADM | TAPE-ADMINISTRATION |
TAPEKEYADM | TAPE-KEY-ADMINISTRATION |
TSOS | TSOS |
USERADM | USER-ADMINISTRATION |
VMPRIV | VIRTUAL-MACHINE-ADMINISTRATION |
VM2ADM | VM2000-ADMINISTRATION |
=*NO
Das Privileg hat keinen Einfluss auf eine Zugriffsbedingung.
=*YES
Die Zugriffsbedingung gilt für dieses Privileg.
PHASEN
Gibt an, wie viele Programmdefinition folgen. Es sind maximal 4 Programmdefinitionen möglich. Bei Programmen ist darauf zu achten, dass sie wirksam gegen Änderungen geschützt sind (also nur das Ausführungsrecht für den Benutzer besitzen).
Um Konflikte bei der Verwendung von Modulen des Typs OM oder LLM zu vermeiden, wird empfohlen, die Module in unterschiedlichen Bibliotheken zu halten (siehe auch Handbuch „LMS“ [23]).
PHASE#1 - PHASE#4
Nummerierte Definition für je ein Programm. Jede Programmdefinition kann wie folgt spezifiziert werden:
type
Gibt den Typ des Programmbehälters an
=*FILE
Das Programm ist eine gebundene Phase, die in einer Datei abgelegt ist. Die Operanden element und version werden nicht berücksichtigt.
=*PHASE
Das Programm ist eine gebundene Phase, die in einem Bibliothekselement vom Typ C abgelegt ist.
=*MODULE
Das Programm ist ein Modul oder LLM, das in einem Bibliothekselement vom Typ R oder L abgelegt ist.
library
Name der Bibliothek oder der Datei, die das Programm enthält.
element
Name des Bibliothekselements, das das Programm enthält.
version
Version des Bibliothekselements, das das Programm enthält.
=*ANY
Die Version kann einen beliebigen Wert haben.
Hinweise zur Anwendung
Mit diesem Makro werden Zugriffsbedingungen als ganzes verändert. Jede Zugriffsbedingung besteht aus:
Art der Zugriffsbedingung (Operand beginnt mit CK...)
eine oder mehrere Bedingungen
Werden nicht alle Operanden einer Zugriffsbedingung angegeben, ist zu beachten:
Wird ein Operand, beginnend mit CK..., nicht angegeben, so wird der Standardwert *NO angenommen und alle übrigen Operanden der Zugriffsbedingung nicht berücksichtigt oder, falls vorhanden, auf die Standardwerte (ebenfalls *NO) gesetzt.
Wird beim Operanden CK... der Wert *NO explizit angegeben, werden alle übrigen Operanden der Zugriffsbedingung nicht berücksichtigt oder, falls vorhanden, auf die Standardwerte (ebenfalls *NO) gesetzt.
Alle nicht angegebenen Operanden, die zu einer Bedingung (Operand beginnt mit CK...) gehören, werden mit den Standardwerten belegt.
Wurde als Operandenwert *ADMISSION oder *EXCLUSION angegeben, muss mindestens ein Intervall oder Programm oder Privileg definiert werden.
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 Parameterbereich nicht in der benötigten Länge allokiert oder nicht zugreifbar | |
X’40’ | X’1007’ | Das angegebene Guard existiert nicht | |
X’80’ | X’1009’ | Das angegebene Guard ist von einer anderen Task gesperrt | |
X’02’ | CMD | X’1011’ | Kommando wurde auf Wunsch des Benutzers abgebrochen |
X’40’ | X’1012’ | Der angegebene Katalog ist nicht definiert oder nichtzugreifbar | |
X’40’ | X’1013’ | Das Pubset ist bei der GUARDS-Verwaltung unbekannt (Guardskatalog wurde wahrscheinlich bei IMPORT-PUBSET nicht geöffnet) | |
X’40’ | X’1014’ | Der Benutzer ist nicht autorisiert, die Funktion auszuführen | |
X’40’ | X’1015’ | Das angegebene Subjekt ist nicht im Guard enthalten | |
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’1026’ | Kennung bereits in Bedingung enthalten | |
X’40’ | X’1027’ | Bedingungsbereich voll | |
X’40’ | X’1028’ | Guard hat falschen Typ | |
X’40’ | X’1029’ | GUARDS auf dem fernen Rechner nicht verfügbar | |
X’02’ | X’40’ | X’1035’ | Kommando nicht ausgeführt |
X’80’ | X’1036’ | Guardskatalog gesperrt | |
X’80’ | X’1038’ | Guardskatalog durch ARCHIVE gesperrt |