Quick start manual
Syntactic elements
4-9
Expressions
Use the $B compiler directive to control evaluation mode. The default state is {$B–},
which enables short-circuit evaluation. To enable complete evaluation locally, add
the {$B+} directive to your code. You can also switch to complete evaluation on a
project-wide basis by selecting Complete Boolean Evaluation in the Compiler
Options dialog (all source units will need to be recompiled).
Note
If either operand involves a variant, the compiler always performs complete
evaluation (even in the {$B–} state).
Logical (bitwise) operators
The following logical operators perform bitwise manipulation on integer operands.
For example, if the value stored in X (in binary) is 001101 and the value stored in Y is
100001, the statement
Z := X or Y;
assigns the value 101101 to Z.
The following rules apply to bitwise operators.
• The result of a not operation is of the same type as the operand.
•If the operands of an and, or, or xor operation are both integers, the result is of the
predefined integer type with the smallest range that includes all possible values of
both types.
• The operations x shl y and x shr y shift the value of x to the left or right by y bits,
which (if x is an unsigned integer) is equivalent to multiplying or dividing x by 2
y
;
the result is of the same type as x. For example, if N stores the value 01101 (decimal
13), then Nshl1 returns 11010 (decimal 26). Note that the value of y is interpreted
modulo the size of the type of x. Thus for example, if x is an integer, x shl 40 is
interpreted as x shl 8 because an integer is 32 bits and 40 mod 32 is 8.
String operators
The relational operators =, <>, <, >, <=, and >= all take string operands (see
“Relational operators” on page 4-11). The + operator concatenates two strings.
Table 4.7 Logical (bitwise) operators
Operator Operation Operand types Result type Examples
not bitwise negation integer integer not X
and bitwise and integer integer X and Y
or bitwise or integer integer X or Y
xor bitwise xor integer integer X xor Y
shl bitwise shift left integer integer X shl 2
shr bitwise shift right integer integer Y shr I
Table 4.8 String operators
Operator Operation Operand types Result type Example
+ concatenation string, packed string, character string S + '. '