Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

BEGIN-BLOCK Kommandoblock einleiten

&pagelevel(4)&pagelevel

Anwendungsgebiet: PROCEDURE

Kommandobeschreibung

Kommandoblöcke, die als logische Einheit behandelt werden sollen, werden mit dem Kommando BEGIN-BLOCK eingeleitet und mit dem Kommando END-BLOCK abgeschlossen. Diese Kommandoblöcke werden auch als BEGIN-Blöcke bezeichnet (BEGIN-Block siehe Abschnitt „Einfache Kommandoblöcke definieren“).

Der Kommandoblock kann über eine Marke benannt werden. Diese Marke kann auch als Sprungziel verwendet werden (zu Marken siehe "Prozedurzeilen ").

Der Operand PROGRAM-INPUT steuert die Behandlung von Kommandos innerhalb von Eingaben an Programme (Anweisungen und Daten) und die Behandlung der Returncodes von Programmanweisungen.

Format

BEGIN-BLOCK

PROGRAM-INPUT = *STD / *MIXED-WITH-CMD(...)

*MIXED-WITH-CMD(...)

PROPAGATE-STMT-RC = *STD / *TO-CMD-RC

Operandenbeschreibung

PROGRAM-INPUT =
Legt fest, ob innerhalb von Eingaben an Programme (Anweisungen und Daten) auch Kommandos erlaubt sind und steuert die Behandlung der Returncodes von Programmanweisungen. Die Einstellung wird nicht in nachfolgende Prozeduraufrufe vererbt.

PROGRAM-INPUT = *STD
Kommandos werden wie im umschließenden BEGIN-Block behandelt. Im äußersten BEGIN-Block bzw. falls überhaupt kein BEGIN-Block existiert, müssen Kommandos durch die Kommandos HOLD-PROGRAM und RESUME-PROGRAM eingeschlossen werden. Das heißt, wenn die Datenzeilen durch ein Kommando (außer durch HOLD-PROGRAM) unterbrochen werden, wird die Dateiendebedingung (EOF) erzeugt.

PROGRAM-INPUT = *MIXED-WITH-CMD(...)
Es wird nicht zwischen Anweisungen / Datensätzen einerseits und Kommandos andererseits unterschieden. Das heißt, Kommandos erzeugen keine Dateiendebedingung (EOF).

PROPAGATE-STMT-RC =
Legt fest, ob Returncodes von Programmanweisungen als Kommando-Returncodes interpretiert werden und ob diese Returncodes eine SDF-P-Fehlerbehandlung auslösen sollen.

PROPAGATE-STMT-RC = *STD
Die Returncodes von Anweisungen und die SDF-P-Fehlerbehandlung werden wie im umschließenden BEGIN-Block behandelt. Im äußersten BEGIN-Block bzw. falls überhaupt kein BEGIN-Block existiert, werden die Returncodes von Anweisungen ignoriert; eine Fehlerbehandlung auf Kommandoebene ist nur durch Verwendung der vordefinierten Funktion STMT-SPINOFF() möglich.

PROPAGATE-STMT-RC = *TO-CMD-RC
Die Returncodes von Programmanweisungen stehen als Kommando-Returncodes zur Verfügung und steuern die SDF-P-Fehlerbehandlung. In der weiteren Verarbeitung wird nicht zwischen Returncodes von Kommandos und Programmanweisungen unterschieden.
Die SDF-P-Fehlerbehandlung wird nur ausgelöst, wenn SUBCODE1 ungleich Null ist.

Hinweis

Die Verwendung der vordefinierten Funktion STMT-SPINOFF( ) ist hier nicht sinnvoll, da sie an dieser Stelle niemals den Wert „YES“ liefert.

Kommando-Returncode

(SC2)

SC1

Maincode

Bedeutung


0CMD0001Ohne Fehler

1CMD0202Syntaxfehler

1SDP0118Kommando im falschen Kontext

