:IF... :ELSE... :ENDIF

Verwenden Sie die Script-Anweisungen :IF und :ENDIF, um einen Bedingungsblock in Ihrem Script zu erstellen. Das Script analysiert einen Ausdruck und führt Anweisungen aus, die in den Block geschrieben wurden, wenn eine bestimmte Bedingung erfüllt ist. Wenn die Bedingung nicht erfüllt ist, fährt das Script entweder mit der nächsten Zeile nach dem Bedingungsblock fort oder führt gegebenenfalls :ELSE-Anweisungen aus.

Syntax

: IF Bedingung
[Anweisungen]
[ : ELSE ]
[Weitere Anweisungen]
: ENDIF

Parameter

  • :IF
    Startet einen Bedingungsblock

  • Bedingung
    Mathematischer Ausdruck, der bestimmt, ob die Anweisungen im bedingten Block ausgeführt werden
    Format: Script-Literale, Script-Variablen, Script-Funktionen oder Zahlen, mit den möglichen Ergebnissen true oder false

  • Anweisungen
    Eine oder mehrere Script-Anweisungen, die ausgeführt werden sollen, wenn die Bedingung true ist
    Format: Script-Anweisung

  • :ELSE
    Startet einen Zweig, der ausgeführt wird, wenn die Bedingung false ist

  • Weitere Anweisungen
    Eine oder mehrere Script-Anweisungen, die ausgeführt werden sollen, wenn die Bedingung false ist
    Format: Script-Anweisung

Hinweise:

  • Sie müssen die Script-Variablen definieren, die Sie in einer Bedingung vor dem Bedingungsblock verwenden.
  • Verwenden Sie OR als Schlüsselwort, um eine Bedingung mit mehreren Werten zu verknüpfen oder um mehrere Bedingungen zu verknüpfen. Schreiben oder OR-Bedingungen in der folgenden Struktur:
    WertVergleichsoperatorVergleichswert[OR Vergleichswert...]
    Beispiel: :IF &DEP# = "EDP" OR "AE"
  • Sie können bis zu 13 ORs in einer Bedingung verwenden.
  • Sie müssen keine :ELSE-Anweisungen einfügen.
  • Sie können :IF-Blöcke bis zu einer unbegrenzten Tiefe verschachteln.
  • Abschließende Leerzeichen werden in String-Vergleichen nicht berücksichtigt. Deshalb ist die Länge von leeren Strings nicht relevant.
  • Führende Nullen werden nur bei numerischen Vergleichen ignoriert.

Wichtig! Die :IF-Anweisung erkennt keine Unterschiede in Zeichen über die ersten 1024 Zeichen einem String hinaus.

Eine Bedingung enthält einen der folgenden Vergleichsoperatoren:

Operator

Kurzform

Regel

=

EQ

Der Ausdruck ist "true", wenn mindestens ein Vergleichswert dem Wert entspricht.

<>

NE

Der Ausdruck ist "true", wenn keiner der Vergleichswerte gleich dem Wert ist.

<

LT

Der Ausdruck ist "true", wenn ein Vergleichswert die definierte Bedingung erfüllt.

>

GT

<=

GT

>=

GE

Beispiele

  • Der folgende Vergleich von &a mit &b liefert "wahre" Ausdrücke, da die nachfolgenden Leerzeichen eliminiert werden, bevor die Strings verglichen werden.
  • :set &a= 'a   '
    :set &b= 'a'
    :if &a = &b
    :print 'true'
    :endif

    Weisen beide Vergleichswerte der Bedingung einen numerischen Wert auf (Datentyp signed, unsigned oder float), so wird numerisch vergleichen. In allen anderen Fällen findet ein String-Vergleich statt.

    Die folgende Bedingung ist wahr:

    : IF "0" = "0"

    Ein alphanumerischer Vergleich findet statt, wenn es keine numerischen Werte gibt.

    Die folgende Bedingung ist falsch:

    : IF "0" = "abc"

    Beim Vergleich von Strings wird nicht deren Länge geprüft. Die folgende Bedingung ist wahr, da S im Alphabet vor U steht:

    : IF "Smith" < "UX"

    Bei Bedingungen, die mehrere ODER-Schlüsselwörter beinhalten, hängt das Verhalten vom Benutzer ab.

    In den folgenden Beispielen muss einer der Werte zutreffen, damit die Bedingung erfüllt wird.

    : IF &WD# = "MON" OR "TUE" OR "WED"

    Die folgende Bedingung ist nur erfüllt, wenn die Variable keinem der drei Werte entspricht.

    : IF &WD# <> "THU" OR "FRI" OR "SAT"

    Siehe auch: