!--a11y-->
論理式の第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.
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の位置と同じになっています。
