ページのトップに戻る
PowerSORT V6.0 ユーザーズガイド

4.2.6 マージオプション(-merge)

マージ機能を指定します。
マージオプション(-merge)、ソートオプション(-sort)、およびコピーオプション(-copy)は互いに排他関係にあります。

記述形式

-merge [ key=key-definition [ ,key-definition ...] [ key= ...] ]
       [ jef=jef-definition [ ,jef-definition ...] [ jef= ...] ]

4.2.6.1 keyオペランド

キーフィールドを指定します。
1つのキーフィールドは、位置、長さ、データ形式、および操作で構成されます。
複数のキーフィールドを指定した場合、指定した順に比較が行われます。複数のキーフィールドを指定する場合は、キーフィールドをコンマ( , )で区切って指定します。また、keyオペランドを複数指定することもできます。
keyオペランドを省略した場合、レコード全体をキーフィールドとみなしてコードの昇順に並べます。

注意

テキストファイルCSV形式、テキストファイルTSV形式の場合、キーフィールドは省略できません。

記述形式

key=key-definition [ ,key-definition ...] [ key= ...]

key-definition の記述形式

key-definition の記述形式には、以下の2つの形式があります。

pos

キーフィールドの位置を指定します。
バイナリファイルとテキストファイル固定フィールド指定の場合は、レコードの先頭を0としたバイト位置を指定します。テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合は、0から数えたフィールド番号を指定します。

len

キーフィールドの長さをバイト数で指定します。
テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合、指定したフィールド長よりも長いフィールドが現れた場合は、指定したフィールド長で処理します。指定したフィールド長よりも短いフィールドが現れた場合は、実際のフィールド長で処理します。
typ に符号なし2進数を指定する場合は、1バイト分のビットを選択するためのマスク値を10進数でlen に指定します。このとき、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、l、m、r、およびwが指定できます。テキストファイルの場合は、全てのキーフィールドの操作が指定できます。複数の操作を指定する場合は、続けて記述します。aとrを両方とも省略した場合は、aを指定したものとして動作します。

opt

意味

a

昇順に並べます。
rとは排他関係にあります。

b

キーフィールドの先頭の空白とタブを無視します。

d

空白と英数字だけを比較の対象とします。

i

制御文字コードを無視します。
EUCコードのシングルシフト2(SS2)0x8e、およびシングルシフト3(SS3)0x8fは、ASCIIコード指定の場合は制御文字、EUCコード指定の場合は文字とみなされます。

j

英小文字を英大文字として比較します。

l

環境変数LC_COLLATEで定義した照合順序に並べます。
データ形式がASCIIコード、EUCファイルコード、EUC2バイトプロセスコード、EUC4バイトプロセスコード、シフトJISコード、またはUnicode UTF-8形式で、入力ファイルのコード系(実行環境オプション(-option)のicodeオペランド)がEBCDICコード系以外の場合に指定できます。
n、N、およびwとは排他関係にあります。

m

漢字ソートマージ機能を使用します。
対応するソートオプション(-sort)、またはマージオプション(-merge)のjefオペランドが必要となります。mを指定した場合は、a、b、rの操作だけが有効となり、他の指定は無視します。漢字ソートマージ機能で指定可能なデータ形式は、EUCファイルコード、シフトJISコード、およびJEFコードです。
ALLとは同時に指定できません。

n

符号を含んだ数字の文字列を算術的な値で比較します。
文字列中に数字以外の文字が存在した場合の結果は保証されません。データ形式がASCIIコード、EBCDICコード、Unicode UCS-2形式、またはUnicode UTF-8形式の場合に指定できます。
l、N、およびwとは排他関係にあります。

N

英字と数字の連結データ(例えば「data123」など)を英字と数値に分けて評価し並べます。
英字だけを比較の対象として比較後、数字だけの文字列を算術的な値で比較します。指定フィールドの左から評価し、有効データ後に出現したデータは無視します。データ形式がASCIIコード、EBCDICコード、Unicode UCS-2形式、またはUnicode UTF-8形式の場合に指定できます。
l、n、およびwとは排他関係にあります。

r

降順に並べます。
aとは排他関係にあります。

w

