In einem Guard mit Namen TEST-GUA, das bisher noch nicht existiert, sollen folgende Dateizugriffe für ein Arbeitsteam festgelegt werden:
Den Mitarbeitern ANNE und JOHN sollen Dateizugriffe ohne spezielle Einschränkungen erlaubt sein.
Mitarbeiterin MARY ist Teilzeitkraft. Darum sind für sie Dateizugriffe nur an ihren Arbeitstagen Montag, Mittwoch und Donnerstag erlaubt.
Der externe Mitarbeiter PAUL steht vom 1. Juli 2017 bis 30. September 2017 unter Vertrag. Während dieser Zeit ist auch er zugriffsberechtigt.
Die Mitarbeiter ANNE, JOHN, MARY und PAUL sind von der Systemadministration zur Benutzergruppe WORKTEAM zusammengefasst, der noch weitere Gruppenmitglieder angehören. Die Benutzergruppe REVIEWER umfasst ein Team, das Reviewarbeiten durchführen soll.
Für die Zeitdauer eines gemeinsamen Reviews ist es notwendig, dass die gesamte Gruppe TEAMWORK und die Gruppe REVIEWER Zugriffsrecht erhalten.
Für die Reviews sind folgende Termine angesetzt:
23./24. August 2017 von 09:00 bis 15:00 Uhr
02./03. September 2017 von 09:00 bis 15:00 Uhr
Für alle Zugriffsberechtigten gilt die Zusatzregelung, dass ein Dateizugriff außerhalb der offiziellen Arbeitszeit (Montags bis Freitags von 07:00 bis 19:00) generell nicht gestattet ist.
Lösung
* **************************************************************
* * ---------------------------------------------------------- *
* * *
* * Makro MODSAC: Zugriffsbedingungen hinzufuegen *
* * ============================================= *
* * *
* * ---------------------------------------------------------- *
* **************************************************************
*
GUA1 CSECT
*
* **************************************************************
* * ---------------------------------------------------------- *
* * Makro MOVE *
* * ========== *
* * Aufgabe: Move Parameterbereich PARMACL nach PARMACC. *
* * Zweck: Mit diesem Makro wird vor jedem Aufruf des *
* * Makros MODSAC der in Register 1 zu uebergebende *
* * Parameterbereich PARMACC neu initialisiert. *
* * ---------------------------------------------------------- *
* **************************************************************
*
MACRO
MOVE
LA R@TO,PARMACC
LA R@TOL,PROY#
LA R@FR,PARMACL
LA R@FRL,PROY#
ICM R@FRL,8,=C' '
MVCL R@TO,R@FR
MEND
*
* **************************************************************
*
R@TO EQU 6 Zieladresse
R@TOL EQU 7 Zielfeldlaenge
R@FR EQU 8 Quelladresse
R@FRL EQU 9 Quellfeldlaenge / Fuellzeichen
R@BASE EQU 10 Basisregister
BALR R@BASE,0
USING *,R@BASE
*
* **************************************************************
* * 1. Den Mitarbeitern ANNE und JOHN sollen Dateizugriffe *
* * ohne spezielle Einschraenkungen erlaubt sein. *
* **************************************************************
*
MOVE Parameterinitialisierung
MODSAC MF=M, -
ACTION=*ADD, -
GUARD='TEST-GUA', -
SUBTYPE=*USER, -
SUBIDS=('ANNE ','JOHN '), -
ADMISS=*YES
MODSAC MF=E,PARAM=PARMACC
CLC PROYMRET,=Y(PROPSUCC)
BNE RCNOTOK
*
* **************************************************************
* * 2. Mitarbeiterin MARY ist Teilzeitkraft. Darum sind fuer *
* * sie Dateizugriffe nur an ihren Arbeitstagen *
* * Montag, Mittwoch und Donnerstag erlaubt. *
* **************************************************************
*
MOVE Parameterinitialisierung
MODSAC MF=M, -
ACTION=*ADD, -
GUARD='TEST-GUA', -
SUBTYPE=*USER, -
SUBIDS='MARY ', -
ADMISS=*PARAMS, -
CKWEEK=*ADMISSION, -
MO=*YES, -
WE=*YES, -
TH=*YES
MODSAC MF=E,PARAM=PARMACC
CLC PROYMRET,=Y(PROPSUCC)
BNE RCNOTOK
*
* **************************************************************
* * 3. Der externe Mitarbeiter PAUL steht vom 1. Juli 2017 *
* * bis 30. September 2017 unter Vertrag. Waehrend dieser *
* * Zeit ist auch er zugriffsberechtigt. *
* **************************************************************
*
MOVE Parameterinitialisierung
MODSAC MF=M, -
ACTION=*ADD, -
GUARD='TEST-GUA', -
SUBTYPE=*USER, -
SUBIDS='PAUL ', -
ADMISS=*PARAMS, -
CKDATE=*ADMISSION, -
DATEN=1, -
DATE#1=('2017-07-01','2017-09-30')
MODSAC MF=E,PARAM=PARMACC
CLC PROYMRET,=Y(PROPSUCC)
BNE RCNOTOK
*
* **************************************************************
* * 4. Fuer die Zeitdauer eines gemeinsamer Reviews ist es *
* * notwendig, dass die gesamte Gruppe TEAMWORK und die *
* * Gruppe REVIEWER Zugriffsrecht erhalten. *
* * Fuer die Reviews sind folgende Termine angesetzt: *
* * 23./24. August 2017 von 09:00 bis 15:00 Uhr *
* * 02./03. September 2017 von 09:00 bis 15:00 Uhr *
* **************************************************************
*
MOVE Parameterinitialisierung
MODSAC MF=M, -
ACTION=*ADD, -
GUARD='TEST-GUA', -
SUBTYPE=*GROUP, -
SUBIDS=('TEAMWORK','REVIEWER'), -
ADMISS=*PARAMS, -
CKTIME=*ADMISSION, -
TIMEN=1, -
TIME#1=('09:00','15:00'), -
CKDATE=*ADMISSION, -
DATEN=2, -
DATE#1=('2017-08-23','2017-08-24'), -
DATE#2=('2017-09-02','2017-09-03')
MODSAC MF=E,PARAM=PARMACC
CLC PROYMRET,=Y(PROPSUCC)
BNE RCNOTOK
*
* **************************************************************
* * 5. Fuer alle Zugriffsberechtigten gilt die Zusatzregelung, *
* * dass ein Dateizugriff ausserhalb der offiziellen *
* * Arbeitszeit (Montags bis Freitags von 07:00 bis 19:00) *
* * generell nicht gestattet ist. *
* **************************************************************
*
MOVE Parameterinitialisierung
MODSAC MF=M, -
ACTION=*ADD, -
GUARD='TEST-GUA', -
SUBTYPE=*ALLUSER, -
ADMISS=*PARAMS, -
CKTIME=*ADMISSION, -
TIMEN=1, -
TIME#1=('07:00','19:00'), -
CKWEEK=*EXCLUSION, -
SA=*YES, -
SU=*YES
MODSAC MF=E,PARAM=PARMACC
CLC PROYMRET,=Y(PROPSUCC)
BNE RCNOTOK
*
BE ENDE
*
* **************************************************************
* * Fehlerbehandlung
* **************************************************************
*
RCNOTOK EQU *
* Die moeglichen Returncode-Werte sind im Makro MSGGUAD
* aufgelistet
B ENDE
*
ENDE EQU *
TERM
*
* **************************************************************
* *------------------------------------------------------------*
* * Parameterdeklarationen *
* *------------------------------------------------------------*
* **************************************************************
*
* Dieser Parameterbereichs wird bei Aufruf des Makros MODSAC
* im Register 1 uebergeben.
*
PARMACC DS 0F
MODSAC MF=C
*
* Dieser Parameterbereich wird vor Aufruf des Makros MODSAC
* verwendet, um den Parameterbereich PARMACC neu zu
* initialisieren.
*
PARMACL DS 0F
MODSAC MF=L, -
ACTION=*ADD, -
GUARD=' '
*
* **************************************************************
* *------------------------------------------------------------*
* * Deklarationen der Returncodes *
* *------------------------------------------------------------*
* **************************************************************
*
MSGGUAD MF=D
*
* **************************************************************
* *------------------------------------------------------------*
* * Deklarationen globaler Variablen *
* *------------------------------------------------------------*
* **************************************************************
*
SACMGMT MF=D,XPAND=PARAM
*
END
Ergebnis
Nach Ablauf des Programms hat das erzeugte Guard TEST-GUA folgenden Inhalt:
:PUB1:$TESTUID.TEST-GUA
User ANNE has ADMISSION
User JOHN has ADMISSION
User MARY
Weekday IN ( MO, WE, TH )
User PAUL
Date IN ( <2017-07-01,2017-09-30> )
Group REVIEWER
Time IN ( <09:00,15:00> )
Date IN ( <2017-08-23,2017-08-24> ,
<2017-09-02,2017-09-03> )
Group TEAMWORK
Time IN ( <09:00,15:00> )
Date IN ( <2017-08-23,2017-08-24> ,
<2017-09-02,2017-09-03> )
Alluser
Time IN ( <07:00,19:00> )
Weekday EX ( SA, SU )