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 |
|
|
| |
| |
|
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 |
X'40' | X'6008' | Die Funktion konnte nicht ausgeführt werden: Der angegebene Katalog ist nicht |
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 |
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
ROwner
WOwner
XOthers
ROthers
WOthers
XWRITE
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
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