複数バイトから成る文字が混在していても文字ごとに比較して並べます。
SVR4 MNLSをサポートしたシステムでは、EUCコードの場合は、G0(文字集合0)<G1(文字集合1)<G2(文字集合2)<G3(文字集合3)の順に並べます。それ以外のシステムでは、文字集合の順は規定されません。シフトJISコードの場合は、ASCIIコード<半角カタカナ<漢字(区点順)に並べます。
データ形式がASCIIコード、EUCファイルコード、EUC2バイトプロセスコード、EUC4バイトプロセスコード、シフトJISコード、Unicode UCS-2形式またはUnicode UTF-8形式で、入力ファイルのコード系(実行環境オプション(-option)のicodeオペランド)がEBCDICコード系以外の場合に指定できます。
l、nおよびNとは排他関係にあります。

注意

  • 漢字ソートマージ機能では、キーフィールドの操作にbを指定した場合、全角の空白も無視します。

  • キーフィールドのデータ形式に照合順序変更を指定した場合、キーフィールドの操作にa、またはr以外を指定することはできません。

  • キーフィールドのデータ形式に文字形式2桁年号、外部10進形式2桁年号、内部10進形式2桁年号、および10進形式2桁年号を指定した場合、キーフィールドの操作にa、またはr以外を指定しても無視されます。

ALL

key-definition の記述形式2の場合に、「ALL」の固定文字列を指定します。
キーフィールドの指定を省略し、レコード全体をキーフィールドとする場合に指定します。キーフィールドの操作を指定する必要がなければ、keyオペランドを省略できます。

記述例

例1) 入力レコードの先頭から長さ10バイトのASCIIコードのフィールドを昇順に並べる場合は、次のように指定します。

key=0.10asca

例2) 入力レコードの5バイト目から長さ8バイトの外部10進数のフィールドを降順に並べる場合は、次のように指定します。

key=4.8zdlr

例3) テキストファイル固定フィールド指定の場合、入力レコードの10バイト目から長さ20バイトのASCIIコードのフィールドを昇順に並べる場合は、次のように指定します。なお、キーフィールドの先頭の空白とタブは無視し、英小文字を英大文字として比較します。

key=9.20ascabj

例4) レコード全体をキーとして降順に並べる場合は、次のように指定します。

key=ALLr

参考

バイナリファイルの可変長レコード形式、またはテキストファイルの場合、キーフィールドが存在しないレコードが入力されたときは、キーフィールドが存在しない部分の値を0とみなして処理します。

4.2.6.2 jefオペランド

漢字ソートマージ機能を使用する場合に、漢字フィールド、およびふりがなフィールドを指定します。
jefオペランドは、キーフィールドの操作として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

ふりがなフィールドのデータ形式を指定します。
指定可能なデータ形式を以下に示します。

表4.1 バイナリファイルの場合

種類

データ形式

typ

長さ(バイト)

文字

EBCDICコード(注1)

ebc

1~レコード長(注2)

EUCファイルコード

euc

1~レコード長(注2)

シフトJISコード

sji

1~レコード長(注2)

JEFコード(注1)

jef

2~レコード長(2の倍数) (注2)

表4.2 テキストファイルの場合

種類

データ形式

typ

長さ(バイト)

文字

EUCファイルコード

euc

1~レコード長(注2)

シフトJISコード

sji

1~レコード長(注2)

注1) 入力ファイルのコード系(実行環境オプション(-option)のicodeオペランド)がEBCDICコード系の場合に指定できます。

注2) 入力ファイルのレコード再編成機能を指定した場合は、入力ファイルのレコード再編成後のレコード長まで指定できます。レコード再編成機能については、入力ファイル情報オプション(-input)の4.2.5.6 reconstオペランドを参照してください。

記述例

例1) 入力レコードの10バイト目から長さ2バイトの漢字フィールド(EUCファイルコード)を総画数順、音読み順で昇順に並べる場合、次のように指定します。

key=9.2eucam jef=stdSO

例2) 入力レコードの10バイト目から長さ10バイトに漢字フィールド(シフトJISコード)があり、このフィールドに対するふりがなフィールド(シフトJISコード)がレコードの50バイト目から長さ20バイトに存在するとき、このレコードを国語辞典の並びで昇順に並べる場合、次のように指定します。

key=9.10sjiam jef=dic49.20sji