1SDP0223Falsche Umgebung

3CMD2203Falsche Syntaxdatei

32CMD0221Systemfehler (interner Fehler)

130SDP0099Kein Adressraum mehr verfügbar

Beispiele

Programmanweisungen und Kommandos voneinander separiert:

Programmanweisungen sind durch die Kommandos RESUME-PROGRAM und HOLD-PROGRAM eingeschlossen. Ein BEGIN-Block wird nicht benötigt.

/start-lms
/ hold-program
/ library = 'my-library'
/ write-text 'Elements of &library.'
/ resume-program
// show-element-attributes *library-element(&library.)
/ hold-program
/ library = 'my-second-library'
/ write-text 'Elements of &library.'
/ resume-program
// show-element-attributes *library-element(&library.)
//end

Programmanweisungen und Kommandos gemischt:

Die Kommandos und Programmanweisungen sind in einem BEGIN-Block eingeschlossen. Kommandos und Programmanweisungen werden automatisch erkannt.

/begin-block program-input = *mixed-with-cmd
/ start-lms
/ library = 'my-library'
/ write-text 'Elements of &library.'
// show-element-attributes *library-element(&library.)
/ library = 'my-second-library'
/ write-text 'Elements of &library.'
// show-element-attributes *library-element(&library.)
// end
/end-block

Returncodes von Programmanweisungen

Die Returncodes von Programmanweisungen werden wie die von Kommandos behandelt.

/begin-block program-input = *mixed-with-cmd(propagate-stmt-rc = *to-cmd-rc)
/ &* Start a program which generates statement returncodes
/ start-executable-program my-new-program
// my-statement1
/ if-cmd-error &* Test statement returncode
/ write-text 'Error during execution of my-statement'
/ write-text 'Maincode: &mc; Subcode1: &sc1; Subcode2: &sc2'
/ end-if
/ show-file-attributes &my-file.
/ if-cmd-error &* Test command returncode
/ write-text 'Error &mc during access to my-file'
/ end-if
// my-statement2
/ save-returncode &* Save statement returncode
/ if (maincode <> 'CMD0001')
/ write-text 'Warning &mc during execution of my-statement2'
/ end-if
// end
/end-block

Verarbeitung der STEP-Anweisung:

Die STEP-Anweisung setzt die durch fehlerhafte Anweisungen ausgelöste SDF-P-Fehlerbehandlung zurück. Wenn der Returncode benötigt wird, muss eine eigene Fehlerbehandlung in einem SDF-P-Fehlerblock erfolgen (/IF-BLOCK-ERROR oder /IF-CMD-ERROR statt //STEP).

/begin-block program-input = *mixed-with-cmd(propagate-stmt-rc = *to-cmd-rc)
/ &* Das folgende Programm liefert Returncodes für Programmanweisungen
/ start-executable-program <name>
// <anweisung>
// step
/ &* die SDF-P-Fehlerbehandlung wird zurückgesetzt
// end
/end-block

Verarbeitung der END-Anweisung:

Die END-Anweisung (//END) beendet die Programmausführung und gleichzeitig auch eine durch fehlerhafte Anweisungen ausgelöste SDF-P-Fehlerbehandlung. Wenn der Returncode benötigt wird, muss die Fehlerbehandlung in einem SDF-P-Fehlerblock vor der END-Anweisung erfolgen (/IF-BLOCK-ERROR oder /IF-CMD-ERROR).

/begin-block program-input = *mixed-with-cmd(propagate-stmt-rc = *to-cmd-rc)
/ &* Start a program which generates statement returncodes
/ start-executable-program <name>
// my-statement
// end
/ if-block-error
/ &* the //END statement has been processed,
/ &* the return code which is available is the command
/ &* return code of the /start-exec-prog and NOT the statement
/ &* return code of //my-statement
/ write-text 'Error &mc returned by /start-exec-prog'
/ end-if
/end-block