Logische Berechnungen werden mit logischen Ausdrücken formuliert, bei
deren Auswertung sich ein Ergebnis vom
logischen Typ mit dem Wert oder
ergibt. Jede logische Konstante, Variable,
jeder Vergleichsausdruck und jeder
Aufruf einer logischen Funktion ist ein
einfacher logischer Ausdruck.
Kompliziertere logische Ausdrücke werden gebildet durch Verknüpfung logischer Operanden mit logischen Operatoren und Klammern.
Logische Operatoren sind
Operator | Name | Gebrauch |
.NOT. | Negation | .NOT.X |
.AND. | Konjunktion | X1.AND.X2 |
.OR. | Disjunktion | X1.OR.X2 |
.EQV. | Äquivalenz | X1.EQV.X2 |
.NEQV. | Antivalenz | X1.NEQV.X2 |
mit der folgenden Wertetabelle:
X1 | X2 | .NOT.X2 | X1.AND.X2 | X1.OR.X2 | X1.EQV.X2 | X1.NEQV.X2 |
.TRUE. | .TRUE. | .FALSE. | .TRUE. | .TRUE. | .TRUE. | .FALSE. |
.TRUE. | .FALSE. | .TRUE. | .FALSE. | .TRUE. | .FALSE. | .TRUE. |
.FALSE. | .TRUE. | .FALSE. | .FALSE. | .TRUE. | .FALSE. | .TRUE. |
.FALSE. | .FALSE. | .TRUE. | .FALSE. | .FALSE. | .TRUE. | .FALSE. |
In einem Vergleichsausdruck können die Werte zweier arithmetischer, zweier logischer oder zweier Zeichenausdrücke verglichen werden, nicht jedoch z.B. der Wert eines arithmetischen mit dem eines Zeichenausdrucks. Für Vergleichsoperationen mit REAL-Größen sei auf Abschnitt 4.4 hingewiesen. Vergleichsausdrücke treten nur in logischen Ausdrücken auf, ihr Wert ist wahr oder falsch.
Es gibt folgende Vergleichsoperatoren:
Operator | Name | Gebrauch | Bedeutung |
.LT. | X1.LT.X2 | ||
< | less than | X1 < X2 | Ist X1 kleiner als X2? |
.LE. | X1.LE.X2 | ||
<= | less or equal | X1 <= X2 | Ist X1 kleiner oder gleich X2? |
.EQ. | X1.EQ.X2 | ||
== | equal | X1 == X2 | Ist X1 gleich X2? |
.NE. | X1.NE.X2 | ||
/= | not equal | X1 /= X2 | Ist X1 ungleich X2? |
.GT. | X1.GT.X2 | ||
> | greater than | X1 > X2 | Ist X1 größer als X2? |
.GE. | X1.GE.X2 | ||
>= | greater or equal | X1 >= X2 | Ist X1 größer oder gleich X2? |
Die Punkte bei den logischen und Vergleichsoperatoren sind zwingender Bestandteil. Die oben tabellierten Vergleichsoperatoren gelten nur für numerische Typen. Logische Typen und Zeichenketten lassen sich nur auf (Un-)Gleichheit überprüfen. Weitere, auf Zeichenketten beschränkte Vergleichsoperatoren sind im Abschnitt 4.2.7 erwähnt. Die Reihenfolge der Auswertung von (hier numerischen) Ausdrücken wird normalerweise durch Klammern vorgegeben. Generell gilt folgende Rangfolge:
0. Klammern
1. Funktionsaufruf
2. **
3. Vorzeichenoperationen
4. * und /
5. + und -
6. Vergleichsoperationen
7. .NOT.
8. .AND.
9. .OR.
10. .EQV. und .NEQV.
Stehen gleichrangige Operationen nebeneinander, so wird von links nach rechts interpretiert (Ausnahme: Exponentiation!).
Danach ist der Ausdruck (mit REAL P,G und LOGICAL L,K)
-P**2.GE.G.AND.L.OR..NOT.K
gleichbedeutend mit
(((-(P**2)).GE.G).AND.L).OR.(.NOT.K)
Es soll hier nochmals betont werden, daß die Verwendung von Klammern, auch wenn sie überflüssig sind, die Verständlichkeit und Lesbarkeit von Ausdrücken wesentlich verbessert, siehe obiges Beispiel.