Introductie
Eén optie van ValueTypes van Assignments is de Formula. Wanneer deze keuze is gemaakt wordt de inhoud van het Value veld als een formule verwerkt. Deze formules kunnen ook haakjes bevatten en daarmee in principe oneindig diep genest zijn. In de kern dient een formule altijd te bestaan uit een Operator met een linker en een rechter Operand. De Operand kan een constante, een variabele (element), subformule (tussen haakjes) of een functie zijn.
Bijvoorbeeld:
1+2
Is een formule met twee operands (1 en 2) en een operator (+). En:
1+(3*4)
Is een formule met twee Operands, waarbij de rechter Operand een subformule is. De subformule bestaat weer uit een formule met twee Operands (3 en 4) en een Operator (*).
Een voorbeeld van een formule met een functie als Operand:
1+MAX(3;4)
Nu wordt bij de linker Operand (1) de hoogste waarde van 3 en 4 opgeteld. Het resultaat van de formule zal 5 zijn. De parameters van de functie kunnen ook weer formules, variabelen of functies zijn, zodat heel complexe constructies mogelijk zijn.
Een voorbeeld van een formule met een variabele operand is:
[CA_VERZSOM]+100
De waarde van CA_VERZSOM wordt vermeerderd met 100. Let op dat CA_VERZSOM in het huidige pad te vinden moet zijn. Als CA_VERZSOM in een ander pad is te gelegen, dient dit pad in de formule te worden aangegeven. Bijvoorbeeld:
[../CA/CA_VERZSOM]+100
Operands
Constanten
Wanneer een Operand geen Functie, Elementnaam of Subformule is, wordt het beschouwd als een constante. Eerst wordt gecontroleerd of de constante een getal is, daarna of het een datum is en vervolgens wordt er van uitgegaan dat de constante een string betreft. Bij het optellen van string variabelen worden deze geconcateneerd. Bijvoorbeeld de formule:
Soft + Rules
Heeft als resultaat: SoftRules
En de formule:
10 + elf
Heeft als resultaat: 10elf. Dit omdat de rechter operand geen getal is en je een getal en een string niet bij elkaar op kunt tellen.
Variabelen
Variabelen in SoftRules® zijn kladblokvariabelen (beginnend met een # teken) of XML Elementen (eventueel voorafgegaan door een absoluut of relatief pad). Variabelen worden altijd tussen blokhaken [ en ] geplaatst. Wanneer het niet tussen blokhaken staat wordt de variabelenaam niet als een variabele, maar als een string gezien. Dit is een veel voorkomende beginnersfout die overigens in de debugger direct opvalt. Voorbeeld van een formule met variabelen en een functie:
IIF((100-[WA_BMPERC])>=0;((100-[WA_BMPERC])/100)*[WA_BTP];0)
Bovenstaande formule wordt gebruikt om het termijnbedrag korting BM uit te rekenen.
Functies
Met het vorige voorbeeld zijn we ook bij de Functies beland. Functies vervullen vaste taken en werken met een vaste hoeveelheid Parameters. Alle Operands zijn geschikt als Parameter van een functie. Dat wil zeggen: Constanten, Variabelen, Functies en Subformules. Bij functies zijn de Parameters gescheiden met een puntkomma ; teken. Dit aantal kan worden uitgebreid met iedere release van SoftRules® en het verdient daarom aanbeveling om regelmatig de helpbestanden te raadplegen als u wilt weten over welke functies u kunt beschikken.
Operatoren
Operatoren worden opgedeeld in rekenkundige operatoren en logische operatoren. Rekenkundige operatoren leveren een getal (of soms een string) op terwijl logische operatoren altijd een logische “WAAR” of “ONWAAR” opleveren. In SoftRules® formules worden deze twee waarden vertegenwoordigd door respectievelijk een 1 en een 0. Deze 1 en 0 kunnen verder gewoon als getal behandeld worden (als dat gewenst is).
Rekenkundige operatoren
●
|
^ (Machtsverheffen)
|
|
Bij machtsverheffen kennen we een grondtal en een exponent. Het grondtal is de linker operand, het exponent is de rechter operand. Voorbeeld:
10^2
Antwoord: 100
|
●
|
+ (Optellen)
|
|
Bij optellen worden de linker en de rechter operand opgeteld. Voorbeeld:
10+2
Antwoord: 12
|
●
|
* (Vermenigvuldigen)
|
|
Bij vermenigvuldigen worden de linker en de rechter operand met elkaar vermenigvuldigd. Voorbeeld:
10*2
Antwoord: 20
|
●
|
/ (Delen)
|
|
Bij delen wordt de linker operand (deeltal) gedeeld door de rechter operand (deler). Voorbeeld:
10/2
Antwoord: 5
|
●
|
- (Aftrekken)
|
|
Bij aftrekken worden de rechter operand van de linker operand afgetrokken. Voorbeeld:
10-2
Antwoord: 8
|
●
|
MOD (Modulo)
|
|
Bij MOD wordt het restgetal van een deling van de linker en de rechter operand, geretourneerd. Voorbeeld:
10 MOD 2
Antwoord: 0
7 MOD 3
Antwoord: 1
|
●
|
DIV (Divide)
|
|
Bij DIV wordt een deling van de linker en de rechter operand zonder restgetal uitgevoerd. Voorbeeld:
10 DIV 2
Antwoord: 5
7 DIV 3
Antwoord: 2
|
Logische operatoren
●
|
== of = (Gelijk aan)
|
|
Vergelijkt de linker en de rechter operand op basis van gelijkheid. Voorbeeld:
2==3 of 2=3
Antwoord: 0
2==2 of 2=2
Antwoord: 1
|
●
|
!= of <> (Ongelijk aan)
|
|
Vergelijkt de linker en de rechter operand op basis van ongelijkheid. Voorbeeld:
2!=3 of 2<>3
Antwoord: 1
2!=2 of 2<>2
Antwoord: 0
|
●
|
<= (Kleiner dan of gelijk aan)
|
|
Vergelijkt de linker en de rechter operand op basis van kleiner dan of gelijk aan. Voorbeeld:
2<=3
Antwoord: 1
1<=2
Antwoord: 0
|
●
|
>= (Groter dan of gelijk aan)
|
|
Vergelijkt de linker en de rechter operand op basis van groter dan of gelijk aan. Voorbeeld:
2>=3
Antwoord: 0
2>=2
Antwoord: 1
|
●
|
|| (OR)
|
|
Voorbeeld: resultaat = A || B
Het resultaat is waar als "A" waar is of als "B" waar is of als beide waar zijn. Het resultaat is onwaar als zowel "A" als "B" onwaar zijn.
|
●
|
&& (AND)
|
|
Voorbeeld: resultaat = A && B
Het resultaat is waar als zowel "A" als "B" waar zijn, in alle andere gevallen is het resultaat onwaar
|
Value editor
Behalve in Assignments, kunnen in veel andere velden in SoftRules® formules worden gebruikt. In alle invoervelden die bij een dubbelklik een Value editor tonen kan een formule worden gebruikt.