# Comparative expressions

Comparative expressions are a subdomain of the Logical expressions and return a truth value ('true' or 'false'). The following operators can be used for comparative expressions:

• greater than '>'
• less than '<'
• greater than or equal to '>='
• less than or equal to '<='
• equal to '=='
• not equal to '!=='

Comparative operations can be used within the template syntax. One option for output them is by using the instruction \$CMS_VALUE(...)\$.

### '==' operator

The check for equality can be carried out using the operator '=='.

`a==b`

The evaluation of the expression checks whether a equals b.

Example:

`\$CMS_SET(a, 2)\$\$CMS_SET(b, a)\$\$CMS_VALUE(a==b)\$`

returns the value 'true'.

### '!=' operator

The check for inequality can be carried out using the operator '!=='.

`a!=b`

The evaluation of the expression checks whether a is not equal to b.

Example:

`\$CMS_SET(a, 2)\$\$CMS_SET(b, a)\$\$CMS_VALUE(a!=b)\$`

returns the value 'false'.

### '<' operator

The check for "less than" can be carried out using the operator '<'.

`a<b`

The evaluation of the expression checks whether a is less than b.

Example:

`\$CMS_SET(a,2)\$\$CMS_SET(b,a)\$\$CMS_VALUE(a<b)\$`

returns the value 'false'.

### '<=' operator

The check for "less than or equal to" can be carried out using the operator '<='.

`a<=b`

The evaluation of the expression checks whether a is less than b or whether a is equal to b. If one of the conditions applies the expression returns the value 'true'.

Example:

`\$CMS_SET(a,2)\$\$CMS_SET(b,a)\$\$CMS_VALUE(a<=b)\$`

returns the value 'true'.

### '>' operator

The check for "greater than" can be carried out using the operator '>'.

`a<b`

The evaluation of the expression checks whether a is greater than b.

Example:

`\$CMS_SET(a,2)\$\$CMS_SET(b,a)\$\$CMS_VALUE(a>b)\$`

returns the value 'false'.

### '>=' operator

The check for "greater than or equal to" can be carried out using the operator '>='.

`a>=b`

The evaluation of the expression checks whether a is greater than b or whether a is equal to b. If one of the conditions applies the expression returns the value 'true'.

Example:

`\$CMS_SET(a,2)\$\$CMS_SET(b,a)\$\$CMS_VALUE(a>=b)\$`

returns the value 'true'.

### Operator precedence

In FirstSpirit combinations of several operators within logical or comparative expressions are evaluated, like in other programming languages (e.g. Java), in a specific order.

In a logical AND operation (conjunction) a && b b is not evaluated if a returns already the Boolean value 'false'. In a logical OR operation (disjunction) a || b b is not evaluated if a returns already the Boolean value 'true'.

In addition there is a ranking order of operators: Comparative expressions ("==", "!=", "<", ">", "<=", ">=") have higher precedence than Logical expressions ("&&", "||"). This means that comparative expressions are evaluated before logical expressions, special use of parentheses is not necessary.

Furthermore, within comparative expressions the operators "<", ">", "<=" and ">=" have higher precedence than the operators "==" and "!=" and are evaluated first. Within the logical expressions "&&" has higher precedence than "||". Before logical and comparative expressions are evaluated, first of all Arithmetical operations are performed.Consequently the following operator precedence results: * / % (multiplication, division, modulo division) + - (addition, subtraction) < > <= >= (less than, greater than, less than or equal, greater than or equal) == != (equality, inequality) && (logical AND) || (logical OR) Operators with the same precedence are evaluated from left to right. Using parentheses can alter the order of evaluation determined by operator precedence.

Example:

The text "The value of the variable a begins with b or B." is to be output if a is not null and the value (here Ball) begins with the character "b" (in upper or lower case).

`\$CMS_SET(a, "Ball")\$\$CMS_IF(a != null && a.charAt(0).toString.lowerCase == "b")\$    The value of the variable a begins  with  b or B.\$CMS_END_IF\$`

In this example the expression a != null as well as the expression a.charAt(0).toString.lowerCase == "b" return the Boolean value 'true'. Result: The text will be output.

In a second example the text "The value of the variable a begins with b or B." is to be output if a is not null and the value begins with the character "b" (in upper or lower case).

`\$CMS_SET(a, null)\$\$CMS_IF(a != null && a.charAt(0).toString.lowerCase == "b")\$   The value of the variable a begins  with  b or B.\$CMS_END_IF\$`

In this case the text will not be output because first the expression a != null is evaluated. It returns the value 'false' so that the operator with the lower priority (here: &&) takes no effect at all.