Für die Systemfunktion „CLOSE = Dateien schließen“ werden zwei Exits angeboten. 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.
Der Request Exit wird zu Beginn der CLOSE-Verarbeitung angestoßen. Bei Banddateien ist das Band hinter dem letzten verarbeiteten Datenblock positioniert, Dateiendekennsätze sind noch nicht bearbeitet.
Die Return Exit-Routine wird am Ende der CLOSE-Verarbeitung aufgerufen. Bei Banddateien ist das Band zwischen den beiden Abschnittsmarken positioniert, die das Dateiende kennzeichnen; bei Bändern mit Standardkennsätzen liegt diese Stelle hinter den EOF-Kennsätzen.
In beiden Fällen wird die Adresse des Exit-Parameterbereichs übergeben. Damit ist es möglich, auf weitere Informationen aus dem P1-FCB, P2-FCB oder der CVT (Current Volume Table) zuzugreifen.
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.
Ist der Returncode im Parameterbereich des Exit-Basismechanismus
!=0, wird auf dem 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.
Informationsquellen
Die folgende Tabelle enthält Hinweise zum Zugriff auf Informationen, die sinnvoll von den Exit-Routinen verarbeitet werden können:
Information | DSECT | I/A | Name | steht in | Bemerkung |
Exit-Parameterliste | $DOCSYS | A | Register 1 | ||
P1-FCB | IDFCB | A | P1FCB- | Exit-Parameterliste | |
P2-FCB | IDFC2 | A | D1P2LNK | P1-FCB | |
CVT | DMACVT | A | D2CVTAD | P2-FCB | |
VSN | DMADR | I | DRVVSN | TFT | mit RDTFT-Makro |
G | DMACVT | I | DCVRID | CVT | steht bei CLOSE |
Kennsätze | DTVOL | A A | D2LGINF D2LGINF | P2-FCB P2-FCB | Return Exit Request Exit |
Blockzähler | I | D2THPGN | P2-FCB | nur bei SAM und | |
Blockzähler | I | DIHPGNR | P2-FCB | BLKSIZE=STD |
I = Information ist Inhalt von Feld „Name“
A= Adresse von Information in Feld „Name“
Exit-Routinen und EXLST-Ausgänge
Die obenbeschriebenen Exit-Routinen und die bei der CLOSE-Verarbeitung anschließbaren EXLST-Ausgänge werden, falls vorhanden, in der nachfolgend gezeigten Reihenfolge aktiviert.
Return Exit (042)
Die Exit-Routine kann keine Rückkehrinformation an den Systemmodul senden.
Request Exit (043)
Die Exit-Routine kann keine Rückkehrinformation an den Systemmodul senden.
Bei Ausgabedateien auf Band kann über die Adresse im Feld D2LGINF im P2-FCB auf die vom OPEN geschriebenen Kennsätze VOL1, HDR1, HDR2 und HDR3 zugegriffen werden. Die Länge des adressierten Bereichs ist 4 x 80 = 320 Bytes.
Der Blockzähler ist zum Aufrufzeitpunkt der Request Exit-Routine noch nicht versorgt.
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
