In S-Prozeduren kann im Gegensatz zu Nicht-S-Prozeduren eine gezielte Fehlerbehandlung für Kommandos und Programmanweisungen durchgeführt werden. Die Returncodes von Anweisungen werden von SDF-P als Kommando-Returncodes interpretiert; im Folgenden wird nicht mehr zwischen Kommando- und Anweisungs-Returncode unterschieden (siehe auch Kommando BEGIN-BLOCK). SDF-P bietet dazu Kommandos, die auf eine Fehlersituation reagieren oder mit deren Hilfe ein Fehler analysiert werden kann. Außerdem gibt es Funktionen, die die Fehlerbehandlung unterstützen (siehe Kapitel „Funktionen“).
Die Fehlerbehandlung in S-Prozeduren ist blockorientiert, d.h., sie wird auf Blockebene durchgeführt. Bei ineinander geschachtelten Blöcken kann für jede Blockebene eine Fehlerbehandlung durchgeführt werden. Sie kann jedoch auch nur für übergeordnete, umgebende Blöcke aufgerufen werden. Dorthin werden auch die Fehler, die sich in inneren Blöcken ereigneten, durchgereicht und bearbeitet.
Ein Sonderfall blockorientierter Fehlerbehandlung ist die Fehlerbehandlung von einzelnen Kommandos: Hier wird das Kommando intern in einen BEGIN-Block gesetzt.
Die Fehlerbehandlung selbst wird in so genannten Fehlerbehandlungsblöcken durchgeführt. Zwei solcher Fehlerbehandlungsblöcke sind zu unterscheiden:
IF-BLOCK-ERROR
IF-CMD-ERROR
Daneben unterstützt SDF-P Fehleranalysen auf der Ebene der Kommando-Returncodes (mit dem Kommando SAVE-RETURNCODE und mit vordefinierten Funktionen).
Aus Kompatibilität zu Nicht-S-Prozeduren unterstützt SDF-P noch das Kommando SET-JOB-STEP.
Hinweis
Folgende Kommandos werden im Fehlerfall nicht ausgeführt:
ABEND, ABORT, CANCEL-PROCEDURE, END-PROCEDURE, ENDP, EXIT-JOB, EXIT-PROCEDURE, LOGOFF.
Im Fehlerfall können die Komponenten des Returncodes mit eingebauten Funktionen abgefragt werden (siehe Kapitel „Funktionen“). Wenn der Returncode auch dann geprüft werden soll, wenn kein Fehler auftrat, muss zuerst das Kommando SAVE-RETURNCODE aufgerufen werden. Nur dann steht der Returncode zur Verfügung und kann mit den vordefinierten Funktionen ausgewertet werden.
Die Fehlerbehandlung wird automatisch angestoßen, wenn eine Kommandoausführung einen Returncode mit einer Fehleranzeige zurückliefert. SDF-P springt dann zum nächsten IF-BLOCK-ERROR- oder IF-CMD-ERROR-Kommando.
SAVE-RETURNCODE
Mit dem Kommando SAVE-RETURNCODE wird der aktuelle Returncode gesichert. Der Returncode kann dann mit den vordefinierten Funktionen ausgewertet werden. Der Programmierer kann so auf Situationen reagieren, bei denen eine Kommandoausführung zwar ohne Fehler beendet wurde (Subcode1 = 0), Subcode2 und Maincode jedoch ausgewertet werden sollen.