ソートマージ


11.2.2 拡張SORTコマンドのパラメタの意味

パラメタには,必ず指定するパラメタと任意に指定できるパラメタの2種類があります。

〈この項の構成〉

(1) [WNSORTEX]

wnsortexコマンドのパラメタファイルの先頭を意味します。この指定は省略できません。

(2) exec_opt=実行オプション

wnsortexコマンドで実行する機能を「exec_opt=」+オペランドの形式で指定します。実行オプションの指定形式を次の図に,オペランドを次の表に示します。

図11‒3 実行オプションの指定形式(拡張SORTコマンド)

[図データ]

表11‒2 実行オプションのオペランド(拡張SORTコマンド)

オペランド

意味

select

レコードを選択する。

sort

レコードをソートする。

sum

レコードを集約する。

オペランドを複数指定した場合は,選択,ソート,集約の順に実行します。例えば,ソートと選択を指定した場合は,選択されたデータをソートします。

(3) sort_opt=機能オプション

wnsortexコマンドで実行する機能オプションを「sort_opt=」+オペランドの形式で指定します。機能オプションのオペランドを次の表に示します。

表11‒3 機能オプションのオペランド(拡張SORTコマンド)

オペランド

内容

d

ファイル中に重複したキーのレコードがある場合,それらのデータを入力順に並べることを指定する(重複レコードの入力順序保存機能)。

i

出力ファイルと同じ名前のファイルがすでにある場合,そのファイルの内容が書き換えられるのを防ぐ(既存ファイルの書き換え防止)。

v

EBCDIKコードの体系に従ってキーを比較する。

b※1

キーが数値項目の場合,big endian※2の数値として扱う。

u

選択条件を満足しないレコードだけを入力する。

h

集約項目の属性に2進数を指定した場合,10進数の桁数でオーバーフローの判定をする。

注※1

キーが2進項目「n」,「m」,または内部浮動小数点項目「f」の場合だけ有効となる。

注※2

big endianとは,上位バイトを下位番地とする数値のことです。

bオペランドを指定しなかった場合は,little endian(上位バイトを上位番地とする数値)として扱います。

複数のオペランドを指定する場合は,「di」のようにつなげて指定します。「d△i」のように分けて指定した場合は,最初に指定したオペランドが有効になります。

また,この指定は省略できます。省略した場合は,次のようになります。

なお,機能オプションを指定する場合は,次の点に注意してください。

(4) file_org=入力ファイルのファイル編成

入力ファイルのファイル編成を「file_org=」+オペランドの形式で指定します。複数の入力ファイルを指定する場合は,すべて同じファイル編成にしてください。また,この指定は省略できません。入力ファイルのファイル編成のオペランドを次の表に示します。

表11‒4 入力ファイルのファイル編成のオペランド(拡張SORTコマンド)

オペランド

内容

s

固定長順編成ファイルを指定する。

v

可変長順編成ファイルを指定する。

r

固定長相対ファイルを指定する。

w

可変長相対ファイルを指定する。

i

固定長索引ファイルを指定する。

x

可変長索引ファイルを指定する。

a

テキストファイルを指定する。

(5) 出力ファイルのファイル編成

出力ファイルのファイル編成のオペランドを,コロン(:)で区切って指定します。出力ファイルのファイルの形式(固定長,可変長またはテキスト)は,入力ファイルと同じにしてください。

入力ファイルが順ファイル,相対ファイルまたはテキストファイルの場合,この指定は省略できます。指定を省略した場合は,入力ファイルと同じファイル編成が設定されます。入力ファイルが索引ファイルの場合は,順ファイルまたは相対ファイルのどちらかを必ず指定してください。

なお,指定を省略するときは,コロンも省略します。省略時にコロンを指定した場合はエラーとなります。

出力ファイルのファイル編成のオペランドを次の表に示します。

表11‒5 出力ファイルのファイル編成のオペランド(拡張SORTコマンド)

オペランド

内容

s

固定長順編成ファイルを指定する。

v

可変長順編成ファイルを指定する。

