Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

CHKSAC Zugriffsbedingungen auswerten

Mit diesem Makro wird GUARDS aus einem Programm heraus aufgerufen, um eine Bedingungsauswertung durchzuführen. Das Programm wird damit zu einer Objektverwaltung. GUARDS kann dann zum Schutz der Objekte des Programms eingesetzt werden.

Makro

Operanden

CHKSAC

MF = D / L / C / M / E

,PREFIX = P / <name 1>

,MACID = ROV / <name 3>

,PARAM =<name 1..8>

,GUARD = <c-string: filename 1..24 without-gen-vers> / <var: char(24)> / (<reg: A(char(24))>)

,OBJOWN = *OWN / <c-string: name 1..8> / <var: char(8)> / (<reg: A(char(8))>)

,ACCTSN = *OWN / <c-string: name 1..4> / <var: char(4)> / (<reg: A(char(4))>)

,ACCUID = *OWN / <c-string: name 1..8> / <var: char(8)> / (<reg: A(char(8))>)

,EVAL * = *ACCESS / *SHOW / <var: enum EVAL> / (<reg: enum EVAL>)

,TIME = *NO / *YES

,DATE = *NO / *YES

,WEEKDAY = *NO / *YES

,PRIV = *NO / *YES

,PROG = *NO / *YES

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.

GUARD

Name des Guards, mit dem die Bedingung geprüft wird. Der Name darf nur aus Großbuchstaben bestehen.

OBJOWN

Eigentümer des Objekts, das durch das Guard geschützt ist. Mit *OWN ist die eigene Benutzerkennung voreingestellt.

Die beiden folgenden Operanden ACCTSN und ACCUID können nur alternativ angegeben werden.

ACCTSN

TSN der Task, die den Zugriff durchführt. Mit *OWN ist die eigene TSN voreingestellt.

ACCUID

Benutzerkennung, für die eine Zugriffsüberprüfung durchgeführt wird. Die Kennung muss existieren. Diese Angabe ist nur aus Programmen erlaubt, die unter einer Task mit TSOS-Privileg laufen. Mit *OWN ist die eigene Benutzerkennung voreingestellt.

EVAL

Legt fest, wie überprüft wird. Dieser Operand ist bei MF=L Pflichtoperand.

=*ACCESS

Es wird überprüft, ob ein Zugriff auf das durch GUARDS zu schützende Objekt zugelassen ist.

=*SHOW

Es wird überprüft, ob der Benutzer das Guard sehen darf. Zu schützende Objekte sind hiervon unberührt. Es wird überprüft, ob der Zugriff immer oder nur unter bestimmten Umständen erlaubt ist.
*SHOW führt dazu, dass die folgenden Parameter dieses Makros nicht ausgewertet werden.

TIME

Festlegung, ob eine Zeitbedingung ignoriert wird:

=*NO

Zeitbedingung nicht ignorieren

=*YES

Zeitbedingung ignorieren

DATE

Festlegung, ob eine Datumsbedingung ignoriert wird:

=*NO

Datumsbedingung nicht ignorieren

=*YES

Datumsbedingung ignorieren

WEEKDAY

Festlegung, ob eine Wochentagsbedingung ignoriert wird:

=*NO

Wochentagsbedingung nicht ignorieren

=*YES

Wochentagsbedingung ignorieren

PRIV

Festlegung, ob eine Privilegsbedingung ignoriert wird:

=*NO

Privilegsbedingung nicht ignorieren

=*YES

Privilegsbedingung ignorieren

PROG

Festlegung, ob eine Programmbedingung ignoriert wird:

=*NO

Programmbedingung nicht ignorieren

=*YES

Programmbedingung ignorieren

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’40’

X’1012’

Der angegebene Katalog ist nicht definiert oder nicht zugreifbar


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’1019’

Zugreifende Benutzerkennung unbekannt


X’40’

X’1020’

Kein Speicher mehr vorhanden


X’40’

X’1024’

Nutzung des Guards nicht zugelassen

Beispiel

Dieses Beispiel zeigt, wie ein Programmteil mit GUARDS geschützt werden kann.

Im Programm sind Teile enthalten, die nur bestimmten Programmbenutzern zugänglich sein sollen. Im Programm muss hinterlegt werden, welche Programmteile durch welche Guards geschützt werden sollen.

Für den Schutz der Programmteile müssen die entsprechenden Guards erstellt werden, um dann vor der Ausführung des Programmteils durch den CHKSAC-Aufruf geprüft werden zu können.

So wird ermittelt, ob die im Guard definierten Bedingungen für den Benutzer erfüllt sind oder nicht.

Beispiel für den Schutz eines Programmteils mit Hilfe von GUARDS über den Makro CHKSAC
BSPL     CSECT
R10      EQU   10
         BALR  R10,0
         USING *,R10
*        ***************************************************
*                                                          *
*        DER PARAMETERBEREICH WIRD VOR JEDEM MF=E-AUFRUF   *
*        WIEDER MIT DEM ANFANGSINHALT VERSORGT:            *
*                                                          *
         MVC   PARAMFC(PROV#),PARAMFL
*                                                          *
*        UND FALLS ERFORDERLICH GEAENDERT:                 *
*                                                          *
         CHKSAC MF=M,GUARD=GUARDNAM
*                                                          *
*        ***************************************************
*                                                          *
*        AUSFUEHRUNG DES MACRO:
*                                                          *
         CHKSAC MF=E,PARAM=PARAMFC
*                                                          *
*        ***************************************************
*                                                          *
*        ABFRAGE DES RETURNCODES:                          *
*                                                          *
         CLC   PROVMRET,=Y(PRMTSUCC)
         BNE   RCNOTOK
*                                                          *
*        ***************************************************
*                                                          *
*        ABFRAGE DES ERGEBNISSES:                          *
*                                                          *
         CLI   PROVCHKR,PROVCYES
         BNE   BSPLNO
*                                                          *
*        ***************************************************
*        DIESER TEIL DES PROGRAMS IST GESCHUETZT UND WIRD  *
*        NUR DANN AUSGEFUEHRT, WENN ES DURCH DAS GUARD     *
*        MYGUARD ERLAUBT WIRD                              *
*                                                          *
         MVC   TEXT,OKTEXT
         B     ENDE
*                                                          *
*        ***************************************************
BSPLNO   EQU   *

*        WENN GUARD MYGUARD DIE AUSFUEHRUNG DES GESCHUETZTEN
*        PROGRAMTEILS NICHT ERLAUBT, WIRD DIESER TEIL      *
*        DURCHGEFUEHRT                                     *
*                                                          *
         B     ENDE
*                                                          *
*        ***************************************************
*                                                          *
RCNOTOK  EQU   *
*        FEHLERBEHANDLUNG DES FEHLERHAFTEN RETURNCODE      *
*        WIE SOLL FORTGESETZT WERDEN, HAENGT VON DER       *
*        AUFGABE AB.                                       *
*        FALLS WEITERGEMACHT WERDEN SOLL                   *
*        (DAS KANN Z.B. BEI 1007 SINNVOLL SEIN),           *
*        SO SOLLTE DER GESCHUETZTE PROGRAMTEIL NICHT       *
*        DURCHLAUFEN WERDEN                                *
         MVC   TEXT,RCTEXT
         B     ENDE
*                                                          *
*        ***************************************************
*                                                          *
ENDE     EQU   *
         WROUT MELDUNG,WRFEHL
WRFEHL   EQU   *
         TERM
*                                                          *
*        ***************************************************
*                                                          *
*        DER PARAMETERBEREICH (BEIM MACROAUFRUF IST        *
*        DIE ADRESSE PARAMFC IM REGISTER 1 :               *
PARAMFC  DS    0F
         CHKSAC MF=C
*                                                          *
*        ***************************************************
*                                                          *
*        DER BEREICH PARAMFL BLEIBT UNVERAENDERT WAEHREND  *
*        DES GANZEN PROGRAMLAUFS (IM NORMALFALL) UND WIRD  *
*        VOR JEDEM MF=E-AUFRUF DES MACROS IN DEN PARAMETER-*
*        BEREICH (PARAMFC) UEBERTRAGEN (S. MVC OBEN)       *
*                                                          *
PARAMFL  DS    0F
         CHKSAC EVAL=*ACCESS,MF=L
*                                                          *
*        ***************************************************
*                                                          *
*        DER WERT EINES ZU MODIFIZIERENDEN PARAMETERS:     *
*                                                          *
GUARDNAM DC    CL24'MYGUARD'

*                                                          *
*        ***************************************************
*                                                          *
MELDUNG  DC    Y(MELDENDE-MELDUNG)
         DS    CL2
         DC    X'01'
TEXT     DC   'ZUGRIFFSBEDINGUNGEN IN MYGUARD: ZUGRIFF NICHT GESTATTET'
MELDENDE EQU   *
OKTEXT   DC    'ZUGRIFFSBEDINGUNGEN IN MYGUARD: ZUGRIFF GESTATTET'
RCTEXT   DC    '.....  RETURN CODE UNGLEICH 0000   .....             '
*                                                          *
*        ***************************************************
*                                                          *
*        DIE NAMEN (EQUATES) FUER RETURN CODE WERTE  SIND  *
*        IN DER FOLGENDEN DSECT VORHANDEN                  *
*                                                          *
         MSGGUAD MF=D
*                                                          *
*        FALLS NOETIG KOENNEN DIE NAMEN IM PARAMETERBEREICH
*        ALS DSECT GENERIERT WERDEN, JEDOCH WEGEN DER      *
*        GLEICHZEITIGEN BENUTZUNG VON MF=C, MUESSEN DIE    *
*        NAMEN EINEN ANDEREN PREFIX HABEN                  *
*                                                          *
         CHKSAC MF=D,PREFIX=X
*                                                          *
*        ***************************************************
         END


Prozedur zum Aufruf des Beispielprogramms
/PROC A,(&BIBL),SUBDTA=
/REMARK DAS BEISPIELPROGRAM BSPL IST IN DER BIBLIOTHEK BIBL
/DELETE-GUARD MYGUARD
/STEP
/ADD-ACCESS-CONDITION MYGUARD,SUBJECT=USER(($SYSJV.USERID)), ADM=NO
/START-PROGRAM *P(&BIBL.,BSPL)
/REMARK FOLGENDER TEXT WURDE VOM BSPL AUSGEGEBEN:
/REMARK ZUGRIFFSBEDINGUNGEN IN MYGUARD: ZUGRIFF NICHT GESTATTET
/MOD-ACCESS-CONDITION MYGUARD,SUBJECT=USER( ($SYSJV.USERID)),ADM=YES ?
/START-PROGRAM *P(&BIBL.,BSPL)
/REMARK FOLGENDER TEXT WURDE VOM BSPL AUSGEGEBEN:
/REMARK ZUGRIFFSBEDINGUNGEN IN MYGUARD: ZUGRIFF GESTATTET
/ENDP