## Conditional expressions

Version 2.32

Manual page for Conditional_expressions(PL)

Note: this page describes conditional expressions as used in ploticus #if statements.`` select attributes are slightly different and are described here.``

Conditional expressions use a simple syntax made up of operators such as `=` and `!=`, operands, and logical connectors such as `&&` and `||`. Operands may be literal numeric, alphanumeric, or text string values, @variables, @data-fields, or functions . In scripts , literal string operands may be enclosed in double quotes (") (but no quotes may be used in ploticus select: attributes) .`` There is no concept of precedence in these expressions (other than left to right); parentheses cannot be used except within strings.``

## Examples

- In a script , see if the value of the variable @SUM is greater than 100:

    	 #if @SUM > 100
    	...
    	 #endif

- Another example:

    	 #if @SUM > 100 && @STATUS = s

- Check to see if @description has any contents:

    	 #if $len(@description) > 0

- Check to see if @val is a valid number:

    	 #if $isnumber(@val) = 1

- See if @C does not countain a double quote:

    	 #if @C != "\""

Here's a conditional expression for finding lastname beginning with `Gr`, `Gu` or `Gy`:

    	@lastname inlike Gr*,Gu*,Gy*

## Operands

Operands may be

- @variables
- @field numbers, e.g. @1 = first data field
- Literal values (numbers, alphanumerics, text strings, commalists )
- Functions

In scripts , literal alphanumeric, text string, or commalist operands may be enclosed in double quotes ("); no variable evaluation occurs inside quoted strings.``

## Comparison operators

      = 	Equal to.  This is case sensitive for strings.
      !=	Not equal to.
      > 	Greater than.
      >= 	Greater than or equal to.
      <  	Less than.
      <= 	Less than or equal to.

  If at least one operand is non-numeric, comparison operators such as > will do an ascii value comparison.``

Wild card matching: Wild card matching may be done using like. Wild card characters are * which matches any number of any character, and ? which matches a single instance of any character. This matching is case-insensitive.``

      like	Wild card match.  Example: hello like h* (true)
      !like	Not a wild card match.

Commalist operators: these take a commalist on the right side.`` By default, lists are delimited using commas. If this is not convenient, the list delimitation character may be changed using #control listsep .``

      in	Member of list.  Example: z in x,y,z (true)
      !in	Not a member of list. (Alt: ni)
      inlike 	Same as in but wild card matching is used.
      		(Wild cards may be used in list members.)
      !inlike	Same as !in but wild card matching is used.

## Logical connectors

Individual conditional expressions may be connected together using logical AND (&&) or OR (||).`` An entire expression may be negated by putting not: at the beginning of the expression.``

Because parentheses may not be used to establish precedence mixing AND and OR in the same expression requires care.`` When the expression is parsed, it is first split into OR terms, then each of the OR terms is split into AND terms.`` For example: `A = B and C = D or E = E of F = G` would evaluate to true, because it is interpreted as if it were written `(a = B and C = D) or (e = e) or (f = g)`.`` It may be best to avoid mixing AND and OR in the same expression and use multiple expressions instead.``

## Limitations and bugs

Because parentheses may not be used to establish precedence, the mixing of AND and OR in the same expression is problematic (see above).``
data display engine
Copyright Steve Grubb

Markup created by unroff 1.0, `` `` August 23, 2005.