Die EVALUATE-Direktive unterstützt die bedingte Übersetzung von mehreren Alternativen.
Format 1
>>EVALUATE {arithmetischer-ausdruck-1 | boolescher-ausdruck-1}
{>>WHEN {arithmetischer-ausdruck-2 | boolescher-ausdruck-2}
[{THROUGH | THRU} arithmetischer-ausdruck-3]
[quelltext-1]}...
[>>WHEN OTHER
[quelltext-2]]
>>END EVALUATE
Format 2
>>EVALUATE
TRUE
{>>WHEN
boolescher-ausdruck
-1
[
quelltext
-1]}...
[>>WHEN OTHER
[
quelltext
-2]]
>>END-EVALUATE
Syntaxregeln
Alle Formate
THRU ist die Abkürzung für THROUGH.
Die mit >> eingeleiteten Teile der Compiler-Direktive müssen zusammen mit den nachfolgenden Operanden jeweils in einer eigenen Zeile stehen.
quelltext-1 und quelltext-2 müssen in einer neuen Zeile beginnen.quelltext-1 und quelltext-2 dürfen beliebige Codezeilen enthalten, Compiler-Direktiven eingeschlossen. quelltext-1 und quelltext-2 können jeweils mehrere Zeilen umfassen.
In quelltext-1 bzw. quelltext-2 darf maximal 1 COPY-Anweisung in einer Zeile stehen.
Format 1
Alle Operanden einer EVALUATE-Direktive müssen jeweils von der selben Art sein. Bei dieser Regel ist ein arithmetischer Ausdruck von der Art numerisch und ein boolescher Ausdruck von der Art boolesch.
Wenn die Angabe THROUGH definiert ist, müssen alle Auswahl-Elemente von der Art numerisch sein.
Allgemeine Regeln
Alle Formate
Die EVALUATE-Direktive wird zeitgleich mit der Ausführung der COPY- und REPLACE-Anweisung bearbeitet.
Sobald die Auswertung einer WHEN Angabe ’wahr’ ergibt, wird der zugehörige quelltext-1 übersetzt und alle anderen Zeilen, einschließlich >>END-EVALUATE, ignoriert. Ergibt keine der WHEN Angaben den Wert ’wahr’, dann wird quelltext-2, sofern angegeben, übersetzt und alle anderen Zeilen ignoriert.
Format 1
arithmetischer-ausdruck-1 bzw. boolescher-ausdruck-1 werden mit den Werten in der WHEN-Angabe nach folgenden Regeln verglichen:
ist THROUGH nicht angegeben, dann ergibt sich der Wert ’wahr’, wenn arithmetischer-ausdruck-1 bzw. boolescher-ausdruck-1 gleich ist mit arithmetischer-ausdruck-2 bzw. boolescher-ausdruck-2,
ist THROUGH angegeben, dann ergibt sich der Wert ’wahr’, wenn arithmetischer-ausdruck-1 im Wertebereich von arithmetischer-ausdruck-2 und arithmetischer-ausdruck-3 liegt.