r

固定長相対ファイルを指定する。

w

可変長相対ファイルを指定する。

a

テキストファイルを指定する。

(6) record_leng=レコード長

入力ファイルのファイル編成ごとのレコード長の指定方法を次の表に示します。

表11‒6 入力ファイルのファイル編成ごとのレコード長の指定方法(拡張SORTコマンド)

入力ファイル編成

レコード長の指定方法

固定長順編成ファイル

ファイルのレコード長を「1〜65,535」バイトの範囲で指定します。

可変長順編成ファイル

指定は不要です。指定しても無視されます。

ただし,入力できるレコード長の範囲は,1〜65,535バイトです。

固定長相対ファイル

可変長相対ファイル

固定長索引ファイル

指定は不要です。指定しても無視されます。

ただし,入力できるレコード長の範囲は,1〜65,503バイトです。

可変長索引ファイル

テキストファイル

ファイルの最大レコード長を「1〜65,535」バイトの範囲で指定します。レコード長には,改行文字「X'0A'」は含みません。

省略できます。省略した場合「65,535」バイトが設定されます。

レコード長を指定した方がソート時間が短くなります。

(7) temp_dir1=ソート用一時ファイルディレクトリ

ソート用一時ファイルを割り当てるディレクトリを指定します。この指定は,実行オプションで「sort」を指定した場合だけ有効となります。

ソート用一時ファイルを使用する条件については,「16. 一時ファイルの作成条件とファイル容量の算出方法」を参照してください。

また,この指定は省略できます。指定を省略した場合,使用するディレクトリの優先順位は,次の順となります。

  1. 環境ファイルのtemp_dir1で指定されているディレクトリ

  2. 環境変数「TMP」で指定されているディレクトリ

  3. 環境変数「TEMP」で指定されているディレクトリ

  4. 次の表に示すディレクトリ

    表11‒7 一時ファイルが割り当てられるディレクトリ(拡張SORTコマンド)

    OS

    ディレクトリ

    Windows

    次の優先順位で使用するディレクトリが決まります。

    1. 環境変数「USERPROFILE」で指定されているディレクトリ

    2. 環境変数「SYSTEMROOT」で指定されているディレクトリ

環境ファイルの設定方法については,「15.2 SORTの環境ファイルの設定(Windowsの場合)」を参照してください。

(8) temp_dir2=中間ファイルディレクトリ

中間ファイルを割り当てるディレクトリを指定します。この指定は,実行オプションを2個以上指定したときだけ有効となります。

また,この指定は省略できます。指定を省略した場合,使用するディレクトリの優先順位は,次の順となります。

  1. 環境ファイルのtemp_dir2で指定されているディレクトリ

  2. 環境変数「TMP」で指定されているディレクトリ

  3. 環境変数「TEMP」で指定されているディレクトリ

  4. 表11-7に示すディレクトリ

(9) temp_dir3=マージ用一時ファイルディレクトリ

マージ用一時ファイルを割り当てるディレクトリを指定します。この指定は,実行オプションで「sort」を指定し,ソート実行時にマージ用一時ファイルを使用する場合だけ有効となります。

マージ用一時ファイルを使用する条件については「16. 一時ファイルの作成条件とファイル容量の算出方法」を参照してください。

また,この指定は省略できます。指定を省略した場合,使用するディレクトリの優先順位は,次の順となります。

  1. ソート用一時ファイルディレクトリ

  2. 環境ファイルのtemp_dir3で指定されているディレクトリ

  3. 環境ファイルのtemp_dir1で指定されているディレクトリ

  4. 環境変数「TMP」で指定されているディレクトリ

  5. 環境変数「TEMP」で指定されているディレクトリ

  6. 表11-7に示すディレクトリ

(10) select_exp=選択条件式

レコードを選択するための選択条件式を指定します。この指定は,実行オプションで「select」を指定した場合だけ有効となります。また,この指定は省略できません。指定できる条件式の個数は1〜128個です。

選択条件式の形式を次の図に示します。

図11‒4 選択条件式の形式(拡張SORTコマンド)

[図データ]

なお,スペースを入れてよいのは,論理演算子の前後と比較演算子の前後だけです。

(a) 比較項目の属性

比較項目の属性を指定します。比較項目の属性のオペランドを次の表に示します。

表11‒8 比較項目の属性のオペランド(拡張SORTコマンド)

オペランド

内容

j

比較項目が文字(JIS8単位コード)であることを指定する。

c

比較項目が文字であることを指定する。

n

比較項目が符号付き固定小数点2進数であることを指定する。

m

比較項目が符号なし2進数であることを指定する。

p

比較項目が内部10進数であることを指定する。

z

比較項目が外部10進数であることを指定する。

x

比較項目が左符号付き外部10進数であることを指定する。

s

比較項目が右分離符号付き外部10進数であることを指定する。

t

比較項目が左分離符号付き外部10進数であることを指定する。

f

比較項目が内部浮動小数点項目であることを指定する。

e

比較項目が日付(英数字)であることを指定する。

注※

ASCIIコード(0x00〜0x7F)を含む,JIS8単位コード(0x00〜0xFF)を意味します。入力データに日本語などのマルチバイト文字が含まれている場合,マルチバイト文字として扱わず,シングルバイト文字として扱います。EBCDIKコードの体系に従ってキー・項目を比較する「-vオプション(Windowsは/vオプション)」を使用できます。

(b) +項目位置-項目長

比較項目の開始バイト位置を5桁以内の数字で指定します。開始バイト位置はレコードの先頭からのバイト位置(先頭を0とする)とします。開始バイト位置に指定できる値の範囲は,「0〜レコード長-1」です。

また,比較項目のバイト長を「1〜4,096」の範囲で指定します。

(c) 比較演算子

比較項目で指定した値と入力レコードの値を比較,選択する方法を指定します。比較演算子のオペランドを次の表に示します。

表11‒9 比較演算子のオペランド(拡張SORTコマンド)

比較演算子

意味

=

条件値と等しい値の入力レコードを選択することを指定する。

!=

条件値と異なる値の入力レコードを選択することを指定する。

>

条件値より大きい値の入力レコードを選択することを指定する。

>=

条件値より大きいか,または等しい値の入力レコードを選択することを指定する。

<

条件値より小さい値の入力レコードを選択することを指定する。

<=

条件値より小さいか,または等しい値の入力レコードを選択することを指定する。

(d) 条件値

比較の条件となる値を「c'文字条件値'」,「n'数値条件値'」,「x'16進数条件値'」または「d'日付条件値'」の形式で指定します。「c'文字条件値'」は比較項目が文字項目の場合,「n'数値条件値'」は比較項目が数値項目の場合に指定できます。また,「x'16進数条件値'」は比較項目が文字の場合でも数値の場合でも指定できます。「d'日付条件値'」は比較項目が日付項目の場合に指定できます。

指定できる条件値の長さを次の表に示します。

表11‒10 指定できる条件値の長さ(拡張SORTコマンド)

項目

最小値

最大値

備考

文字条件値

1

4,096

数値条件値※1

1

19

符号なしの場合は18

16進数条件値※2

2

8,192

指定できるのは偶数桁のデータだけ

日付条件値※3

2

8

単位:バイト

(凡例)

−:なし

注※1

数値条件値として指定できるのは「0〜9」,「+」および「-」だけである。

注※2

16進数条件値として指定できるのは「0〜9」および「A〜F」だけである。

注※3

日付条件値として指定できる値は次のとおり。

・先頭の1文字はスペースまたは「0〜9」の文字列

・2文字目は「0〜9」の文字列

・1文字のスペースを指定した場合「00」を設定

・1文字の「0〜9」を指定した場合,先頭の1文字は「0」を設定

(e) 論理演算子

複数の選択条件式を指定する場合,論理演算子「AND」(論理積)または「OR」(論理和)を指定します。

選択条件式中に「AND」と「OR」が混在した場合は,「AND」を判定後,「OR」を判定します。「AND」と「OR」が混在した場合の処理の例を次に示します。

