Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

CHKFAR - Zugriffsrechte auf Datei überprüfen

Makrotyp: S-Typ (E-Form/L-Form/D-Form/C-Form/M-Form) (siehe "Typen von Makroaufrufen")

Der Makro CHKFAR überprüft eine im Aufruf angegebene Datei auf ihre Schutzmerkmale und informiert den Aufrufer darüber, welche Zugriffsrechte auf diese Datei er besitzt. Der Anwender kann dabei wählen,

  • ob ihm alle Zugriffsmöglichkeiten angezeigt werden, die ihm für diese Datei zur Verfügung stehen (ohne Berücksichtigung eines möglichen Passwortschutzes oder einer Schutzfrist) oder

  • ob er Informationen über ein spezielles Zugriffsrecht erhält (unter Einbeziehung eines möglichen Passwortschutzes oder einer Schutzfrist für diese Datei).

Die Informationen werden dem Aufrufer in einem Ausgabebereich der Operandenliste übergeben.

Bei privaten Dateien wertet der Makro CHKFAR nur die Informationen aus dem Benutzerkatalog und nicht aus dem F1-Label aus.

Bei Banddateien wertet der Makro CHKFAR nur die Informationen aus dem Benutzerkatalog und nicht aus dem Header-Satz auf dem Band aus.

Format

Operation

Operanden

CHKFAR

,FILE = 'pfadname' / adr1 / (r)

,ACCESS = *ANY / *READ / *WRITE / *UPDATE / *DELETE / *EXEC /
          adr2

MF = L / M

MF = E,PARAM = adr / (r)

MF = D,[,PREFIX = pre]

MF = C,[,PREFIX = pre][,MACID = macid]

Operandenbeschreibung

FILE

Bezeichnet die Datei, für die der Aufrufer seine Zugriffsrechte erfahren oder überprüfen will.

= pfadname
bezeichnet die Datei, deren Zugriffsrechte überprüft werden sollen, mit:
<c-string 1..54: filename 1..54>

Pfadname bedeutet [:catid:][$userid.]dateiname

catid
Katalogkennung: Falls nicht angegeben, wird die Default-Catid der Benutzerkennung angenommen.

userid
Benutzerkennung: Falls nicht angegeben, wird die Benutzerkennung des SET-LOGON-PARAMETERS- bzw. des LOGON-Kommandos angenommen.

dateiname
vollqualifizierter Dateiname

= adr1
adr1 ist die symbolische Adresse (der Name) eines 54 Byte langen Feldes im Anwenderprogramm, das den Pfadnamen der zu überprüfenden Datei enthält.

= (r)
r ist die Nummer eines Registers, das die Adresse des Feldes adr1 enthält. Vor dem Makroaufruf muss das Register mit diesem Adresswert geladen werden.

ACCESS

Legt fest, ob sämtliche Zugriffsrechte des Anwenders für die angegebene Datei ausgegeben werden oder ob die Datei auf einzelne Zugriffsrechte des Anwenders hin überprüft wird. Die Informationen werden in einem Ausgabebereich der Operandenliste übergeben.

= *ANY
In einem Ausgabebereich der Operandenliste werden Informationen über sämtliche Zugriffsrechte hinterlegt, die der Aufrufer auf die angegebene Datei hat. Mögliche weitere Schutzmerkmale der Datei wie Passwörter und Schutzfristen werden dabei nicht ausgewertet.

= *READ
Es wird überprüft, ob der Aufrufer die angegebene Datei lesen darf. Dabei wird auch ein möglicher Passwortschutz der Datei berücksichtigt.

= *WRITE
Es wird überprüft, ob der Aufrufer in die angegebene Datei schreiben darf. Dabei wird auch ein möglicher Passwortschutz oder eine Schutzfrist der Datei berücksichtigt.

= *UPDATE
Es wird überprüft, ob der Aufrufer die angegebene Datei lesen und in sie schreiben darf. Dabei wird auch ein möglicher Passwortschutz oder eine Schutzfrist der Datei berücksichtigt.

= *DELETE
Es wird überprüft, ob der Aufrufer die angegebene Datei löschen darf. Dabei wird auch ein möglicher Passwortschutz oder eine Schutzfrist der Datei berücksichtigt.

