Die Kommandos zur Fehlerbehandlung leiten IF-Blöcke ein, die wie „normale“ IF-Blöcke abgearbeitet werden. Zu diesen IF-Blöcken gehören dementsprechend auch ELSE- und END-IF-Kommandos.
IF-BLOCK-ERROR-Block
Wenn ein Kommando-Returncode mit einer Fehleranzeige zurückgeliefert wird, springt SDF-P automatisch zum nächsten IF-BLOCK-ERROR-Block, wobei andere Blöcke tieferer Schachtelungsebenen übersprungen werden.
Das IF-BLOCK-ERROR-Kommando kann auch aufgerufen werden, ohne dass ein Fehler aufgetreten ist. In diesem Fall wird der ELSE-Zweig des IF-BLOCK-ERROR-Blocks durchlaufen.
Wenn zwischen dem Kommando, das zur Fehlersituation führte, und dem Prozedurende kein IF-BLOCK-ERROR-Block vorhanden ist, wird die Prozedur beendet und der Fehler dem Aufrufer gemeldet: Der Fehlercode wird an den Aufrufer durchgereicht wie bei Prozedurbeendigung mit EXIT-PROCEDURE ERROR = *YES.
Beispiel
/BEGIN-BLOCK /"Kommandos" / IF-BLOCK-ERROR / "Fehlerbehandlung" / ELSE / "Kein Fehler" / END-IF /END-BLOCK
IF-CMD-ERROR-Block
Mit dem IF-CMD-ERROR-Block kann eine Fehlerbehandlung für das unmittelbar vorhergehende Kommando durchgeführt werden, jedoch nicht für Blockeinleitungs- oder Blockabschlusskommandos. Das heißt, IF-CMD-ERROR kann nicht auf die Kommandos FOR, IF, REPEAT oder WHILE oder die dazugehörenden Abschlusskommandos angewendet werden.
Hiermit ist eine gezielte Fehlerbehandlung für dieses Kommando möglich und eine Blockfehlerbehandlung wird somit verhindert.
Der IF-CMD-ERROR-Block kann wie der IF-BLOCK-ERROR-Block einen ELSE-Zweig enthalten, der durchlaufen wird, wenn das Kommando IF-CMD-ERROR aufgerufen wird und das vorhergehende Kommando fehlerfrei ausgeführt wurde.
Beispiel
/kommando /IF-CMD-ERROR / "Fehlerbehandlung" /ELSE / "Kein-Fehler-Kommandofolge" /END-IF
Unabhängig von Fehler/Nicht-Fehler steht der Kommando-Returncode des dem IF-CMD-ERROR vorhergehenden Kommandos immer zur Verfügung. Dadurch können auch im Nicht-Fehlerfall sowohl im ELSE-Zweig als auch nach der Kommandofehlerbehandlung (END-IF) Warnungen ausgewertet werden.