Eenvoudig

Informatie over eenvoudige expressies

Eenvoudige FormCalc-expressies bestaan uit groepen operatoren, trefwoorden en literals die op een logische manier aaneengeschakeld zijn. Dit zijn bijvoorbeeld eenvoudige expressies:

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

Elke FormCalc-expressie wordt na verwerking in de gebruikelijke bewerkingsvolgorde omgezet in een enkele waarde, zelfs als de volgorde niet altijd tot uitdrukking komt in de syntaxis van de expressie. Als de volgende expressies bijvoorbeeld op objecten in een formulierontwerp worden uitgevoerd, zijn de resultaten gelijk:

Expressie

Is gelijk aan

Geeft als resultaat

"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 (waar)

2 < 3 not 1 == 1

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

0 (onwaar)

Zoals in de vorige tabel te zien is, hebben alle FormCalc-operatoren een bepaalde voorrang wanneer ze in expressies voorkomen. De volgende tabel illustreert de hiërarchie van deze operatoren:

Voorrang

Operator

Hoogste

=

 

(Monadisch) - , + , not

 

* , /

 

+ , -

 

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

 

== , <> , eq , ne

 

&amp; , and

Laagste

| , or

Operands converteren

Wanneer een operandtype binnen een bepaalde bewerking niet overeenkomt met het verwachte type, wordt de operand door FormCalc geconverteerd naar het vereiste type. Hoe dit gebeurt, is afhankelijk van het type operand dat vereist is voor die bewerking.

Numerieke bewerkingen

Wanneer u numerieke bewerkingen uitvoert met niet-numerieke operands, worden de niet-numerieke operands eerst omgezet in een numeriek equivalent. Als de niet-numerieke operand niet in een numerieke waarde kan worden omgezet, wordt de waarde 0 gebruikt. Null-operands die naar een numerieke waarde worden geconverteerd, krijgen altijd de waarde nul.

In de volgende tabel ziet u voorbeelden van niet-numerieke operands die worden geconverteerd:

Expressie

Is gelijk aan

Geeft als resultaat

(5 - "abc") * 3

(5 - 0) * 3

15

"100" / 10e1

100 / 10e1

1

5 + null + 3

5 + 0 + 3

8

Booleaanse bewerkingen

Wanneer u Booleaanse bewerkingen uitvoert met niet-Booleaanse operands, worden de niet-Booleaanse operands eerst omgezet in een Booleaans equivalent. Als de niet-Booleaanse operand niet in een andere waarde dan nul kan worden omgezet, wordt de waarde 1 (waar) gebruikt en anders de waarde 0 (onwaar). Null-operands die naar een Booleaanse waarde worden geconverteerd, krijgen altijd de waarde 0 (onwaar). De volgende expressie:

    "abc" | 2

resulteert in 1. Dus: false | true = true, waarbij

    if ("abc") then 
    10 
    else 
    20 
    endif

resulteert in 20.

Bewerkingen met tekenreeksen

Wanneer u bewerkingen met tekenreeksen uitvoert op niet-tekenreeks operands, worden de niet-tekenreeks operands eerst omgezet in tekenreeksen doordat hun waarde als tekenreeks wordt gebruikt. Null-operands die naar een tekenreeks worden geconverteerd, krijgen altijd een lege tekenreeks als waarde. De volgende expressie:

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

wordt geconverteerd naar "The total is 2 dollars and 57 cents."

Opmerking: Als de verwerking van een expressie de tussenliggende stap NaN, +Inf of -Inf oplevert, genereert FormCalc een foutuitzondering en blijft de fout voor de rest van de expressie bestaan. De waarde van de expressie zal daarom altijd 0 zijn. Bijvoorbeeld:
    3 / 0 + 1

resulteert in 0.