ビット演算子

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

二項ビット演算子 意味
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 n3        *> n1 = 6
     if n2 b-and n3 = 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