Einfach

Grundlagen zu einfachen Ausdrücken

In ihrer elementarsten Form sind FormCalc-Ausdrücke Gruppen von Operatoren, Schlüsselwörtern und Literalen, die logisch miteinander verknüpft sind. In den folgenden Fällen zum Beispiel handelt es sich jeweils um einfache Ausdrücke:

    2 
    "abc" 
    2 - 3 * 10 / 2 + 7

Jeder FormCalc-Ausdruck wird zu einem einzelnen Wert aufgelöst. Dabei gilt die konventionelle Reihenfolge der Operationen, auch wenn diese Reihenfolge aus der Syntax der Ausdrücke nicht immer offensichtlich ist. Wenn beispielsweise die folgenden Ausdrücke auf Objekte in einem Formularentwurf angewandt werden, sehen die Ergebnisse wie folgt aus:

Ausdruck

Entspricht

Rückgabe

"abc"

"abc"

abc

2 - 3 * 10 / 2 + 7

2 - (3 * (10 / 2)) + 7

-6

10 * 3 + 5 * 4

(10 * 3) + (5 * 4)

50

0 and 1 or 2 > 1

(0 and 1) or (2 >1)

1 (true)

(2 < 3) nicht (1 == 1)

(2 < 3) not (1 == 1)

0 (false)

Wie aus der obigen Tabelle hervorgeht, besitzen alle FormCalc-Operatoren innerhalb von Ausdrücken eine bestimmte Priorität. Die folgende Tabelle zeigt die Hierarchie der Operatoren im Überblick:

Priorität

Operator

Höchste

=

(Unär) - , + , not

* , /

+ , -

< , <= , > , >= , lt , le , gt , ge

== , <> , eq , ne

& , and

Niedrigste

| , oder

Umwandlung von Operanden

Falls ein oder mehrere Operanden in einer bestimmten Operation nicht dem erwarteten Typ für die betreffende Operation entsprechen, wandelt FormCalc die Operanden in den benötigten Typ um. Wie diese Umwandlung erfolgt, hängt davon ab, welchen Operandentyp die Operation benötigt.

Numerische Operationen

Bei der Ausführung von numerischen Operationen, an denen nicht-numerische Operanden beteiligt sind, werden die nicht-numerischen Operanden zunächst in ihre numerische Entsprechung umgewandelt. Wenn sich der nicht-numerische Operand nicht erfolgreich in einen Zahlenwert konvertieren lässt, ist sein Wert 0. Wenn nullwertige Operanden in Zahlen umgewandelt werden, ist ihr Wert stets 0.

Die folgende Tabelle liefert einige Beispiele für die Anpassung von nicht-numerischen Operanden.

Ausdruck

Entspricht

Rückgabe

(5 - "abc") * 3

(5 - 0) * 3

15

"100" / 10e1

100 / 10e1

1

5 + null + 3

5 + 0 + 3

8

Boolesche Operationen

Bei der Ausführung von booleschen Operationen, an denen nicht-boolesche Operanden beteiligt sind, werden die nicht-booleschen Operanden zunächst in ihre booleschen Entsprechungen umgewandelt. Wenn sich der nicht-boolesche Operand nicht erfolgreich in einen von 0 verschiedenen Wert umwandeln lässt, hat er den Wert TRUE (1); andernfalls hat er den Wert FALSE (0). Wenn nullwertige Operanden in einen booleschen Wert umgewandelt werden, ist dieser Wert stets FALSE (0). Beispielsweise wird der Ausdruck

    "abc" | 2

als 1 ausgewertet. Das heißt, false | true = true. Hingegen wird

    if ("abc") then 
    10 
    else 
    20 
    endif

als 20 ausgewertet.

Zeichenfolgenoperationen

Wenn Zeichenfolgenoperationen bei Operanden ausgeführt werden, die keine Zeichenfolgen sind, werden diese Operanden zunächst in Zeichenfolgen umgewandelt. Dabei wird jeweils der Wert des Operanden als Zeichenfolge verwendet. Wenn nullwertige Operanden in Zeichenfolgen umgewandelt werden, entspricht ihr Wert stets der leeren Zeichenfolge. Beispielsweise wird der Ausdruck

    concat("The total is ", 2, " dollars and ", 57, " cents.")

ausgewertet zu "Die Summe beträgt 2 Dollar und 57 Cent."

Hinweis: Wenn während der Auswertung eines Ausdrucks ein Zwischenschritt das Ergebnis NaN, +Inf oder -Inf liefert, erzeugt FormCalc einen Ausnahmefehler und überträgt diesen Fehler auf den Rest des Ausdrucks. Dadurch liefert dieser Ausdruck stets den Wert 0 – Beispiel:
    3 / 0 + 1

wird als 0 ausgewertet.