(例)
 n+10-3△>△n'30'△AND△n+23-3△=△n'10'△
OR△n+10-3△<=△n'10'△AND△n+23-3△=△n'10'

(凡例) △:スペース(空白)を示す。

この場合,次のうちどちらかの条件を満たしたレコードが選択されます。

  • 「n+10-3」は30より大きく,「n+23-3」は10

  • 「n+10-3」は10か10より小さく,「n+23-3」は10

(11) work_size=ワークバッファサイズ

ワークバッファとして使用するメモリの容量をKBまたはMB単位で指定します。ワークバッファサイズは,メモリ量と単位で指定します。

(a) メモリ量

ワークバッファとして使用するメモリの容量を指定します。指定できる値を次の表に示します。

表11‒11 メモリ量の指定範囲(拡張SORTコマンド)

SORTの種別

レコード長

指定範囲

32ビット版

32,760バイト以下

128KB〜2,000MB

32,760バイトより大きい

256KB〜2,000MB

64ビット版

32,760バイト以下

256KB〜2,000MB

32,760バイトより大きい

384KB〜2,000MB

注※

可変長ファイルおよびテキストファイルの場合,最大レコード長となります。

この指定は省略できます。この指定を省略した場合,または最小メモリ量に満たない値が指定された場合は,1,024KBが設定されます。ただし,これらの場合で環境ファイルに初期値が設定されているときは,その値が設定されます。

なお,メモリ量の目安については,「17.1.1 ワークバッファサイズと処理時間」を参照してください。また,環境ファイルの設定方法については,「15.2 SORTの環境ファイルの設定(Windowsの場合)」を参照してください。

(b) 単位

メモリ量の単位を,KBにするかMBにするか指定します。

  • k:単位をKBにします。

  • m:単位をMBにします。

また,単位を省略した場合は「KB(k)」が設定されます。

指定例を次に示します。

(例1)1,024KB→「work_size=1024k」または「work_size=1024」

(例2)2MB→「work_size=2m」

(12) sort_key=ソートキー属性+キー位置-キー長

ソート実行に必要なソートキーを指定します。この指定は,実行上のオプションで「SORT」を指定した場合だけ有効となります。また,この指定は省略できません。

(a) キー属性

ソートキーのキー属性を「sort_key=」+オペランドの形式で指定します。キー属性のオペランドを次の表に示します。

表11‒12 ソートキー属性のオペランド(拡張SORTコマンド)

オペランド

内容

r

キーの降順でソートすることを指定する。

c

キーが文字であることを指定する。

j

キーが文字(JIS8単位コード)であることを指定する。

n

キーが符号付き固定小数点2進数であることを指定する。

m

キーが符号なし2進数であることを指定する。

p

キーが内部10進数であることを指定する。

z

キーが外部10進数であることを指定する。

x

キーが左符号付き外部10進数であることを指定する。

s

キーが右分離符号付き外部10進数であることを指定する。

t

キーが左分離符号付き外部10進数であることを指定する。

f

キーが内部浮動小数点であることを指定する。

e

キーが日付(英数字)であることを指定する。

注※

ASCIIコード(0x00〜0x7F)を含む,JIS8単位コード(0x00〜0xFF)を意味します。入力データに日本語などのマルチバイト文字が含まれている場合,マルチバイト文字として扱わず,シングルバイト文字として扱います。EBCDIKコードの体系に従ってキー・項目を比較する「-vオプション(Windowsは/vオプション)」を使用できます。

「r」を指定しないときは,キーの昇順でソートされます。また,ソートキーにするデータの属性を「c,j,n,m,p,z,x,s,t,f,e」のパラメタのどれかで必ず指定してください。降順でソートする場合は,「rc」のようにつなげて指定します。なお,機能オプションに「v」を指定した場合,キーの属性を必ず「j」で指定してください。

(b) +キー位置-キー長

