Anwendungsgebiet: PROCEDURE
Kommandobeschreibung
Das Kommando INCLUDE-BLOCK verzweigt zu dem Kommando BEGIN-BLOCK mit der angegebenen Marke (Namen). Nach Ausführung des (nächsten) Kommandos END-
BLOCK oder EXIT-BLOCK erfolgt der Rücksprung zu dem Kommando, das dem Kommando INCLUDE-BLOCK folgt. (Zu BEGIN-Block siehe Abschnitt „Blockanfang als Sprungziel“).
Das Kommando INCLUDE-BLOCK ermöglicht die komfortable Ausführung einer Unterprozedur, die zwischen den Kommandos BEGIN-BLOCK und END-BLOCK definiert ist. In diesem Fall sind folgende Regeln zu beachten:
/INCLUDE-BLOCK verzweigt nur zu einem /BEGIN-BLOCK mit einer Marke (Namen). Um zu anderen Kommandos mit einer Marke zu verzweigen, muss das Kommando GOTO benutzt werden.
Der BEGIN-Block mit der Unterprozedur ist sinnvollerweise nach dem Kommando EXIT-PROCEDURE anzuordnen. Das vermeidet die ungewollte Ausführung während des Prozedurablaufs.
Die Unterprozedur läuft in der gleichen Prozedurumgebung ab, wie die übergeordnete Prozedur (d.h. gleicher Variablenkontext, gleiche SYSFILE-Umgebung, usw.).
Der rekursive Aufruf der Unterprozedur ist nicht erlaubt.
Prozedurschachtelung ist erlaubt, sollte aber wegen Unübersichtlichkeit und unbeabsichtigtem Durchlaufen von BEGIN-Blöcken vermieden werden. Zu den Unterprozeduren kann direkt – in beliebiger Tiefe – verzweigt werden.
Das Kommando GOTO kann in der Unterprozedur verwendet werden, wobei es aber nur zu Marken innerhalb der Unterprozedur verzweigen sollte, da sonst die Unterprozedur verlassen wird.
Die bei dem Kommando BEGIN-BLOCK stehende Marke muss in der gesamten Prozedur eindeutig sein.
Das Kommando INCLUDE-BLOCK wird im Dialog-Modus abgewiesen.
Hinweis
Im Kommando ist keine Ausdruckersetzung (&....) möglich.
Format
INCLUDE-BLOCK |
BLOCK = <structured-name 1..255> |
Operandenbeschreibung
BLOCK = <structured-name 1..255>
Name des BEGIN-Blocks, der als Unterprozedur ausgeführt werden soll.Der Name ist ohne den abschließenden Doppelpunkt einzugeben.
Kommando-Returncode
(SC2) | SC1 | Maincode | Bedeutung |
0 | CMD0001 | Ohne Fehler | |
1 | CMD0202 | Syntaxfehler | |
1 | SDP0118 | Kommando im falschen Kontext | |
1 | SDP0223 | Falsche Umgebung | |
3 | CMD2203 | Falsche Syntaxdatei | |
32 | CMD0221 | Systemfehler (interner Fehler) |
Beispiel
/ASSIGN-SYSLST TO=PROT.EINGABE,SYSLST-NUMBER=1 /... /IF (EING='*START') / INCLUDE-BLOCK INFO-1 /END-IF &* Hier geht es nach Ausführung der Unterprozedur INFO-1 weiter /... /IF (EING='*END') / INCLUDE-BLOCK INFO-1 /END-IF &* Hier geht es nach Ausführung der Unterprozedur INFO-1 weiter /... /... /... /INFO-1: BEGIN-BLOCK &* Beginn der Unterprozedur INFO-1 / WRITE-TEXT '&(TIME()): Es wurde &(EING) eingegeben',OUTPUT=*SYSLST(1) /END-BLOCK &*Ende + Rücksprung zur Kommandozeile, die auf INCLUDE-BLOCK folgt