Next: Binary Relationals, Previous: Binary Logic, Up: Operators [Contents][Index]

Binary conditional operators are defined for integer scalars (Scalars). They are somewhat similar to the corresponding binary logical operators (Binary Logic) but suppress evaluation of the second operand if the first operand is sufficient to determine the value of the whole expression.

The available conditional operators are:

- Conditional And
`x ANDIF y`

yields 0 if`x`

is equal to zero (and then`y`

is not evaluated), and yields 1 if both`x`

and`y`

are unequal to zero. These results are the same as returned by`x NE 0 AND y NE 0`

(Binary Relationals), except that`y`

is not evaluated if`x`

is equal to zero, for then the value of the whole expression is zero regardless of the value of`y`

.- Conditional Or
`x ORIF y`

yields 1 if`x`

is unequal to zero (and then`y`

is not evaluated), and yields 0 if both`x`

and`y`

are equal to zero. These results are the same as returned by`x NE 0 OR y NE 0`

, except that`y`

is not evaluated if`x`

is unequal to zero, for then the value of the whole expression is zero regardless of the value of`y`

.

Conditional operators provide short-hand notation for certain IF statements:

IF x THEN IF y THEN statement

can be rewritten

IF x ANDIF y THEN statement

and

IF`THEN statement ELSE IF`

x`THEN statement`

y

can be rewritten

IF`ORIF`

x`THEN statement`

y

Such `if`

statements (and therefore the use of conditional
operators) is useful if `y`

is expensive to calculate or if it may
lead to an error when `y`

is nonzero. For example, in the `if`

statement

IF z EQ 0 ORIF 123/z GT 5 THEN T,'OK'

the `orif`

operator prevents division by zero in `123/z`

if
`z`

is equal to zero, and in the `if`

statement

IF ok EQ 17 ANDIF EXPENSIVE(x + 2) THEN T,'OK'

the `andif`

operator prevents evaluation of `EXPENSIVE(x + 2)`

if `ok`

is not equal to 17.

Next: Binary Relationals, Previous: Binary Logic, Up: Operators [Contents][Index]