For masking operations, a bitwise logical expression has a Boolean result; each of its bits is the result of one or more logical operations on the corresponding bits of the operands.
For binary arithmetic operators, and for relational operators:
If one operand is Boolean, the operation is performed with no conversion.
If both operands are Boolean, the operation is performed as if they were integers.
No user-specified function can generate a Boolean result, although some (nonstandard) intrinsics can.
Boolean and logical types differ as follows:
Variables, arrays, and functions can be of logical type, but they cannot be Boolean type.
There is a LOGICAL statement, but no BOOLEAN statement.
A logical variable, constant, or expression represents only two values, .TRUE. or .FALSE. A Boolean variable, constant, or expression can represent any binary value.
Logical entities are invalid in arithmetic, relational, or bitwise logical expressions. Boolean entities are valid in all three.