代替照合順序

代替照合順序は、1 バイト文字データにだけ適用されます。

各文字は、内部的に 16 進値で表され、この 16 進値に基づいて文字の 順序 (昇順または降順) が決められます。これは通常照合順序として知られてい るものです。 代替照合順序機能を使用することによって、通常照合順序を変更することができ ます。 また、この機能を使用して、2 つ以上の文字を等しいと見なすこともできます。

照合順序の変更

代替照合順序の使用は、文字の突き合わせフィールド (ファイル選択) および文字比 較の照合順序を変更することを意味します。 制御仕様書の ALTSEQ キーワードを 指定することによって、代替照合順序が使用されることを指定します。 代替照合順 序によって影響を受ける演算命令は、ANDxx、COMP、CABxx、CASxx、DOU、 DOUxx、DOW、DOWxx、IF、IFxx、ORxx、WHEN、および WHENxx です。 これは、図形または UCS-2 比較操作には適用されません。LOOKUP および SORTA が影響を受けるのは、ALTSEQ(*EXT) を指定した場合だけです。 文字は、代替照合順序によって永続的に変更されるのではなく、フィールド 突き合わせまたは文字比較操作が完了するまで一時的に変更されます。

変数の定義仕様書で ALTSEQ(*NONE) キーワードを使用して、その変数が 他の文字データと比較されるときは、代替照合順序が定義されている場合でも、 必ず通常の照合順序を使用する必要があることを示します。

照合順序の変更は、LOOKUP および SORTA 命令 (ALTSEQ(*EXT) を指定しない場合) または形象定数 *HIVAL および *LOVAL に割り当てられた 16 進値には影響 しません。 しかし、照合順序の変更により、照合順序中の *HIVAL および *LOVAL の値に影響する可能性があります。 したがって、プログラム中で代替照合 順序を指定し、それによって *HIVAL および *LOVAL の値の順序に変化があった 場合には、望ましくない結果が起こることがあります。

外部照合順序の使用

SRTSEQ および LANGID コマンド・パラメーターまたは制御仕様書 キーワードの値を用いて代替照合順序を決定すべき場合は、 制御仕様書に ALTSEQ(*EXT) を指定してください。たとえば、ALTSEQ(*EXT) を使用 し、SRTSEQ(*LANGIDSHR) および LANGID(*JOBRUN) を 指定した場合には、プログラムの実行時に、そのプログラム を実行中のユーザーの共用重みテーブルが代替照合順序として使用されま す。

ALTSEQ(*EXT) が指定されている場合には、LOOKUP および SORTA 命令が影響を受 けるので、コンパイル時文字配列およびテーブルは、代替照合順序を使用して順 序が検査されます。 実際の照合順序が実行時まで分からない場合には、その実行時 まで配列およびテーブルの順序を検査することはできません。 このことは、コン パイル時配列またはテーブルの順序が違っていることを知らせる実行時エラーを 受け取る可能性があることを意味しています。

ALTSEQ(*EXT) が指定された場合には、実行時前配列およびテーブルの順序検査も 代替照合順序を使用して行われます。

注:
上記の説明は、定義仕様書で ALTSEQ(*NONE) を指定して定義 された配列およびテーブルには適用しません。

ソース仕様での代替照合順序の指定

代替照合順序を使用することを指定するためには、 制御仕様書で ALTSEQ(*SRC) キーワードを使用してください。 コンパイル時データ・セクションに **ALTSEQ、**CTDATA、 および **FTRANS キーワードを使用した場合には、ソース・レコードの後の 任意の場所に、代替照合順序データを入力することができます。 これらのキーワードを使用しない場合には、順序データはソース・レコードおよびフ ァイル変換レコードの後に続いていることが必要ですが、すべてのコンパイル時 配列データより前になければなりません。

2 つの連続した文字の間に文字を挿入する場合には、この挿入によって変更さ れるすべての文字を指定しなければなりません。 たとえば、A と B の間に円記号 (¥) を挿入する場合には、文字 B の前でその変更 を指定してください。

EBCDIC 文字セットについては、付録B. EBCDIC 照合順序を参照してください。

代替照合順序レコードの形式設定

照合順序に対する変更は、正しいレコード様式に書き換えて、システムに入力 できるようにしなければなりません。 代替照合順序は、次のように形式設定する 必要があります。

レコード
位置
 
記入
1 から 6 ALTSEQ (これは、通常照合順序が変更されていることをシステムに指示するものです。)
7 から 10 これらの桁はブランクのままにしておきます。
11 から 12 通常順序が変更されている文字の 16 進値を記入します。
13 から 14 通常順序が変更されている文字に置き換わる文字の 16 進値を記入します。
15 から 18
19 から 22
23 から 26
...
77 から 80
15 桁目から始まる 4 桁のグループは、すべて 11 から 14 桁目と同じように使用 されます。 各グループの最初の 2 桁には、置き換えられる文字の 16 進値を記入します。 後の 2 桁には、置き換わる文字の 16 進値を記入します。

代替照合順序を記述しているレコードの前には、1 から 3 桁目 に **  (  = ブランク) の入ったレコードがなければなりません。 このレコードの残りの桁は注記に使用することができます。

      HKeywords++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     H ALTSEQ(*SRC)
     DFLD1             s              4A   INZ('abcd')
     DFLD2             s              4A   INZ('ABCD')
**
ALTSEQ    81C182C283C384C4