Logische Ausdrücke

Mithilfe logischer Ausdrücke wird der Pfad festgelegt, den Ihre Programmlogik durch bedingte Anweisungen und Schleifenanweisungen wie beispielsweise 'if', 'while', 'for' und 'case' durchläuft.

Die nachstehende Tabelle enthält eine Übersicht über die Operatoren und Operanden für elementare logische Ausdrücke. Elementare Ausdrücke bestehen aus einem Operanden, einem Vergleichsoperator und einem zweiten Operanden.

Tabelle 1. Elementare logische Ausdrücke
Erster Operand Vergleichsoperator Zweiter Operand
Ausdruck für Datum/Uhrzeit ==, != , <, >, <=, >= Ausdruck für Datum/Uhrzeit

Der Typ des ersten Ausdrucks muss mit dem des zweiten Ausdrucks kompatibel sein. Siehe Zuordnungskompatibilität in EGL.

Bei Vergleichen für Datum/Uhrzeit steht das Größer-als-Zeichen (>) für einen späteren Zeitpunkt, wohingegen das Kleiner-als-Zeichen (<) für einen früheren Zeitpunkt steht.

Numerischer Ausdruck ==, != , <, >, <=, >= Numerischer Ausdruck
Zeichenfolgeausdruck ==, != , <, >, <=, >= Zeichenfolgeausdruck

Siehe Zuordnungskompatibilität in EGL.

Zeichenfolgeausdruck like Regulärer Ausdruck

Ein Zeichenfeld oder -literal, mit dem der Zeichenfolgeausdruck verglichen wird, und zwar Zeichenposition für Zeichenposition von links nach rechts. Der reguläre Ausdruck kann Platzhalter- und Escapezeichen enthalten.

Zeichenfolgeausdruck matches Regulärer Ausdruck

Ein Zeichenfeld oder -literal, mit dem der Zeichenfolgeausdruck verglichen wird, und zwar Zeichenposition für Zeichenposition von links nach rechts. Der reguläre Ausdruck kann Platzhalter- und Escapezeichen enthalten. Die Regeln für reguläre Ausdrücke unterscheiden sich bei den Operatoren 'like' und 'matches'.

Wert vom Typ NUM oder CHAR ==, != , <, >, <=, >= Wert vom Typ NUM oder CHAR
Suchwert in Feldgruppenname

Weitere Informationen finden Sie unter Operator 'in'.

Variable im Basisdatensatz
  • is
  • not
Eine der folgenden Optionen:
  • blanks. Schlüsselwort, um zu testen, ob der Wert einer Zeichenvariablen nur Leerzeichen enthält oder nicht.
  • numeric. Schlüsselwort, um zu testen, ob der Wert einer Zeichenvariablen (mit Ausnahme des Typs DBCHAR) numerisch ist oder nicht.
sysVar.systemType
  • is
  • not
Weitere Informationen finden Sie unter systemType.
Datensatzname
  • is
  • not
Ein zur Datensatzorganisation passender E/A-Fehlerwert. Siehe E/A-Fehlerwerte.

Komplexe logische Ausdrücke

Mithilfe der Operatoren 'und' (&&) sowie 'oder' (||) können Sie komplexe Ausdrücke erstellten, indem Sie Paare von elementaren Ausdrücken entsprechend kombinieren. Darüber hinaus können Sie den Operator 'nicht' (!) verwenden, um den Wert eines Ausdrucks umzukehren (indem TRUE in FALSE und FALSE in TRUE geändert wird).

Wenn ein logischer Ausdruck elementare logische Ausdrücke enthält, die als Operanden mindestens eines Operators 'oder' dienen, wertet EGL den Ausdruck gemäß den Prioritätsregeln aus. Die Auswertung wird gestoppt, sobald einer der elementaren logischen Ausdrücke in TRUE (wahr) aufgelöst wird. Ein Beispiel:
  var01 == var02 || 3 in array03 || x == y

Wenn var01 nicht mit var02 übereinstimmt, wird die Auswertung fortgesetzt. Wenn der Wert 3 in array03 vorhanden ist, ist der Ausdruck insgesamt TRUE (wahr), und EGL braucht den letzten elementaren logischen Ausdruck (x == y) nicht mehr auszuwerten.

Ähnlich gilt: Wenn elementare logische Ausdrücke mit Operatoren des Typs 'und' kombiniert werden, stoppt EGL die Auswertung, sobald einer der elementaren logischen Ausdrücke in FALSE (falsch) aufgelöst wird. Im folgenden Beispiel stoppt die Auswertung, sobald festgestellt wird, dass 'var01' nicht mit 'var02' übereinstimmt:

  var01 == var02 && 3 in array03 && x == y
Sie können in einem logischen Ausdruck Klammerpaare für folgende Zwecke verwenden:
  • Um die Reihenfolge der Auswertung zu ändern.
  • Um die Bedeutung klarzustellen.
  • Um die Verwendung des Operators 'not' (!) zu ermöglichen, der in einen booleschen Wert (TRUE oder FALSE) aufgelöst wird, der im Gegensatz zum Wert eines unmittelbar folgenden logischen Ausdrucks in Klammern steht.

Kompatibilität

Tabelle 2. Hinweise zur Kompatibilität für logische Ausdrücke
Plattform Problem
COBOL-Generierung COBOL bietet keine Möglichkeit für den Vergleich von MBCHAR oder DBCHAR mit UNICODE oder STRING.
JavaScript-Generierung Es werden ausschließlich die folgenden Varianten des Operators 'is ' und 'not ' unterstützt: Verwendung von 'sysVar.systemType' und datensatzspezifische Tests für 'blanks' und 'numeric'.

Die folgenden Typen werden nicht unterstützt: ArrayDictionary (Feldgruppenwörterverzeichnis), BIN (mit Dezimalstellen), BLOB, CHAR, CLOB, DBCHAR, HEX, INTERVAL, MBCHAR, NUMC, STRING (mit Größenbegrenzung), PACF, UNICODE und strukturierte Datensatzabschnitte.

VisualAge Generator-Kompatibilitätsmodus Sie können 'is' bzw. 'not' nicht verwenden, um einen Wert zu testen, der von 'vgLib.getVAGSysType()' zurückgegeben wird.

Feedback