コンテンツフレーム起動

ビット構造の比較 文書を SAP ライブラリストラクチャに組み込む

論理式の第1オペランドの先頭バイトのビット構造と、第2オペランドのビット構造とを比較するには、次の演算子を使えます。

< 演算子 >

意味

O

ビットはすべて1

Z

ビットが0

M

ビットが1と0

第2オペランドの長さは 1 バイトとしてください。

第2オペランドに長さ1の 16 進型項目( X 型)を使うと便利です(必須ではありません)。これは、第2オペランドの長さが1バイトであるため、数値とそのビット構造が直接対応するからです。

演算子の機能は次のとおりです。

O (ビットはすべて1)

論理式

<f> O <hex> が真であるのは、 <hex> 内の1であるビット位置と対応する <f> のビット位置が1である場合です。

Z (ビットはすべてゼロ)

論理式

<f> Z <hex> が真であるのは、 <hex> 内の1であるビット位置と対応する <f> のビット位置が0である場合です。

M (1とゼロが混在する)

論理式

<f> M <hex> が真であるのは、 <hex> 内の1であるビット位置と対応する <f1> のビット位置の中に、少なくともひとつは1であるものがあり、かつ少なくともひとつはゼロであるものがある場合です。

例

DATA: C VALUE 'C',
HEXDEC TYPE X,
I TYPE I.

HEXDEC = 0.

DO 256 TIMES.

   I = HEXDEC.

   IF C O HEXDEC.
      WRITE: / HEXDEC, I.
ENDIF.

   HEXDEC = HEXDEC + 1.

ENDDO.

出力は次のように表示されます。

00          0

01          1

02          2

03          3

40         64

41         65

42         66

43         67

ここでは、演算子0を使用して、文字‘ C ’のビット構造を‘ 0 ’から‘ FF ’( 10 進数の 255 )までのすべての 16 進数 HEXDEC と比較しています。 HEXDEC 10 進数の値である I は、 HEXDEC I に代入する際の自動タイプ変換によって設定されています。比較の結果が真である場合は、 16 進数とその 10 進数の値が画面表示されます。以下のテーブルに、これらの数値のビット構造を示します。

16

10

ビット構造

00

0

00000000

01

1

00000001

02

2

00000010

03

3

00000011

40

64

01000000

41

65

01000001

42

66

01000010

43

67

01000011

文字‘ C ’のビット構造は、現行のハードウェアプラットフォーム用に ASCII コードの 67 と定義されています。上記の例からも判るように、一覧出力された数値の場合、ビット構造内で1になっている位置は、 67 のビット構造の中の1の位置と同じになっています。

 

 

 

 

コンテンツフレーム終了