Language > Program Control > Definition of True and False

# Definition of True and False

A predicate expression is an expression that is evaluated as being “true” or “false” as part of a statement that controls program execution. IDL evaluates predicate expressions in the following contexts:

- `IF...THEN...ELSE` statements
- `? :` inline conditional expressions
- `WHILE...DO` statements
- `REPEAT...UNTIL` statements

The definition of true and false for the different data types is as follows:

Data Type | True | False
Byte, integer, and long | Odd integers | Zero or even integers
Floating point and complex | Non-zero values | Zero
String | Any string with non-zero length | Empty string ("")
Heap variables (pointers and objects) | Non-null values | Null values
List and Hash | List or Hash has at least one member | List or Hash is empty

If the LOGICAL_PREDICATE compile option is set:

Data Type | True | False
Numerical values | Non-zero values | Zero
String or heap variables | Non-null values | Null values

See COMPILE_OPT for additional details on the LOGICAL_PREDICATE compilation option.

In the following example, the logical statement for the condition is a conjunction of two conditions:

IF (LON GT -40) AND (LON LE -20) THEN ...

If both conditions (LON being larger than –40 and less than or equal to –20) are true, the statement following the THEN is executed.