ビット演算子

算術式に使用できる演算子には、4 つの 2 項ビット演算子と、1 つの単項ビット演算子がある。これらの演算子は予約語で表し、前後を空白で区切る。

2 項ビット演算子 意味
B-AND 2 つのデータ項目の論理積を実行した結果
B-OR 2 つのデータ項目の論理和を実行した結果
B-XOR 2 つのデータ項目の排他的論理和を実行した結果
B-EXOR 2 つのデータ項目の排他的論理和を実行した結果
単項ビット演算子 意味
B-NOT データ項目の論理否定を実行した結果

B-XOR および B-EXOR は同義語である。

これらの演算子は、COMP-5、COMP-X、または数字定数の作用対象から構成される算術式の中でのみ使用できる。B-NOT は 1 つの作用対象を受け付け、その他は 2 つの作用対象を受け付ける。結果は、同等の論理演算子ライブラリ ルーチンを作用対象に対して使用して、一時データ項目に使用する最大の項目のサイズが返された場合と同様の結果になる。項目のサイズが異なる場合、小さい項目は大きい項目と同じサイズの一時データ項目に移動される。作用対象が混合タイプ (COMP-5、COMP-X) の場合、小さい作用対象は大きい作用対象と同じタイプの一時項目に移動される。最高のパフォーマンスを得るには、一貫したデータ タイプを使用すること。

次にプログラムの例を示す。

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