Loading...
Select Version
&pagelevel(4)&pagelevel
Die Voraussetzungen von Beispiel 1 haben sich folgendermaßen geändert.
Die Mitarbeiterin ANNE hat Urlaub vom 15. Oktober bis 15. November 2017. Während dieser Zeit wird ihr der Dateizugriff verboten.
Die Teilzeitmitarbeiterin MARY verlagert ihre Arbeitszeit auf Montag, Dienstag und Mittwoch.
Der für den 3./4. September vorgesehene Review wird auf den 07./08. September verschoben.
Das in Beispiel 1 erzeugte Guard TEST-GUA soll nun an die neuen Gegebenheiten angepasst werden.
Lösung
* **************************************************************
* * ---------------------------------------------------------- *
* * *
* * Makro MODSAC: Zugriffsbedingungen aendern *
* * ========================================= *
* * *
* * ---------------------------------------------------------- *
* **************************************************************
*
GUA2 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. Die Mitarbeiterin ANNE hat Urlaub vom *
* * 15. Oktober bis 15. November 2017. Waehrend dieser Zeit *
* * wird ihr der Dateizugriff verboten. *
* **************************************************************
*
MOVE Parameterinitialisierung
MODSAC MF=M, -
ACTION=*MODIFY, -
GUARD='TEST-GUA', -
SUBTYPE=*USER, -
SUBIDS=('ANNE '), -
ADMISS=*PARAMS, -
CKDATE=*EXCLUSION, -
DATEN=1, -
DATE#1=('2017-10-15','2017-11-15')
MODSAC MF=E,PARAM=PARMACC
CLC PROYMRET,=Y(PROPSUCC)
BNE RCNOTOK
*
* **************************************************************
* * 2. Die Teilzeitmitarbeiterin MARY verlagert ihre *
* * Arbeitszeit auf Montag, Dienstag und Mittwoch. *
* **************************************************************
*
MOVE Parameterinitialisierung
MODSAC MF=M, -
ACTION=*MODIFY, -
GUARD='TEST-GUA', -
SUBTYPE=*USER, -
SUBIDS='MARY ', -
ADMISS=*PARAMS, -
CKWEEK=*ADMISSION, -
MO=*YES, -
TU=*YES, -
WE=*YES
MODSAC MF=E,PARAM=PARMACC
CLC PROYMRET,=Y(PROPSUCC)
BNE RCNOTOK
*
* **************************************************************
* * 3. Der fuer den 2./3. September vorgesehene Review wird *
* * auf den 09./10. September verschoben. *
* * *
* * Hinweis: *
* * Der Wert fuer DATE#1 muss angegeben werden, weil die *
* * Zugriffsbedingungen DATE nur als Ganzes geaendert werden *
* * kann. Das Aendern einzelner Datumsintervalle ist nicht *
* * moeglich. *
* **************************************************************
*
MOVE Parameterinitialisierung
MODSAC MF=M, -
ACTION=*MODIFY, -
GUARD='TEST-GUA', -
SUBTYPE=*GROUP, -
SUBIDS=('TEAMWORK','REVIEWER'), -
ADMISS=*PARAMS, -
CKDATE=*ADMISSION, -
DATEN=2, -
DATE#1=('2017-08-23','2017-08-24'), -
DATE#2=('2017-09-09','2017-09-10')
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=*MODIFY, -
GUARD=' '
*
* **************************************************************
* *------------------------------------------------------------*
* * Deklarationen der Returncodes *
* *------------------------------------------------------------*
* **************************************************************
*
MSGGUAD MF=D
*
* **************************************************************
* *------------------------------------------------------------*
* * Deklarationen globaler Variablen *
* *------------------------------------------------------------*
* **************************************************************
*
SACMGMT MF=D,XPAND=PARAM
*
END
Ergebnis
Nach Ablauf des Programms hat das geänderte Guard TEST-GUA folgenden Inhalt:
:PUB1:$TESTUID.TEST-GUA
User ANNE
Date EX ( <2017-10-15,2017-11-15> )
User JOHN has ADMISSION
User MARY
Weekday IN ( MO, TU, WE )
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-09,2017-09-10> )
Group TEAMWORK
Time IN ( <09:00,15:00> )
Date IN ( <2017-08-23,2017-08-24> ,
<2017-09-09,2017-09-10> )
Alluser
Time IN ( <07:00,19:00> )
Weekday EX ( SA, SU )