Funktion
Die IF-Anweisung bewirkt, dass eine Bedingung (siehe unter „Bedingungen") ausgewertet wird. Die nachfolgende Aktion des Programmes hängt davon ab, ob die Bedingung wahr oder falsch ist.
Format 1
IF bedingung THEN anweisung-1 [ELSE anweisung-2]
END-IF
Format 2
IF bedingung THEN {anweisung-1 | NEXT SENTENCE} [ELSE {anweisung-2 | NEXT SENTENCE}]
Syntaxregeln
anweisung-1 und anweisung-2 können aus einer oder mehreren unbedingten oder bedingten Anweisung(en) bestehen.
Eine IF-Anweisung mit NEXT SENTENCE-Angabe darf nicht in anweisung-1 bzw. anweisung-2 einer IF-Anweisung vom Format 1 stehen, die unmittelbar mit END-IF abgeschlossen wird.
Allgemeine Regeln
anweisung-1 und/oder anweisung-2 können eine IF-Anweisung enthalten. In diesem Fall spricht man von „geschachtelter IF-Anweisung“.
Der Gültigkeitsbereich der IF-Anweisung kann wie folgt begrenzt werden:
durch END-IF auf derselben Schachtelungsebene
mit einem Punkt
bei Schachtelung mit einer ELSE-Angabe, die zu einer IF-Anweisung auf höherer Schachtelungsebene gehört.
IF-Anweisungen innerhalb von IF-Anweisungen werden von links nach rechts als Kombinationen von IF, ELSE und END-IF betrachtet. Daher wird bei jedem auftretenden ELSE angenommen, dass es sich auf das unmittelbar vorausgegangene IF bezieht, dem noch kein ELSE oder END-IF zugeordnet ist.
Eine IF-Anweisung wird folgendermaßen ausgeführt:
Ist die Bedingung wahr und anweisung-1 angegeben, wird mit der ersten Anweisung von anweisung-1 fortgesetzt. Wird dabei ein Prozedursprung oder eine Bedingungsanweisung ausgeführt, die einen expliziten Übergang der Steuerung bewirkt, erfolgt dieser Übergang gemäß den Regeln für diese Anweisung. Nach Beendigung der Ausführung von anweisung-1 wird ELSE, falls angegeben, ignoriert, und die Steuerung geht zum Ende der IF-Anweisung über.
Ist die Bedingung wahr und statt anweisung-1 NEXT SENTENCE angegeben, wird ELSE, falls angegeben, ignoriert und der Ablauf bei der nächsten ausführbaren Anweisung fortgesetzt.
Ist die Bedingung falsch und anweisung-2 angegeben, wird anweisung-1 bzw. NEXT SENTENCE ignoriert. Es wird mit der ersten Anweisung von anweisung-2 fortgesetzt. Wird dabei ein Prozedursprung oder eine Bedingungsanweisung ausgeführt, die einen expliziten Übergang der Steuerung bewirkt, erfolgt dieser Übergang gemäß den Regeln für diese Anweisung. Nach Beendigung der Ausführung von anweisung-2 geht die Steuerung zum Ende der IF-Anweisung über.
Ist die Bedingung falsch und ELSE nicht angegeben, wird anweisung-1 ignoriert, und die Steuerung geht zum Ende der IF-Anweisung über.
Ist die Bedingung falsch und ELSE NEXT SENTENCE angegeben, wird anweisung-1 ignoriert und der Ablauf mit dem nächsten ausführbaren Programmsatz fortgesetzt.
Beispiel 8-42
IF A = B THEN anweisung-1 END-IF anweisung-2.
Wenn A = B wahr ist, werden anweisung-1 und anweisung-2 ausgeführt.
Wenn A = B falsch ist, wird nur anweisung-2 ausgeführt.
Beispiel 8-43
IF A = B THEN anweisung-1 ELSE anweisung-2 END-IF anweisung-3.
Wenn A = B wahr ist, werden anweisung-1 und anweisung-3 ausgeführt.
Wenn A = B falsch ist, werden anweisung-2 und anweisung-3 ausgeführt.
Beispiel 8-44
IF A = B THEN CONTINUE ELSE anweisung-1 END-IF anweisung-2.
Wenn A = B wahr ist, wird anweisung-2 ausgeführt.
Wenn A = B falsch ist, werden anweisung-1 und anweisung-2 ausgeführt.
Beispiel 8-45
|-> IF MAENNLICH | |-> IF VERHEIRATET | | ADD 1 TO MAENNL-VERHEIRATET | |-> ELSE | | |-> IF GESCHIEDEN | | | ADD 1 TO MAENNL-GESCH | | |-> ELSE | | | ADD 1 TO MAENNL-LEDIG | | |-> END-IF | |-> END-IF |-> ELSE | ADD 1 TO WEIBLICH |-> END-IF nächste Anweisung