Vor und nach Programmbeendigung bzw. vor Taskbeendigung kann eine Exit-Routine angeschlossen werden.
Am Termination Request Exit wird die Steuerung vor Programm-/ bzw. Taskbeendigung (TERM, ABEND, LOGOFF) an die entsprechende Exit-Routine übergeben.
Am Termination Return Exit wird eine Exit-Routine nach Programmbeendigung aufgerufen.
Die Exit-Routine kann
eigene Abrechnungsdaten schreiben,
eine abschließende Dateibehandlung durchführen,
den globalen Speicherbereich (SYSVECT) auswerten oder
bei Task-Termination, einen LOGOFF-/ABEND-Parameter verändern.
Request Exit (001)
Folgende Informationen werden an die Exit-Routine übergeben:
R1 = A($TERMRF-Parameterbereich) R12 = A(TPR Program Manager) R13 = A(Sicherungsbereich der rufenden Komponente) R14 = A(indirekter Rücksprung) R15 = A(Exit-Routine
Return Exit (002)
Folgende Informationen werden an die Exit-Routine übergeben:
R1 = A($TERMRF-Parameterbereich) R12 = A(TPR Program Manager) R13 = A(Sicherungsbereich der rufenden Komponente) R14 = A(indirekter Rücksprung) R15 = A(Exit-Routine)
Die Rückkehrinformation an die rufende Systemkomponente muss im Feld ENRTMRET des Parameterbereichs hinterlegt werden.
Hinweise
Allgemeines
Die Register 12, 13 und 14 dürfen von der Exit-Routine nicht zerstört werden.
Aufrufe, die zu einer weiteren Termination-Behandlung führen (EXEC, LOAD, TERM, $TERM), sind verboten.
Ein Zurücksetzen oder ein Abbruch der Termination-Behandlung ist nicht möglich.
Der Makroaufruf TYPIO mit Anfordern einer Operateurantwort und CLOSE ALL sollen in der Exit-Routine nicht verwendet werden.
Falls in den Exit-Routinen Abrechnungsdaten erfasst werden, sollten die Exits vor SHUTDOWN nicht deaktiviert werden, solange noch Benutzertasks im System vorhanden sind. Da SHUTDOWN zur Zwangsbeendigung von Tasks führt, könnten sonst Daten verloren gehen.
Dateiverarbeitung
Dateien, die von Exit-Routinen geführt werden, müssen mit dem Operanden USER-ACCESS=*ALL-USERS unter einer beliebigen Benutzerkennung im System eingerichtet werden. Grund: Programm- und Task-Beendigung laufen unter Steuerung der betroffenen Task ab und damit der entsprechenden Benutzerkennung. Der Zugriff auf die Datei muss also von allen Benutzerkennungen möglich sein.
Für die von Exit-Routinen geführten Dateien müssen alle EXLST-Ausgänge versorgt sein. Sonst besteht beim Termination Request für Programmbeendigung die Gefahr, dass das Benutzerprogramm mit dem DMS-Fehlercode der Exit-Routine abgebrochen wird.
Für das ordnungsgemäße Schließen der im Exit eröffneten Dateien ist die Exit-Routine selbst verantwortlich.
Task Termination
Der Inhalt des Feldes ENRTLGFC des $TERMRF-Parameterbereichs (den der Benutzer modifizieren kann) wird übernommen, falls dieser einen gültigen Wert enthält.
Bei der Beendigung von Systemtasks oder ARCHIVE-Subtasks erfolgt kein Ansprung der Exit-Routinen.
Return Exit bei Programmbeendigung
Zum Aufrufzeitpunkt sind alle Dateien des Benutzerprogramms bereits geschlossen (impliziter CLOSE ALL durch die Termination-Behandlung).
DSECT
$TERMRF MF=D MFCHK MF=D, C SUPPORT=(C,D,L), C PREFIX=E, C MACID=NRT, C DMACID=NRT, C DNAME=NRTPL, C PARAM= ENRTPL DSECT , *,##### PREFIX=E, MACID=NRT ##### #INTF REFTYPE=REQUEST, C INTNAME=NRTPARA, C INTCOMP=001 * * THIS MACRO GENERATES THE DSECT FOR THE PARAMETER LIST WHICH IS * EXCHANGED BETWEEN THE MODULS NRTCTRL, NRTTERM AND EXTERNAL MODULS. * * TO PREVENT ABUSE OF THE GIVEN EQUATES, THE TEST METHOD TO BE USED IS * INDICATED BY THE ABBREVIATIONS: * (TM) EACH BIT OF THE DATA FIELD HAS A MEANING OF ITS OWN, * NO MEANING IS DISPLAYED AS A COMBINATION OF BITS. * USE THE "TM"-STATEMENT WHEN TESTING IF A BIT IS SET. * THIS ALSO ALLOWS TESTING OF TWO OR MORE DIFFERENT * FEATURES AT THE SAME TIME. * (CL) ONLY A CERTAIN COMBINATION OF SET BITS INDICATES A * FEATURE. USE THE "CLI"-STATEMENT WHEN TESTING A * COMBINATION. * FHDR MF=(C,ENRT),EQUATES=NO DS 0A ENRTFHE DS 0XL8 0 GENERAL PARAMETER AREA HEADER * ENRTIFID DS 0A 0 INTERFACE IDENTIFIER ENRTFCTU 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 ENRTFCT DS AL1 2 FUNCTION NUMBER ENRTFCTV DS AL1 3 FUNCTION INTERFACE VERSION NUMBER * ENRTRET DS 0A 4 GENERAL RETURN CODE ENRTSRET DS 0AL2 4 SUB RETURN CODE ENRTSR2 DS AL1 4 SUB RETURN CODE 2 ENRTSR1 DS AL1 5 SUB RETURN CODE 1 ENRTMRET DS 0AL2 6 MAIN RETURN CODE
ENRTMR2 DS AL1 6 MAIN RETURN CODE 2 ENRTMR1 DS AL1 7 MAIN RETURN CODE 1 ENRTFHL EQU 8 8 GENERAL OPERAND LIST HEADER LENGTH * ORG ENRTRET * ****************** ENRTRC DS F * RETURN CODE * * ****************** * PLEASE USE THE RETURNCODE * IN THE STANDARDHEADER * (MAINCODE 1)! * ------------------------------ * THIS IS THE ONLY PART OF * NRTPARA THAT MAY BE MANI- 120 * PULATED BY THE CALLED * ROUTINES ORG ENRTRC ENRTSCD DS XL1 (CL) SECONDARY CODE ENRTNACT EQU X'0C' NO ACTION PERFORMED * DS XL2 UNUSED * ENRTRCD DS XL1 (CL) RETURN CODE ENRTSUCC EQU X'00' FUNCT. SUCCESSFULLY PERFORMED ENRTERR EQU X'04' FUNCT. FAULTY - TERM. TASK * ENRTRES1 DS 3F USED ONLY BY NRT - NOT FOR * EXTERNAL ROUTINES! * ENRTWORK DS A GENERAL WORK AREA ADDRESS * ENRTOUT DS XL1 (CL) OUTPUT PARAMETER FIELD 120 * ENRTDMPN EQU 0 CDUMP SHOULD BE NOT CALLED 120 ENRTDMPY EQU 1 CDUMP CAN BE CALLED 120 ENRTRETN EQU 2 RETURN TO PROGRAM 120 ENRTCMDP EQU 3 CALL COMMAND PROCESSING 120 ENRTCONT EQU 4 CONTINUE TERMINATION 120 * ENRTDUMP DS XL1 (TM) DUMP REQUEST 120 * ENRTDIAG EQU X'04' DIAGNOSIS DUMP REQUESTED 121 ENRTSDMP EQU X'02' SYSTEM DUMP REQUESTED 121 ENRTUDMP EQU X'01' USER DUMP REQUESTED 121 ENRTDPNN EQU X'00' NO DUMP REQUESTED 121 * DS XL2 RESERVED 120 *
ENRTINFO DS A SPECIFIC INFORMATION FOR THE * CALLED ROUTINE. CURRENTLY ONLY * NAME MANAGER INFORMATION IS * PROVIDED WHEN REQUIRED. ORG ENRTINFO ENRTNMCL DS XL3 NAME MANAGER INFORMATION FIELD. ENRTCLAS DS AL1 (CL) INDICATES THE CURRENT NAME * MANAGER CLASS OR ZERO FOR * DYNAMIC CLASSES. * * ENRTREQ DS XL1 (TM) TERMINATION REQUEST. * ENRTNPTR EQU X'01' NONPRIVILEGED TERMINATION * REQUEST (TERM,TERMD,TERMJ,TRMJD) ENRTTERM EQU X'02' PRIVILEGED TERMINATION REQUEST * ($TERM) AND NONPRIVILEGED * REQUEST ISSUED IN P2 ENRTTRMT EQU X'04' TERMINATION REQUEST DUE TO * SYSTEM ERROR 120 * * ENRTFUNT DS XL1 (CL) TERMINATION UNIT TO BE * EXECUTED. ENRTPRGR EQU X'01' TERMINATION UNIT IS * PROGRAM. ENRTSTEP EQU X'02' TERMINATION UNIT IS STEP. ENRTTASK EQU X'04' TERMINATION UNIT IS TASK. ENRTJOB EQU ENRTTASK TERMINATION UNIT IS JOB. * AT PRESENT JOB IS EQUIVALENT * TO TASK * * ENRTTTYP DS XL1 (CL) TERMINATION TYP * ENRTNORT EQU X'00' NORMAL TERMINATION ENRTABNT EQU X'04' ABNORMAL TERMINATION * * ENRTCUNT DS XL1 (CL) CURRENT TERMINATION UNIT. * * USE THE EQUATES DEFINED UNDER * "TERMINATION UNIT TO BE * EXECUTED" FOR PROGRAM, JOB * STEP, TASK AND JOB TERMINATION! *
DS 0F ENRTCMPC DS CL4 COMPLETION CODE FOR JOB VARIABLE * SUPPORT * ENRTCMD DS XL1 (TM) INFORMATION ON THE COMMAND THAT * INITIATED TERMINATION ENRTLGOF EQU X'01' LOGOFF COMMAND ENRTABND EQU X'02' ABEND COMMAND ENRTCAN EQU X'04' CANCEL COMMAND ENRTSHUT EQU X'08' SHUTDOWN COMMAND ENRTEXLD EQU X'10' EXEC OR LOAD COMMAND ENRTPOSX EQU X'20' EVENT=POSIX 121 * * ENRTLGFC DS XL1 (TM) INFORMATION ON LOGOFF COMMAND. * ENRTLGBT EQU X'01' LOGOFF BUT ENRTLGTP EQU X'02' LOGOFF TAPE ENRTLGNS EQU X'10' LOGOFF NOSPOOL ENRTLGNO EQU X'06' EXIT-JOB - NO SYSOUT 201 ENRTLGNL EQU X'0A' EXIT-JOB - NO SYSLST 201 * * ENRTCANC DS XL1 (TM) INFORMATION ON CANCEL COMMAND * ENRTOPER EQU X'02' CANCEL BY OPERATOR-TASK ENRTTSOS EQU X'04' CANCEL BY $TSOS ENRTUSID EQU X'08' CANCEL BY SAME USER-ID ENRTHOST EQU X'10' CANCEL BY ANOTHER HOST * * DS CL1 RESERVED 120 * * * DS XL1 ENRTTRMC DS CL7 TERMINATION CODE - 7 BYTES ORG ENRTTRMC+3 ENRTCODE DS CL4 TERMINATION CODE - 4 BYTES * NOT SUPPORTED AFTER V8.0! * * ENRTPLE DS 0F WORD ALIGNMENT IS SUFFICIENT 120 * ENRT# EQU *-ENRTFHE