Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Beispiel 2: Zugriffsbedingungen ändern

&pagelevel(4)&pagelevel

Die Voraussetzungen von Beispiel 1 haben sich folgendermaßen geändert.

  1. Die Mitarbeiterin ANNE hat Urlaub vom 15. Oktober bis 15. November 2017. Während dieser Zeit wird ihr der Dateizugriff verboten.

  2. Die Teilzeitmitarbeiterin MARY verlagert ihre Arbeitszeit auf Montag, Dienstag und Mittwoch.

  3. 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 )