Conditional expressions may be combined with the boolean operators: & (and), | (or) and && (xor). They may also be reversed with the \ (not) operator.

The & operator causes the combined expression to be regarded as true only if all of the individual expressions are true. If any one (or more) of the individual expressions is false, then the combined expression is false.

The | operator causes the combined expression to be regarded as true if one (or more) of the individual expressions is true. Only when all of the individual expressions are false, then the combined expression is false.

The && operator causes the combined expression to be regarded as true when one and only one of the individual expressions is true. If more than one expression is true, or none of the expressions are true, then the combined expression is false.

The \ or ^ operators reverse the result of any expression after it. An expression that REXX normally evaluates as true is changed to false when the \ or ^ operator preceeds it. Similarly, an expression that normally evaluates as false is changed to true when preceded by a \ or ^ operator.

/* Decide what range My_Variable's value is in,
   and print out that range */
SAY "Enter a number"
PULL My_Variable
IF My_Variable>0 & My_Variable<10 THEN SAY "1-9"
IF My_Variable\<10 & My_Variable<20 THEN SAY "10-19"
IF \ (My_Variable<20 | My_Variable>=30) THEN SAY "20-29"
IF My_Variable<=0 | My_Variable>=30 THEN SAY "Out of range"
Note that we didn't put ELSE keywords before the second, third, and fourth IF keywords. Therefore, REXX tests the expression of each of those IF conditionals, executing whichever ones happen to be true. (Of course, due to the particular expressions that we've used, only 1 will ever be true for any given value of My_Variable).

The above script may also be written using SELECT.

/* Decide what range My_Variable's value is in,
   and print out that range */
SAY "Enter a number"
PULL My_Variable
SELECT
   WHEN My_Variable>0 & My_Variable<10 THEN SAY "1-9"
   WHEN My_Variable\<10 & My_Variable<20 THEN SAY "10-19"
   WHEN \ (My_Variable<20 | My_Variable>=30) THEN SAY "20-29"
   OTHERWISE SAY "Out of range"
END
Of course, only 1 of the WHEN instructions ever gets executed when this SELECT is executed.