Prozedurablauf beenden (Rückkehr zum Aufrufer)
Komponente: | SYSFILE |
Funktionsbereich: | Prozeduren |
Anwendungsbereich: | PROCEDURE |
Privilegierung: | STD-PROCESSING |
Funktionsbeschreibung
EXIT-PROCEDURE ist ein SDF-P-Kontrollflusskommando. Es beendet den Prozedurablauf und bewirkt die Rückkehr zum Aufrufer (Prozedurstufe aus der der Aufruf erfolgte). Beendet EXIT-PROCEDURE die letzte Prozedur, erfolgt die Rückkehr zur primären Kommandoeingabe (entspricht der Prozedurstufe 0):
Im Dialog ist die Kommandoeingabe (SYSCMD) primär der Datenstation, im Batchbetrieb primär der ENTER-Datei zugeordnet.
Die Systemdateien (einschl. TASKLIB) erhalten die Zuordnung, die am Unterbrechungspunkt gültig war. Eine Datei, die mit ASSIGN-SYSLST in der Prozedur zugewiesen wurde, wird bei EXIT-PROCEDURE geschlossen.
Mit dem Operanden ERROR kann ein Kommando-Returncode an den Aufrufer zurückgegeben werden, der mit SDF-P-Mitteln ausgewertet werden kann (siehe Kommando IF-BLOCK-ERROR).
Im Operanden RESUME-PROGRAM kann vereinbart werden, dass ein geladenes Programm auch nach Beendigung der Prozedur fortgesetzt werden kann. Diese Funktion entspricht dem Kommando ENDP-RESUME.
Eine Prozedur wird bei Eintritt der EOF-Bedingung (physikalisches Ende der Prozedurdatei bei Kommandoverarbeitung erreicht) wie bei Ausführung eines EXIT-PROCEDURE-Kommandos beendet. Der Aufrufer erhält einen Returncode, der dem aktuellen Fehlerzustand bei Beendigung entspricht.
Die Wirkung eines EXIT-PROCEDURE-Kommandos im ESCAPE-Modus ist beim HOLD-PROCEDURE-Kommando beschrieben.
In einer S-Prozedur wird das Kommando EXIT-PROCEDURE in einer Fehlersituation nicht erkannt.
Format
EXIT-PROCEDURE |
Operandenbeschreibung
ERROR =
Gibt an, welche Information der Aufrufer über den Prozedurablauf erhalten soll.
ERROR = *NO(...)
Der Aufrufer erhält den Returncode der Klasse „NO-ERROR“. Mit den Operanden SUBCODE2 und MAINCODE können Zusatzinformationen übermittelt werden:
SUBCODE2 = 0 / <integer 0..255>
Übergibt Zusatzinformation in Subcode2. Voreingestellt ist der Wert null, d.h. es ist keine Zusatzinformation vorhanden.
MAINCODE = CMD0001 / <alphanum-name 7..7>
Übergibt einen Meldungsschlüssel, dessen Bedeutung sich der Aufrufer mit dem Kommando HELP-MSG-INFORMATION ausgeben lassen kann.
Voreingestellt ist CMD0001, d.h. die Prozedur fehlerfrei beendet.
ERROR = *YES(...)
Der Aufrufer erhält einen Returncode, der einen Fehler anzeigt. Mit den Operanden SUBCODE1, SUBCODE2 und MAINCODE können Fehlerklasse und Zusatzinformationen übermittelt werden:
SUBCODE1 = 64 / <integer 0..255>
Bezeichnet die Fehlerklasse des aufgetreten Fehlers.
SUBCODE2 = 0 / <integer 0..255>
Übergibt Zusatzinformation in Subcode2.
Voreingestellt ist der Wert null, d.h. es ist keine Zusatzinformation vorhanden.
MAINCODE = SDP0018 / <alphanum-name 7..7>
Übergibt einen Meldungsschlüssel, dessen Bedeutung sich der Aufrufer mit dem Kommando HELP-MSG-INFORMATION ausgeben lassen kann.
RESUME-PROGRAM = *NO / *YES
Gibt an, ob ein geladenes Programm bei Prozedurbeendigung fortgesetzt werden soll. Bei Angabe von *YES kann das zuletzt geladene Programm nach Prozedurbeendigung fortgesetzt werden.
Hinweis
Wird eine Prozedur im ESCAPE-Modus aufgerufen, so wird beim Rücksprung die Meldung „TASK IS IN ESCAPE-MODE AT LEVEL NUMBER i
“ ausgegeben (i = Nummer der Prozedurstufe, in die der Rücksprung erfolgt ist).
Bei Erreichen der primären Kommandoeingabe (Stufe 0) wird diese Meldung nicht ausgegeben.
Kommando-Returncode
Mit dem Operanden ERROR kann das Kommando EXIT-PROCEDURE jeden Kommando-Returncode dem Aufrufer melden. Aus der Sicht des Aufrufers ist dies der Returncode des CALL-PROCEDURE- oder INCLUDE-PROCEDURE-Kommandos. Jedoch wenn die Ausführung des EXIT-PROCEDURE-Kommandos selbst zu einem Fehler führt, so wird nicht zum Aufrufer zurückgekehrt, sondern einer der folgenden Returncodes geliefert und die Fehlerbehandlung innerhalb der Prozedur angestoßen.
(SC2) | SC1 | Maincode | Bedeutung |
---|---|---|---|
0 | CMD0001 | Ohne Fehler | |
2 | 0 | SSM2039 | Fehler beim Schließen Ausgabe-Systemdatei; die SYSOUT-Meldung enthält den DMS-Fehlerschlüssel als Insert |
1 | CMD0202 | Syntaxfehler | |
3 | CMD2203 | Falsche Syntaxdatei | |
32 | CMD0221 | Systemfehler (interner Fehler) | |
64 | SSM1013 | Es ist keine Prozedur aufgerufen |
Beispiele
Siehe Kommandos CANCEL-PROCEDURE und HOLD-PROCEDURE.