SAP hat geschrieben:Bedingte Textausgabe: IF
Mit dem IF-Steuerkommando können Sie erreichen, daß Textzeilen nur unter bestimmten Bedingungen ausgegeben werden. Wenn der beim IF-Kommando angegebene logische Ausdruck erfüllt ist, werden die durch IF... ENDIF eingeschlossenen Textzeilen ausgegeben, ansonsten werden sie ignoriert.
Syntax:
/: IF Bedingung
:
:
/: ENDIF
In der Bedingung sind die folgenden Vergleichsoperatoren möglich:
= EQ gleich
< LT kleiner
> GT größer
<= LE kleiner oder gleich
>= GE größer oder gleich
<> NE ungleich
Als logische Verknüpfungsoperatoren können Sie verwenden:
* NOT
* AND
* OR
Die Abarbeitungsreihenfolge der logischen Vergleichsoperatoren sowie die Auswertungsreihenfolge der Bedingungen ist immer von links nach rechts. Es gibt keine Bindungsstärke. Klammerungen werden nicht unterstützt.
Der Vergleich wird immer als Literalvergleich durchgeführt, d.h., Symbole werden in ihrer aufbereiteten Form als Zeichenkette verglichen und nicht mit ihrer internen Darstellung. Dies muß besonders bei Programmsymbolen beachtet werden, deren Aufbereitung von unterschiedlichen Parametern abhängt. Als Beispiel seien hier Währungsfelder genannt, die je nach Währungsschlüssel mit unterschiedlicher Dezimalstellenanzahl ausgegeben werden, oder das Dezimaltrennzeichen, das je nach Einstellung ein Punkt oder ein Komma sein kann.
Das IF-Kommando kann durch das ELSE-Kommando zu einer zweitseitigen Fallunterscheidung erweitert werden. Ist die beim IF angegebene Bedingung wahr, so werden die zwischen IF und ELSE aufgeführten Textzeilen aufbereitet, andernfalls die zwischen ELSE und ENDIF.
Syntax:
/: IF Bedingung
:
/: ELSE
:
/: ENDIF
Durch das ELSEIF-Kommando ist eine mehrstufige Fallunterscheidung möglich.
Syntax:
/: IF Bedingung
:
/: ELSEIF Bedingung
:
/: ELSE
:
/: ENDIF
Es können beliebig viele ELSEIF-Kommandos verwendet werden. Die Angabe eines ELSE-Kommandos ist in diesem Fall optional.
Anmerkungen:
* Die Bedingung darf sich nicht über mehrere Zeilen erstrecken, sondern muß zusammen mit dem IF- bzw. ELSEIF-Kommando in einer Zeile Platz haben.
* IF-Kommandos können auch geschachtelt werden.
* Ein IF-Kommando muß immer durch ein ENDIF abgeschlossen werden. Wird dies vergessen, so wird nach dem IF-Kommando nichts mehr ausgegeben, wenn die Bedingung falsch ist.
* Wird bei Interpretation dieser Kommandos ein Syntaxfehler festgestellt, so wird das entsprechende Kommando nicht ausgeführt. Dies kann verschiedene Auswirkungen auf die nachfolgende Textausgabe haben. Ist z.B. das IF-Statement falsch aufgebaut, so werden die folgenden ELSEIF- bzw. ELSE-Kommandos ignoriert, da das öffnende IF fehlt. In diesem Fall werden alle Textzeilen ausgegeben.
"elegant" ist in dem Fall vielleicht nicht so gaaaanz treffend, aber: Es gibt noch den externen Perform...piemo hat geschrieben:Falls aber doch noch jemand eine elegantere Lösung wissen sollte, nur zu!
Code: Alles auswählen.
PERFORM ABC IN PROGRAM XYZ USING/CHANGING...