マージ機能を指定します。
マージオプション(-merge)、ソートオプション(-sort)、およびコピーオプション(-copy)は互いに排他関係にあります。
記述形式
キーフィールドを指定します。
1つのキーフィールドは、位置、長さ、データ形式、および操作で構成されます。
キーフィールドは複数指定することができます。複数のキーフィールドを指定する場合は、キーフィールドをコンマ( , )で区切って指定するか、またはkeyオペランドを複数指定します。複数のキーフィールドを指定した場合、指定順に比較が行われます。
keyオペランドを省略した場合、レコード全体をキーフィールドとみなしてコードの昇順に並べます。
注意
テキストファイルCSV形式、テキストファイルTSV形式の場合、キーフィールドは省略できません。
記述形式
key=key-definition [ ,key-definition ...] [ key= ...]
key-definition の記述形式
key-definition の記述形式には、以下の2つの形式があります。
key-definition の記述形式1
key-definition の記述形式1では、入力レコード中のフィールドをキーフィールドとして指定します。
pos.len typ [ opt ]
key-definition の記述形式2
key-definition の記述形式2では、レコード全体をキーフィールドとして指定します。
テキストファイルCSV形式、テキストファイルTSV形式の場合は、指定できません。
ALL [ opt ]
pos
キーフィールドの位置を指定します。
バイナリファイルとテキストファイル固定フィールド指定の場合は、レコードの先頭を0としたバイト位置を指定します。テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合は、0から数えたフィールド番号を指定します。
len
キーフィールドの長さをバイト数で指定します。
テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合、指定したフィールド長よりも長いフィールドが現れた場合は、指定したフィールド長で処理します。指定したフィールド長よりも短いフィールドが現れた場合は、実際のフィールド長で処理します。
typ に符号なし2進数を指定する場合、len には1バイト分のビットを選択するためのマスク値を10進数で指定します。このとき、pos の位置にある1バイトのフィールド値とマスク値の論理積がキー値となります。
指定可能な各データ形式の長さについては、1.7.4.1 キーフィールドに指定可能なデータ形式を参照してください。
注意
テキストファイルCSV形式、およびテキストファイルTSV形式の場合、フィールドを囲むダブルクォーテーション(")は、キーフィールドの長さに含みません。また、ダブルクォーテーション(")で囲まれたフィールド内の2つ連続したダブルクォーテーション("")は、1つのダブルクォーテーション(")として長さを計算します。
例) テキストファイルCSV形式における、キーフィールドと長さ
キーフィールド キーフィールドとして有効な文字 キーフィールドの長さ ABC ABC 3バイト "ABC" ABC 3バイト "A""B""C" A"B"C 5バイト "A,B,C" A,B,C 5バイト
typ
キーフィールドのデータ形式を指定します。
指定可能なデータ形式については、1.7.4.1 キーフィールドに指定可能なデータ形式を参照してください。
opt
キーフィールドの操作を指定します。
指定可能な操作を以下に示します。バイナリファイルの場合は、a、m、r、およびwが指定できます。テキストファイルの場合は、全てのキーフィールドの操作が指定できます。複数の操作を指定する場合は、続けて記述します。aとrを両方とも省略した場合は、aを指定したものとして動作します。
opt | 意味 |
---|---|
a | 昇順に並べます。 |
b | キーフィールドの先頭の空白とタブを無視します。 |
d | 空白と英数字だけを比較の対象とします。 |
i | 制御文字コードを無視します。 |
j | 英小文字を英大文字として比較します。 |
m | 漢字ソートマージ機能を使用します。 |
n | 符号を含んだ数字の文字列を算術的な値で比較します。 |
N | 英字と数字の連結データ(例えば「data123」など)を英字と数値に分けて評価し並べます。 |
r | 降順に並べます。 |
w | 複数バイトから成る文字が混在していても文字ごとに比較して並べます。 |
注意
漢字ソートマージ機能では、キーフィールドの操作にbを指定した場合、全角の空白も無視します。
キーフィールドのデータ形式に照合順序変更を指定した場合、キーフィールドの操作にa、またはr以外を指定することはできません。
キーフィールドのデータ形式に文字形式2桁年号、外部10進形式2桁年号、内部10進形式2桁年号、および10進形式2桁年号を指定した場合、キーフィールドの操作にa、またはr以外を指定しても無視されます。
ALL
key-definition の記述形式2の場合に、「ALL」の固定文字列を指定します。
レコード全体をキーフィールドとする場合に指定します。キーフィールドの操作を指定する必要がなければ、keyオペランドを省略できます。
記述例
例
入力レコードの先頭から長さ10バイトのASCIIコードのフィールドを昇順に並べる場合は、以下のように指定します。
key=0.10asca
入力レコードの5バイト目から長さ8バイトの外部10進数のフィールドを降順に並べる場合は、以下のように指定します。
key=4.8zdlr
テキストファイル固定フィールド指定の場合、入力レコードの10バイト目から長さ20バイトのASCIIコードのフィールドを昇順に並べる場合は、以下のように指定します。なお、キーフィールドの先頭の空白とタブは無視し、英小文字を英大文字として比較します。
key=9.20ascabj
レコード全体をキーフィールドとして降順に並べる場合は、以下のように指定します。
key=ALLr
参考
バイナリファイルの可変長レコード形式、またはテキストファイルの場合、キーフィールドが存在しないレコードが入力されたときは、キーフィールドが存在しない部分の値を0とみなして処理します。
ここに記載した「キーフィールドが存在しないレコード」とは、指定されたキーフィールドにデータが存在しないレコードを意味します。
例1) バイナリファイル可変長レコード形式、テキストファイル固定フィールド指定の場合
キーフィールドの指定が「6.4asca」のとき 0123456789 : キーフィールドが存在するレコード 012345 : キーフィールドが存在しないレコード
例2) テキストファイル浮動フィールド指定、CSV形式、TSV形式の場合
キーフィールドの指定が「2.1asca」のとき(ここではフィールドの区切りをカンマ(,)で表します) fld0,fld1,fld2,fld3 : キーフィールドが存在するレコード fld0,fld1 : キーフィールドが存在しないレコード fld0,fld1,,fld3 : キーフィールドが存在しないレコード
漢字ソートマージ機能を使用する場合に、漢字ソートマージ機能の並べ方について指定します。
漢字ソートマージ機能の並べ方は、キーフィールドの操作にmが指定されたキーフィールドごとに指定することができます。複数の並べ方を指定する場合は、m指定のキーフィールド順にコンマ(,)で区切って指定するか、またはjefオペランドを複数指定します。m指定のキーフィールドの数が並べ方の数より多い場合、最後に指定した並べ方が残りのm指定のキーフィールドに適用されます。m指定のキーフィールドの数が並べ方の数より少ない場合、余分に指定した並べ方は無視されます。
参考
キーフィールドの操作にmが指定されたキーフィールドを漢字フィールドと呼びます。
記述形式
jef=jef-definition [ ,jef-definition ...] [ jef= ...]
jef-definition の記述形式
form [ odr ] [ pos.len typ ]
form
漢字ソートマージ機能の方式を指定します。
指定可能な方式を以下に示します。
form | 意味 |
---|---|
std | 基本方式(漢字属性の順)に並べます。 |
dic | 国語辞典方式(ふりがなの順)に並べます。 |
odr
漢字フィールドの漢字属性を指定します。
漢字属性は複数指定することができます。複数の漢字属性を指定する場合は、漢字属性を最大4つまで続けて指定します。複数の漢字属性を指定した場合、指定順に比較が行われます。指定可能な漢字属性を以下に示します。
odr | 意味 |
---|---|
B | 部首コード順に並べます。 |
S | 総画数順に並べます。 |
O | 音読み順に並べます。 |
K | 訓読み順に並べます。 |
C | 漢字コード順に並べます。 |
pos
ふりがなフィールドの位置を指定します。
バイナリファイルとテキストファイル固定フィールド指定の場合は、レコードの先頭を0としたバイト位置を指定します。テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合は、0から数えたフィールド番号を指定します。
len
ふりがなフィールドの長さをバイト数で指定します。
テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合、指定したフィールド長よりも長いフィールドが現れた場合は、指定したフィールド長で処理します。指定したフィールド長よりも短いフィールドが現れた場合は、実際のフィールド長で処理します。
注意
テキストファイルCSV形式、およびテキストファイルTSV形式の場合、フィールドを囲むダブルクォーテーション(")は、ふりがなフィールドの長さに含みません。また、ダブルクォーテーション(")で囲まれたフィールド内の2つ連続したダブルクォーテーション("")は、1つのダブルクォーテーション(")として長さを計算します。
typ
ふりがなフィールドのデータ形式を指定します。
指定可能なデータ形式を以下に示します。
種類 | データ形式 | typ | 長さ(バイト) |
---|---|---|---|
文字 | ASCIIコード | asc | 1~レコード長(注1) |
EBCDICコード(注2) | ebc | 1~レコード長(注1) | |
シフトJISコード | sji | 1~レコード長(注1) | |
JEFコード(注2) | jef | 2~レコード長(2の倍数) (注1) |
種類 | データ形式 | typ | 長さ(バイト) |
---|---|---|---|
文字 | ASCIIコード | asc | 1~レコード長(注1) |
シフトJISコード | sji | 1~レコード長(注1) |
注1) 入力ファイルのレコード再編成機能を指定した場合は、入力ファイルのレコード再編成後のレコード長まで指定できます。レコード再編成機能については、4.2.5.6 reconstオペランドを参照してください。
注2) 入力ファイルのコード系(実行環境オプション(-option)のicodeオペランド)がEBCDICコード系の場合に指定できます。
記述例
例
入力レコードの10バイト目から長さ2バイトの漢字フィールド(シフトJISコード)を総画数順、音読み順で昇順に並べる場合、以下のように指定します。
key=9.2sjiam jef=stdSO
入力レコードの10バイト目から長さ10バイトに漢字フィールド(シフトJISコード)があり、このフィールドに対するふりがなフィールド(シフトJISコード)がレコードの50バイト目から長さ20バイトに存在するとき、このレコードを国語辞典の並びで昇順に並べる場合、以下のように指定します。
key=9.10sjiam jef=dic49.20sji
入力レコードの10バイト目から長さ2バイトの漢字フィールド(JEFコード)を部首コード順で昇順、入力レコードの20バイト目から長さ2バイトの漢字フィールド(JEFコード)を訓読み順で昇順に並べる場合、以下のように指定します。
key=9.2jefam,19.2jefam jef=stdB,stdK