比較演算子とそれが表す演算は次のとおりです。
比較演算子は、2 つの作用対象の関係を検査します。結果は常にブール値 (長さ 1 のビット文字列) です。比較が真である場合、結果値は '1'B となり、比較が偽である場合、結果値は '0'B となります。すべての比較演算子は、中置演算子です。
比較演算子で使用するすべての作用対象は、スカラーでなければなりません。いずれかの作用対象が算術値またはピクチャ値である場合、それらの作用対象は、加算演算子の作用対象であるかのように共通の算術型に変換されます。一方の作用対象がポインター値で、他方がオフセット値である場合、= および ^= の比較に限り、オフセットがポインターに変換されます。それ以外の場合は、2 つの作用対象のデータ型が同等でなければなりません。
2 つのデータ型が同等かどうかを判別する際には、ALIGNED、VARYING、RETURNS、UNALIGNED、VARIABLE、および文字列の長さの属性は無視されます。ラベル、エントリ、ファイル、およびポインターのデータは、等しいか等しくないかについてのみ比較されます。算術型および文字列型のデータは、任意の比較演算子を使用して比較できます。
算術値とピクチャ値は代数的に比較されます。
文字列の値は、左から右に向かって一度に 1 文字ずつ比較され、等しくない組み合わせが見つかるまで続きます。長さが短い方の値は、長い方の値の長さと同じになるまで右側に空白文字を付加することで、実質的に拡張されます。文字は、コンピューターの照合順序を使用して比較されます。
ビット文字列の値は、左から右に向かって一度に 1 ビットずつ比較され、等しくない組み合わせが見つかるまで続きます。長さが短い方の値は、長い方の値の長さと同じになるまで右側にゼロ ビットを付加することで、実質的に拡張されます。
ポインターの値は、同じ保存場所をアドレス指定している場合にのみ等しいと見なされます。
ラベルおよびエントリの値は、同じステートメントおよび同じスタック フレームを指定している場合にのみ等しいと見なされます。
ファイルの値は、同じファイル制御ブロックを指定している場合にのみ等しいと見なされます。
オフセット値については、= および ^= の比較のみを使用できます。領域変数は比較できません。
ワイド文字列の値は、左から右に向かって一度に 1 ワイド文字 (すなわち「バイト ペア」) ずつ比較され、等しくない組み合わせが見つかるまで続きます。長さが短い方の値は、長い方の値の長さと同じになるまで右側に空白文字 (0x0020) を付加することで、実質的に拡張されます。文字は、バイト ペアのバイナリ値を使用して比較されます。