キーの開始バイト位置を5桁以内の数字で指定します。開始バイト位置はレコードの先頭からのバイト位置(先頭を0とする)とします。開始バイト位置に指定できる値の範囲は,「0〜レコード長-1」です。

また,キーのバイト長を「1〜4,096」の範囲で指定します。

(13) sum_key=集約キー属性+キー位置-キー長

レコードを集約するための集約キーを指定します。この指定は,実行オプションで「sum」を指定した場合だけ有効となります。

複数指定する場合は,間をコンマ(,)で区切って指定します。

また,この指定は,「sort_key=ソートキー属性+キー位置-キー長」を指定した場合は省略できます。指定を省略した場合は「sort_key=」と同じ値が設定されます。どちらの指定もない場合はエラーとなります。

(a) キー属性

集約キーのキー属性を「sum_key=」+オペランドの形式で指定します。キー属性のオペランドを次の表に示します。

表11‒13 集約キー属性のオペランド(拡張SORTコマンド)

オペランド

内容

c

キーが文字であることを指定する。

j

キーが文字(JIS8単位コード)であることを指定する。

n

キーが符号付き固定小数点2進数であることを指定する。

m

キーが符号なし2進数であることを指定する。

p

キーが内部10進数であることを指定する。

z

キーが外部10進数であることを指定する。

x

キーが左符号付き外部10進数であることを指定する。

s

キーが右分離符号付き外部10進数であることを指定する。

t

キーが左分離符号付き外部10進数であることを指定する。

f

キーが内部浮動小数点であることを指定する。

e

キーが日付(英数字)であることを指定する。

注※

ASCIIコード(0x00〜0x7F)を含む,JIS8単位コード(0x00〜0xFF)を意味します。入力データに日本語などのマルチバイト文字が含まれている場合,マルチバイト文字として扱わず,シングルバイト文字として扱います。EBCDIKコードの体系に従ってキー・項目を比較する「-vオプション(Windowsは/vオプション)」を使用できます。

(b) +キー位置-キー長

キーの開始バイト位置を5桁以内の数字で指定します。開始バイト位置はレコードの先頭からのバイト位置(先頭を0とする)とします。開始バイト位置に指定できる値の範囲は,「0〜レコード長-1」です。

また,キーのバイト長を「1〜4,096」の範囲で指定します。

(14) sum_field=集約項目の属性+項目位置-項目長

集約する項目を指定します。複数指定する場合は,間をコンマ(,)で区切って指定します。

無条件レコード抽出機能を使用する場合は,指定しません。無条件レコード抽出機能については,「2.5 無条件レコード抽出機能」を参照してください。

(a) 集約項目属性

集約項目の属性を「sum_field=」+オペランドの形式で指定します。集約項目の属性のオペランドを次の表に示します。

表11‒14 集約項目の属性のオペランド(拡張SORTコマンド)

オペランド

内容

n

集約項目が符号付き固定小数点2進数であることを指定する。

m

集約項目が符号なし2進数であることを指定する。

p

集約項目が内部10進数であることを指定する。

z

集約項目が外部10進数であることを指定する。

x

集約項目が左符号付き外部10進数であることを指定する。

s

集約項目が右分離符号付き外部10進数であることを指定する。

t

集約項目が左分離符号付き外部10進数であることを指定する。

(b) +項目位置-項目長

集約項目の開始バイト位置を5桁以内の数字で指定します。開始バイト位置はレコードの先頭からのバイト位置(先頭を0とする)とします。開始バイト位置に指定できる値の範囲は,「0〜レコード長-1」です。

また,集約項目のバイト長を「1〜19」の範囲で指定します。

(15) output_file=出力ファイル名

SORTの出力先のファイル名を指定します。この指定は省略できます。省略した場合は,標準出力ファイルに出力します。

(16) input_file=入力ファイル名

SORTの入力ファイル名を指定します。複数指定する場合は,間を「|」で区切って指定します。

また,この指定は省略できます。省略した場合は,標準入力ファイルが設定されます。

実行オプションでselectまたはsumを単独で指定した場合,出力ファイル名と同じ指定はできません。