Loading...
Select Version
&pagelevel(4)&pagelevel
Das im Beispiel 1 erzeugte und in Beispiel 2 geänderte Guard TEST-GUA muss ein weiteres Mal geändert werden:
Der Mitarbeiter JOHN verlässt die Firma. Seine Zugriffsbedingungen sollen aus dem Guard entfernt werden.
Lösung
* **************************************************************
* * ---------------------------------------------------------- *
* * *
* * Makro REMSAC: Zugriffsbedingungen entfernen *
* * =========================================== *
* * *
* * ---------------------------------------------------------- *
* **************************************************************
*
GUA3 CSECT
*
* **************************************************************
* * ---------------------------------------------------------- *
* * Makro MOVE *
* * ========== *
* * Aufgabe: Move Parameterbereich PARRACL nach PARRACC. *
* * Zweck: Mit diesem Makro wird vor jedem Aufruf des *
* * Makros REMSAC der in Register 1 zu uebergebende *
* * Parameterbereich PARRACC neu initialisiert. *
* * ---------------------------------------------------------- *
* **************************************************************
*
MACRO
MOVE
LA R@TO,PARRACC
LA R@TOL,PROX#
LA R@FR,PARRACL
LA R@FRL,PROX#
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. Der Mitarbeiter JOHN verlaesst die Firma. Seine *
* * Zugriffsbedingungen werden aus dem Guard entfernt. *
* **************************************************************
*
MOVE Parameterinitialisierung
REMSAC MF=M, -
GUARD='TEST-GUA', -
SUBTYPE=*USER, -
SUBIDS=('JOHN ')
REMSAC MF=E,PARAM=PARRACC
CLC PROXMRET,=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 REMSAC
* im Register 1 uebergeben.
*
PARRACC DS 0F
REMSAC MF=C
*
* Dieser Parameterbereich wird vor Aufruf des Makros REMSAC
* verwendet, um den Parameterbereich PARRACC neu zu
* initialisieren.
*
PARRACL DS 0F
REMSAC MF=L, -
SUBTYPE=*USER, -
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 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 )