Four binary bitwise operators and one unary bitwise operator can be used in arithmetic expressions. They are represented by reserved words that must be preceded by a space and followed by a space.

Binary Bitwise Operators | Meaning |
---|---|

B-AND | The effect of performing a logical AND upon each positionally-matched pair of bits from the two operand data items: set the bit on if both bits are on. |

B-OR | The effect of performing a logical OR upon each positionally-matched pair of bits from the two operand data items: set the bit on if at least one of the bits are on. |

B-XOR | The effect of performing a logical XOR (exclusive OR) upon each positionally-matched pair of bits from the two operand data items: set the bit on if both bits differ. |

B-EXOR | The effect of performing a logical XOR (exclusive OR) upon each positionally-matched pair of bits from the two operand data items: set the bit on if both bits differ. |

Unary Bitwise Operator | Meaning |
---|---|

B-NOT | The effect of performing a logical NOT upon the operand data item: sets each 'on' bit off, and each 'off' bit on. |

B-XOR and B-EXOR are equivalent.

These operators can only be used in any arithmetic expressions with COMP-5, COMP-X or numeric literal operands. B-NOT takes one operand. The rest take two operands. The result is as if the equivalent logical operator library routine were used on the operands and the result returned in a temporary data item the size of the largest item used. If the items differ in size then the smaller item is moved to a temporary data item of the same size as the larger item. If the operands are of mixed type (COMP-5, COMP-X) then the smaller operand is moved to a temporary item of the same type as the larger. For best performance use consistent data types.

Here is an example program:

data division. working-storage section. 01 n1 pic 9(9). 01 n2 pic xx comp-5. 01 n3 pic xxxx comp-5. procedure division. move 2 to n2 move 4 to n3 compute n1 = n2 b-or n1 *> n1 = 6 if n2 b-and n1 = n2 display 'true' end-if compute n1 = b-not n2 *> n1 = 65533 compute n1 = n2 b-xor n3 + 1 *> n1 = 7 compute n1 = n2 b-and 2 *> n1 = 2