Die Fehlerbehandlung kann entweder kompatibel zum bisherigen Spin-Off-Verhalten ausgelöst werden oder auf der Basis der Kommando-Returncodes. Sie wird über Fehlerbehandlungsblöcke durchgeführt, die im Prozedurrumpf definiert werden.
Im Operanden ERROR-MECHANISM des Kommandos SET-PROCEDURE-OPTIONS kann die Art der Fehlerbehandlung eingestellt werden. Als Operandenwerte stehen *SPIN-OFF-COMPATIBLE und *BY-RETURNCODE zur Verfügung:
Ist *SPIN-OFF-COMPATIBLE gesetzt, wird die Fehlerbehandlung kompatibel zum Spin-Off-Verhalten ausgelöst. Subcode1 wird nicht berücksichtigt. Damit wird sichergestellt, dass das Fehlerverhalten von S-Prozeduren, die bereits in BS2000 V10.0 erstellt wurden, kompatibel bleibt. *SPIN-OFF-COMPATIBLE ist die Standardeinstellung.
Ist *BY-RETURNCODE gesetzt, wird die Fehlerbehandlung ausgelöst, wenn der Subcode1 des letzten Kommando-Returncodes ungleich Null ist. Das Spin-Off-Verhalten wird nicht berücksichtigt. Die Einstellung *BY-RETURNCODE ist geeignet für Prozeduren, in denen Kommandos mit eigenen Kommando-Returncodes verwendet werden. Dadurch wird eine differenzierte Programmierung möglich.
Beispiel 1 (für ERROR-MECHANISM=*SPIN-OFF-COMPATIBLE)
/SET-PROCEDURE-OPTIONS ERROR-MECHANISM=*SPIN-OFF-COMPATIBLE /... /PRINT-FILE DOES-NOT-EXIST /... / /IF-BLOCK-ERROR / "IF-BLOCK-ERROR wird nicht angestoßen, da" / "/PRINT-FILE (mit korrekter Syntax) keinen Spin-Off" / "erzeugt" /END-IF /...
Beispiel 2 (für ERROR-MECHANISM=*BY-RETURNCODE)
/SET-PROCEDURE-OPTIONS ERROR-MECHANISM=*BY-RETURNCODE /... /PRINT-FILE DOES-NOT-EXIST /... /IF-BLOCK-ERROR / "IF-BLOCK-ERROR wird gemäß den Returncodes" / "für /PRINT-FILE angestoßen" /END-IF /...
Fehlerverhalten bei Versionswechsel
Obwohl das Verhalten der meisten Kommandos mit der jeweiligen Version zusammenhängt, ist eine Umstellung eines Kommandos auf definierte Kommando-Returncodes nicht von einer BS2000-Version abhängig, sondern von der Version des Systemprodukts bzw. Subsystems.
Bei ERROR-MECHANISM=*BY-RETURNCODE kann sich durch Umstellung eines Systemprodukts auf Kommando-Returncodes das Fehlerverhalten der betreffenden Kommandos in derselben BS2000-Version ändern.
Fehlerverhalten bei Programmen
Die Fehlerbehandlung betrifft auch Anwenderprogramme; diese können eigene Returncodes liefern. Für Programme, die keinen eigenen Returncode liefern, simuliert SDF einen Returncode analog der Spin-Off-Behandlung.
Standardmäßig erfolgt eine Fehlerbehandlung durch SDF-P erst nach Programmbeendigung. Durch die Voreinstellung *SPIN-OFF-COMPATIBLE erfolgt die Fehlerbehandlung nicht auf Basis des Returncodes (siehe Makro CMDRC im Handbuch „SDF-A“ [16]), sondern durch den Spin-Off auslösenden Parameter UNIT=STEP des Makros TERM (siehe Handbuch „Makroaufrufe an den Ablaufteil“ [7]).
Die Einstellung PROPAGATE-STMT-RC=*TO-CMD-RC in einem BEGIN-Block (siehe Kommando BEGIN-BLOCK) ermöglicht die SDF-P-Fehlerbehandlung und Auswertung von Returncodes während des Programmlaufs. Die SDF-P-Fehlerbehandlung erfolgt dann unabhängig von der Einstellung für ERROR-MECHANISM nur auf Basis des Returncodes.