= *EXEC
Es wird überprüft, ob der Aufrufer die angegebene Datei ausführen darf. Dabei wird auch ein möglicher Passwortschutz der Datei berücksichtigt.

MACID

legt jeweils das zweite bis einschließlich vierte Zeichen der Feldnamen und Equates fest, die bei der Makroauflösung generiert werden.

Voreinstellung:          MACID = RMZ

= macid
„macid“ ist eine drei Zeichen lange Zeichenfolge, die jeweils das zweite bis vierte Zeichen der generierten Feldnamen und Equates festlegt.

PARAM

bezeichnet die Adresse der Operandenliste und wird nur in Verbindung mit MF=E ausgewertet (siehe auch "Typen von Makroaufrufen").

= adr
adr ist die symbolische Adresse (der Name) der Operandenliste.

= (r)
r ist die Nummer des Registers, das die Adresse der Operandenliste enthält. Vor dem Makroaufruf muss das Register mit diesem Adresswert geladen werden.

PREFIX

legt das jeweils erste Zeichen der Feldnamen und Equates fest, die bei der Makroauflösung generiert werden.

Voreinstellung:         PREFIX = S

= pre
„pre“ ist ein Zeichen langes Präfix, mit dem die generierten Feldnamen und Equates beginnen sollen.

Returncodes

Standardheader: 00bbaaaa

Über die Ausführung des Makros CHKFAR wird im Standardheader folgender Returncode übergeben (bb = SUBCODE1, aaaa = MAINCODE):

X'bb'

X'aaaa'

Erläuterung

X'00'

X'0000'

Funktion erfolgreich ausgeführt.

X'01'

X'6000'

Die Funktion konnte nicht ausgeführt werden: Ungültiger Wert in der Operandenliste.

X'40'

X'6001'

Die Funktion konnte nicht ausgeführt werden: Die angegebene Datei ist nicht
im Katalog verzeichnet.

X'40'

X'6008'

Die Funktion konnte nicht ausgeführt werden: Der angegebene Katalog ist nicht
bekannt oder nicht verfügbar.

X'20'

X'6014'

Die Funktion konnte nicht ausgeführt werden: Systemfehler.

X'40'

X'6021'

BCAM-Verbindungsfehler

X'40'

X'6022'

BCAM-Verbindung unterbrochen

X'01'

X'6040'

Die Funktion konnte nicht ausgeführt werden: Die Operandenliste ist nicht in der
erforderlichen Länge verfügbar oder zugewiesen.

Weitere Returncodes, deren Bedeutung durch Konvention makroübergreifend festgelegt ist, können der Tabelle auf "Standardheader" (Standardheader) entnommen werden.

Das aufrufende Programm wird beendet, wenn bezüglich der Parameterliste folgende Fehler auftreten:

  • Die Liste ist dem Aufrufer nicht zugewiesen.

  • Die Liste ist nicht auf Wortgrenze ausgerichtet.

  • Die Liste ist gegen Schreibzugriff geschützt.

