Mithilfe von drei Exitpunkten kann die Anwendung der Systemfunktion „OPEN = Datei Eröffnen“ gesteuert und überwacht werden. Dabei ist es gleichgültig, ob der OPEN aus einem Programm des Benutzers, einem Dienstprogramm (z.B. LMS, EDT) oder der Bearbeitung eines Systemkommados (z.B. START-PROGRAM) stammt.
Am Security-Exit (039) kann die Systembetreuung den OPEN-Aufruf zurückweisen, bevor er ausgeführt ist.
Am Request Exit (041) kann die Systembetreuung den OPEN-Aufruf zurückweisen, bevor er ausgeführt wird. Die zu öffnende Datei ist entweder aus der Task File Table oder dem FCB zu bestimmen.
Am Return Exit (040) ist die Datei bereits eröffnet. Die Exit-Routine kann das Eröffnen nicht mehr verhindern oder rückgängig machen. Alle Funktionen des Return Exits können auch vom Security-Exit übernommen werden.
Folgende Informationen werden an die Exit-Routine übergeben:
R1 = A($DOCSYS-Parameterbereich) R12 = A(TPR Program Manager) R13 = A(Sicherungsbereich der rufenden Komponente) R14 = A(indirekter Rücksprung) R15 = A(Exit-Routine)
Hinweise
Die Register 12, 13 und 14 dürfen von der Exit-Routine nicht zerstört werden.
Die Exits 039/040 können in Abhängigkeit vom Wert des AUDIT-Anzeigers im Katalogeintrag Überwachungsmaßnahmen durchführen (siehe „Überwachung von Dateizugriffen“).
Wenn die Exits 039/040 angesprungen werden, hat das Datenverwaltungssystem von BS2000 die Datei bereits eröffnet. In den Exits 039 und 041 ist der Katalogeintrag für die eröffnete Datei noch gesperrt.
Falls die Exit-Routine auf Grund eines Programmierfehlers „hängt“ oder „schleift“, ohne sich fehlerhaft zu beenden (dies hätte Abnormal Task Termination und Freigabe der Datei zur Folge), bleibt die Datei bis zum Ende des Systemlaufs gesperrt.Im Exit 040 ist der Katalogeintrag für die eröffnete Datei bereits freigegeben.
Die Exit-Routine darf selbst wieder Dateien eröffnen! Probleme, die sich aus einer solchen rekursiven Aufrufverschachtelung ergeben, müssen von der Exit-Routine selbst abgefangen werden.
Für Banddateien kann unter der Benutzerkennung TSOS mithilfe dieser Exits über entsprechende Exit-Routinen die Verwendung von Bändern kontrolliert/registriert und somit eine eigene Bandverwaltung realisiert werden.
Wird der OPEN abgewiesen, erhält der Benutzer die Meldung DMS0D10 auf SYSOUT, bzw. den Fehlercode X'0D10' im Feld ID1ECB des FCB:
% DMS0D10 BENUTZUNG DES OPEN-MAKROS WURDE VON DEM SYSTEMADMINISTRATOR EINGESCHRAENKT. Die aktivierte System-EXIT-Routine hat den OPEN abgewiesen. Das Programm wird mit dem EXLST-Ausgang 'OPENER' fortgesetzt, wenn dieser definiert ist, ansonsten abgebrochen.
Bei einem Fehler des Exit-Basismechanismus, wird am Bedienplatz die Meldung DMS0D15 ausgegeben. Danach geht die Verarbeitung weiter.
% DMS0D15 AUFRUF DES BASISMECHANISMUS FUER DEN SYSTEM EXIT '(&00)' LIEFERT FEHLERCODE '(&01)' (&00): EXIT-Nummer. (&01): Fehlercode der $SYSX-Schnittstelle.
Exit-Routinen und EXLST-Ausgänge
Die obenbeschriebenen Exit-Routinen und die bei der OPEN-Verarbeitung anschließbaren EXLST-Ausgänge werden, falls vorhanden, in der nachfolgend gezeigten Reihenfolge aktiviert.
Parameterbereich
Das Layout des Exit-Parameterbereichs kann mit dem Makro $DOCSYS generiert werden.
$DOCSYS MF=D MFTST MF=D,PREFIX=D,MACID=OCS,ALIGN=F, C DMACID=OCS,SUPPORT=(D,C,M,L),DNAME=OCS_MDL DOCS_MDL DSECT , *,##### PREFIX=D, MACID=OCS ##### * parameterarea description DOCSHDR FHDR MF=(C,DOCS),EQUATES=NO Standardheader DOCSHDR DS 0A DOCSFHE DS 0XL8 0 GENERAL PARAMETER AREA HEADER * DOCSIFID DS 0A 0 INTERFACE IDENTIFIER DOCSFCTU DS AL2 0 FUNCTION UNIT NUMBER * BIT 15 HEADER FLAG BIT, * MUST BE RESET UNTIL FURTHER NOTICE * BIT 14-12 UNUSED, MUST BE RESET * BIT 11-0 REAL FUNCTION UNIT NUMBER DOCSFCT DS AL1 2 FUNCTION NUMBER DOCSFCTV DS AL1 3 FUNCTION INTERFACE VERSION NUMBER * DOCSRET DS 0A 4 GENERAL RETURN CODE DOCSSRET DS 0AL2 4 SUB RETURN CODE DOCSSR2 DS AL1 4 SUB RETURN CODE 2 DOCSSR1 DS AL1 5 SUB RETURN CODE 1 DOCSMRET DS 0AL2 6 MAIN RETURN CODE DOCSMR2 DS AL1 6 MAIN RETURN CODE 2 DOCSMR1 DS AL1 7 MAIN RETURN CODE 1 DOCSFHL EQU 8 8 GENERAL OPERAND LIST HEADER LENGTH * * main return codes DOCSNOER EQU 0 no error detected DOCSRREJ EQU 4 request rejected * DOCSFCB@ DS A address of P1-FCB DOCS# EQU *-DOCSHDR
Security Exit (039)
Die Rückinformation an den aufrufenden Systemmodul wird im Standard-Header des $DOCSYS-Parameterbereichs im Feld DOCSMRET übergeben.
Returncode: DOCSNOER = X'0000' = kein Fehler
Returncode: DOCSRREJ = X'0004' = OPEN soll abgewiesen werden
Der Security-Exit wird nicht angesprungen, wenn ein OPEN wegen eines ungültigen Dateinamens abgewiesen wird.
Return Exit (040)
Der Return Exit wird auch dann angesprungen, wenn ein OPEN wegen eines ungültigen Dateinamens abgewiesen wird.
Die Exit-Routine kann keine Rückkehrinformation an den Systemmodul senden.
Request Exit (041)
Die Rückkehrinformation an den aufrufenden Systemmodul wird im Standard-Header des $DOCSYS-Parameterbereichs im Feld DOCSMRET übergeben.
Returncode: DOCSNOER = X'0000' = kein Fehler
Returncode: DOCSRREJ = X'0004' = OPEN soll abgewiesen werden