# Rexx Programming/How to Rexx/boolean

Boolean values are logical truth values that are considered either true or false. Rexx uses 1 to mean "true" and 0 to mean "false". Some programming languages have many different kinds of values that could be treated as Boolean, depending on the context. The Rexx programming language itself only recognizes 0 and 1 for this purpose.

```/* Some Boolean variables */
raining = 1
freezing = 1
snowing = 0
hailing = 0
/* Boolean values affect control structures... */
/* The computer will say we might need an umbrella. */
select
when raining then say "You might need an umbrella."
when snowing then say "Let's build a snowman!"
when hailing then say "Ouch! There's hail."
otherwise say "There might not be any precipitation."
end
/* The computer will tell us to watch out for ice. */
if freezing then say "Watch out for ice!"
else say "At least it's not freezing outside."
/* This loop will never start because it isn't snowing. */
do while snowing
say "It'll just keep snowing forever!"
end
```

## Logical Operators

Operators exist to combine Boolean values into new Boolean values. The ampersand (&) means "and", the pipe symbol (|) means "or" and the backslash (\) means "not".

```if raining | snowing then
say "It's either raining or snowing--maybe both."
if raining & freezing then
say "Expect freezing rain."
if \ snowing then
say "No snow today."
if \ (raining | snowing) then
say "It's neither raining nor snowing."
```

## Relational Operators

Some other operations combine other kinds of values to make true or false statements. They will always result in 0 or 1. You can read about them in the comparative operators section. The remainder when an integer is divided by 2 will technically result in a Boolean value, but other kinds of remainders will not.

```say 2 < 3             /* says 1 */
say "happy" = "sad"   /* says 0 */
/* We can use Booleans to validate input: */
do until positive & even
say "Enter a positive even number:"
pull number
positive = number > 0
odd = number // 2
even = \ odd
end
```