国別の比較
国別比較は、国別クラスの 2 つのオペランドの国別文字値の比較です。
比較条件が国別クラスではないオペランドを指定しているときは、比較の前にそのオペランドが国別カテゴリーのデータ項目へ変換されます。以下のリストで、
オペランドの国別カテゴリーへの変換について説明します。
- DBCS
- DBCS オペランドは、DBCS オペランドと同じ長さの国別カテゴリーの一時データ項目へ移動されるかのように処理されます。
DBCS 文字は、対応する国別文字に変換されます。変換に使用されるソース・コード・ページは、DBCS オペランドが EBCDIC データ項目か ASCII データ項目かによって異なります。DBCS オペランドが
EBCDIC データ項目である (すなわち、コンパイラー・オプション CHAR(EBCDIC) が有効で、オペランドに NATIVE 句が指定されていない) 場合、そのオペランドで有効な EBCDIC コード・ページが使用されます。それ以外の場合、オペランドで有効なロケールによって示されるコード・ページが使用されます。詳細については、付録G. ロケールの考慮事項を参照してください。
- 使用法が DISPLAY の英字、英数字、英数字編集、および数字編集
- オペランドは、そのオペランド内の文字位置数を表すために必要な長さの国別カテゴリーの一時データ項目へ移動されるかのように処理されます。英数字は、対応する国別文字に変換されます。変換に使用されるソース・コード・ページは、英数字オペランドが EBCDIC データ項目か ASCII データ項目かによって異なります。英数字オペランドが EBCDIC データ項目である (すなわち、コンパイラー・オプション CHAR(EBCDIC) が有効で、オペランドに NATIVE 句が指定されていない) 場合、そのオペランドで有効な EBCDIC コード・ページが使用されます。それ以外の場合、オペランドで有効なロケールによって示されるコード・ページが使用されます。詳細については、付録G. ロケールの考慮事項を参照してください。
- 整数
- 整数オペランドは、整数の桁数と同じ長さの英数字カテゴリーの一時データ項目へ移動されるかのように処理されます。符号なしの値が使用されます。次に、この一時データ項目は英数字オペランドとして変換されます。
- 外部浮動小数点
- display 浮動小数点項目は、数値としてではなく、英数字カテゴリーのデータ項目であるかのように処理されてから、英数字オペランドとして変換されます。
国別浮動小数点データ項目は、数値としてではなく、国別カテゴリーのデータ項目であるかのように処理されます。
変換に関する暗黙の移動は、MOVE ステートメントの規則に従って実行されます。
生成された国別カテゴリーのデータ項目は、2 つの国別オペランドの比較で使用されます。
比較に使用されるメソッドは、NCOLLSEQ コンパイラー・オプションの設定によって決定されます。
NCOLLSEQ(BINARY) コンパイラー・オプションが有効な場合、照合シーケンスは国別文字のバイナリー値によって決定されます。比較は以下のように進行します。
- 2 つのオペランドの長さが異なる場合は、短い方のオペランドの右側に
デフォルトの国別スペース文字 (NX'0020') を埋め、両方のオペランドの長さが等しくなるようにして比較が行われます。こうして比較は、長さが同じオペランドを比較するための規則に従って実行されます。
- 2 つのオペランドの長さが同じ場合は、オペランド内の同じ位置にある国別文字同士が比較されます。比較は左端から開始され、途中で異なる国別文字が検出されるか、右端に到達するまで繰り返されます。対応する国別文字がすべて同じであった場合は、2 つのオペランドが等しいと判別されます。
- オペランド内で最初に検出された異なる国別文字は、2 つのオペランドの関係を判別するために比較されます。より大きな照合値を持つ国別文字が入ったオペランドが、より大きなオペランドになります。
NCOLLSEQ(LOCALE) コンパイラー・オプションが有効な場合、照合シーケンスはランタイムのロケールによって決定されます。比較のために、後続のスペースはオペランドから切り捨てられます。ただし、全桁スペースのオペランドは単一のスペースに切り詰められます。ロケールに基づく比較では、必ずしも文字単位の比較を行う必要はありません。短いオペランドがスペースで拡張される場合、ロケールに基づく比較でなければ、文化的に想定される結果にならないことがあります。ロケールの詳細については、付録G. ロケールの考慮事項を参照してください。
PROGRAM COLLATING SEQUENCE 文節は、国別オペランドの比較には影響を及ぼしません。
|