Beschreibung der Ausgabefelder

  • Bei ACCESS = *ANY werden die folgenden Informationen zurückgegeben:

    Zugriffsrechte: die Zugriffsrechte, die der Aufrufer für die Datei besitzt.
    Passwörter und die Schutzfrist werden nicht berücksichtigt.
    • Ist Zugriffsschutz über GUARDS festgelegt, so werden die Guards für den Zugreifer ausgewertet.

    • Ist eine BASIC-ACL gültig, werden die Werte aus dem für den Aufrufer gültigen Eintrag genommen.

    • Ist SHARE/ACCESS gültig, werden die Werte wie folgt gesetzt:

      ACCESS

      SHARE

      Owner
      R

      Owner
      W

      Owner
      X

      Others
      R

      Others
      W

      Others
      X

      WRITE

      NO

      Y

      Y

      Y

      N

      N

      N

      WRITE

      YES

      Y

      Y

      Y

      Y

      Y

      Y

      READ

      NO

      Y

      N

      Y

      N

      N

      N

      READ

      YES

      Y

      N

      Y

      Y

      N

      Y

      Legende:         R: READ, W: WRITE, X: EXECUTE, Y: YES, N: NO

    Wenn die zu überprüfende Datei existiert, der Aufrufer jedoch keine Zugriffsrechte auf diese Datei besitzt, liefert der Makro CHKFAR den Returncode null und die Zugriffsrechte im Feld ACCESS-RIGHTS.
  • Bei ACCESS = *READ/*WRITE/*UPDATE/*DELETE/*EXEC:

    CHECK-RESULT: gibt an, ob der erwünschte Zugriff erlaubt ist oder nicht.

Layout der Operandenliste

(Makroauflösung mit MF=D und Standardwerten für PREFIX und MACID)

           CHKFAR MF=D
1          MFCHK MF=D,PREFIX=S,MACID=RMZ,PARAM=,                         C
1                SUPPORT=(C,D,E,L,M),DMACID=RMZ,SVC=8
2 SRMZ     DSECT ,
2                *,##### PREFIX=S, MACID=RMZ #####
1 ******************************************************************
1 *               CHKFAR  - PARAMETERAREA                          *
1 ******************************************************************
1          #INTF REFTYPE=REQUEST,INTNAME=CHKFAR,INTCOMP=001
1 *
1 SRMZPA     DS    0F          BEGIN of PARAMETERAREA           _INOUT
1 *
1          FHDR  MF=(C,SRMZ),EQUATES=NO
2          DS    0A
2 SRMZFHE  DS    0XL8            0   GENERAL PARAMETER AREA HEADER
2 *
2 SRMZIFID DS    0A              0   INTERFACE IDENTIFIER
2 SRMZFCTU DS    AL2             0   FUNCTION UNIT NUMBER
2 *                                  BIT 15    HEADER FLAG BIT,
2 *                                  MUST BE RESET UNTIL FURTHER NOTICE
2 *                                  BIT 14-12 UNUSED, MUST BE RESET
2 *                                  BIT 11-0  REAL FUNCTION UNIT NUMBER
2 SRMZFCT  DS    AL1             2   FUNCTION NUMBER
2 SRMZFCTV DS    AL1             3   FUNCTION INTERFACE VERSION NUMBER
2 *
2 SRMZRET  DS    0A              4   GENERAL RETURN CODE
2 SRMZSRET DS    0AL2            4   SUB RETURN CODE
2 SRMZSR2  DS    AL1             4   SUB RETURN CODE 2
2 SRMZSR1  DS    AL1             5   SUB RETURN CODE 1
2 SRMZMRET DS    0AL2            6   MAIN RETURN CODE
2 SRMZMR2  DS    AL1             6   MAIN RETURN CODE 2
2 SRMZMR1  DS    AL1             7   MAIN RETURN CODE 1
2 SRMZFHL  EQU   8               8   GENERAL OPERAND LIST HEADER LENGTH
2 *
1 *
1 SRMZACC  DS    XL1            ACCESS                               001
1 SRMZANY  EQU   0                = *ANY                             001
1 SRMZREA  EQU   1                = *READ                            001
1 SRMZWRI  EQU   2                = *WRITE                           001
1 SRMZUPD  EQU   3                = *UPDATE                          001
1 SRMZDEL  EQU   4                = *DELETE                          001
1 SRMZEXE  EQU   5                = *EXEC                            001
1 *
1 SRMZFILE DS    CL54           FILE   = pathname                    001
1 *
1 SRMZRIF  DS    XL1            RETURN_INFO                          001
1 * Here after: ACCESS_RIGHTS bits returned when ACCESS = *ANY
1 SRMZARR  EQU   X'80'            READ                               001
1 SRMZARW  EQU   X'40'            WRITE                              001
1 SRMZARE  EQU   X'20'            EXEC                               001
1 SRMZARU  EQU   X'1F'            UNUSED                             001
1 * Here after: AUTHORIZATION bin-value returned when ACCESS NE *ANY
1 SRMZALW  EQU   0                ALLOWED                            001
1 SRMZFBD  EQU   1                FORBIDDEN                          001
1 *
1 SRMZUNU  DS    XL4            -- MUST BE ZERO --                   001
1 SRMZPA#  EQU   *-SRMZPA       LENGTH OF PARAMETERAREA              001