Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Priorität von Operatoren

&pagelevel(4)&pagelevel

Die Priorität von Operatoren wird in zwei Stufen ausgewertet: zunächst entsprechend der Rangfolge der Operatortypen, dann innerhalb eines Operatortyps entsprechend der Rangfolge der Operatoren.

Rangfolge der „Operatortypen“:

  1. Vorzeichen, Negation

  2. arithmetische Operatoren

  3. Verkettungsoperator

  4. Vergleichsoperatoren

  5. logische Operatoren

Rangfolge der arithmethischen Operatoren („Punkt- vor Strichrechnung“):

  1. Multiplikation, Division, Modulo-Operation (*, /, MOD)

  2. Addition, Subtraktion (+, -)

Rangfolge der logischen Operatoren:

  1. Und-Verknüpfung (AND)

  2. Oder-Verknüpfung (OR, XOR)

Vergleichsoperatoren:
Alle Vergleichsoperatoren sind gleichrangig.

Beispiel

Zusammengesetzte logische Ausdrücke werden häufig in IF-Blöcken verwendet, und zwar im Operanden CONDITION des IF-Kommandos. Wenn die Bedingung, die durch den Ausdruck festgelegt ist, wahr ist, wird das Kommando bearbeitet, das dem IF-Kommando folgt. Wenn die Bedingung falsch ist, wird das nächste ELSE-IF- oder ELSE-Kommando bearbeitet (Näheres zu IF-, ELSE-IF, und ELSE-Kommando: siehe Kapitel „S-Prozeduren erstellen“ (S-Prozeduren erstellen ) oder Kapitel „SDF-P-Kommandos“ ).

Ein IF-Kommando könnte zum Beispiel folgende Bedingung enthalten:

A + B / C > D + C MOD E AND A + D * E < D * C OR F // G > H

Zum Zeitpunkt der IF-Abfrage haben die Variablen A bis H folgende Werte:

/A = 4
/B = 29
/C = 9
/D = 3
/E = 5
/F = 'ABC'
/G = 'DEF'
/H = 'ABCDE' 

Der Ausdruck wird in folgenden Schritten ausgewertet:

  1. Arithmetische Operatoren: Multiplikation / Division

    Operation

    entspricht

    Ergebnis

    B / C

    29 / 9

    3

    C MOD E

    9 MOD 5

    4

    D * E

    3 * 5

    15

    D * C

    3 * 9

    27

    Ergebnis von Schritt 1:

    A + 3 > D + 4 AND A + 15 < 27 OR F // G > H
  2. Arithmetische Operatoren: Addition

    Operation

    entspricht

    Ergebnis

    A + 3

    4 + 3

    7

    D + 4

    3 + 4

    7

    A + 15

    4 + 15

    19

    Ergebnis von Schritt 2:

    7 > 7 AND 19 < 27 OR F // G > H
  3. Verkettungsoperator

    Operation

    entspricht

    Ergebnis

    F // G

    'ABC' // 'DEF'

    'ABCDEF'

    Ergebnis von Schritt 3:

    7 > 7 AND 19 < 27 OR 'ABCDEF' > H
  4. Vergleichsoperatoren

    Operation

    Ergebnis

    7 > 7

    FALSE

    19 < 27

    TRUE

    'ABCDEF' > 'ABCDE'

    TRUE

    Ergebnis von Schritt 4:

    FALSE AND TRUE OR TRUE
  5. Logische Operatoren: AND

    Operation

    Ergebnis

    FALSE AND TRUE

    FALSE

    Ergebnis von Schritt 5:

    FALSE OR TRUE
  6. Logische Operatoren: OR

    Operation

    Ergebnis

    FALSE OR TRUE

    TRUE

    Ergebnis von Schritt 6:

    TRUE

    Die Bedingung ist demnach erfüllt.

Reihenfolge der Auswertung

Die Reihenfolge der Auswertung ist bei allen Operanden undefiniert. Es kann vorkommen, dass der rechte Operand des AND zuerst ausgewertet wird.

Beispiel

/DECLARE-VARIABLE I(TYPE = INTEGER)
/IF IS-INITIALIZED ('I') AND (I < 10)

Da zu diesem Zeitpunkt I noch nicht initialisiert ist, kommt es bei der Auswertung vonI < 10 zum Fehler.