COBOL 環境でのプログラミングでは、文字、フィールド、レコード、およびファイルで構成されたデータを処理しますが、個々のデータ ビットの処理が必要になる場合もあります。たとえば、ビット操作は、次のような処理を行うアプリケーションで重要な機能です。
ビット操作で使用する次のようなルーチンが含まれたライブラリ ルーチン セットがあります。
これらの論理演算の演算結果を次の真偽表に示します。
たとえば、CBL_EQ ルーチンがビット A と B を比較する際に、A と B の両方が 0 の場合、または A と B の両方が 1 の場合は、ビットが 1 に設定されます。そうでない場合は、ビットが 0 に設定されます。
データ項目を PICTURE 文字列 1 を使用して ブール として定義することもできます(「PICTURE 句」のトピックを参照)。ブール演算子の B-AND、B-OR、B-XOR、および B-NOT を使用して、それぞれ "and"、"or"、"exclusive or"、および "negate" 演算を実行します。これらの演算子は、次の例のようにブール式で使用します。
01 My-flag PIC 1111 USAGE BIT VALUE B"0000". 01 My-flag-2 PIC 1111 USAGE BIT. ... MOVE B"0011" to My-flag-2 *> Initialize My-flag-2 ... COMPUTE My-flag = B-NOT My-flag-2 *> set the bits in My-flag to the *> reverse of My-flag-2, 1100. ... COMPUTE My-flag = My-flag B-AND B"0000" *> turn off all the bits in My-flag. ... COMPUTE My-flag-2 = My-flag-2 B-OR B"1000" *> set bit 1 ON in My-flag-2, keeping *> other bits unchanged.
ブール項目は、次の 2 つの方法でテストできます。
次の例のように、ブール項目は組み込み関数の INTEGER-OF-BOOLEAN を使用して整数に変換でき、整数項目は組み込み関数の BOOLEAN-OF-INTEGER を使用してブール型に変換できます。
01 bit-item PIC 1(6) usage BIT. 01 integer-item PIC 9(5) VALUE 544. *> 1000100000 in binary 01 integer-item-2 PIC 9(3). ... MOVE FUNCTION BOOLEAN-OF-INTEGER ( integer-item , 6) TO bit-item. *> the function returns the low order 6 bits of the binary representation of the *> integer value, and MOVE stores it in bit-item, padding on the right with 0’s ... COMPUTE integer-item-2 = FUNCTION INTEGER-OF-BOOLEAN (bit-item). *> the function returns the numeric value of the leading 6 bits (100000 in binary), 32, and *> COMPUTE puts 032 in integer-item-2