5.6 -keyパラメタ
- 意味
-
ソートキー,マージキー,または集約キーを指定します。
- 形式
-key key-definition [△key-definition … ]
- 説明
-
-
-functionパラメタにsortまたはmergeを指定した場合,もしくは-sumパラメタを指定した場合は,このパラメタを必ず指定してください。
-
ソート機能では,重複レコードの入力順序保存機能(-cmdopt DUP)を指定することで,重複キーのレコードを入力順に並べて出力できます。重複レコードの入力順序保存機能については,「5.5.1 重複レコードの入力順序保存機能(DUP|NODUPオプション)」を参照してください。
-
マージおよびコピー機能では,重複キーのレコードは入力順に並べて出力されます。
-
キーを複数指定した場合,キーの指定順によってソートまたはマージの優先順位が決まります。先に指定したキーほど優先順位が高く,あとに指定したキーほど優先順位が低くなります。
-
キー同士の範囲は重なってもかまいません。
-
キーの範囲は,集約項目の範囲と重なってはいけません。
-
指定できるキーの個数と合計長は,環境ファイル「EXS_KEYNUMMAX」で指定できます。なお,キーの合計長は,入力データのエンコードによって異なります。環境ファイル「EXS_KEYNUMMAX」については,「15.1.1(14) EXS_KEYNUMMAX」を参照してください。
-
- 指定値
-
key-definitionの形式を次に示します。
- key-definition形式1
[r]key-attribute+pos−len
-
[r]key-attribute+pos−lenは必ず続けて指定してください。それぞれの値の間に空白やタブを指定しないでください。
-
[r]key-attribute+pos−lenを複数指定する場合は,1個以上の空白またはタブで区切って指定します。
-
key-attributeには,属性コード「j,c,n,m,p,z,x,s,t,f,g,q,d,w,u,v」が指定できます。
-
- key-definition形式2
[r]key-attribute+pos−maskbit
-
[r]key-attribute+pos−maskbitは必ず続けて指定してください。それぞれの値の間に空白やタブを指定しないでください。
-
[r]key-attribute+pos−maskbitを複数指定する場合は,1個以上の空白,またはタブで区切って指定します。
-
key-attributeには,属性コード「a,b」が指定できます。
-
- key-definition形式3
field-name
-
field-nameを複数指定する場合は,1個以上の空白,またはタブで区切って指定します。
key-definitionに指定するそれぞれの値について次に示します。
- [r]
-
キーのソート順序を指定します。
rオプション
意味
指定なし
キーの昇順でソートまたはマージします。
指定あり
キーの降順でソートまたはマージします。
-
降順でソートまたはマージする場合は,キーの属性を「rc」のようにつなげて指定します。
-
昇順か降順かは,キーごとに指定します。キーを複数指定して,昇順と降順を混在させたソートまたはマージもできます。
-
- key-attribute
-
キーの属性を指定します。
key-attributeに指定する値
意味
key-definition
形式
j
キーが文字(JIS8単位コード※1)であることを指定します。
形式1
c
キーが文字であることを指定します。※3
形式1
n
キーが符号付き固定小数点2進数であることを指定します。※9,※10
形式1
m
キーが符号なし2進数(0から始まる整数)であることを指定します。※9,※10
形式1
a
キーが符号なし2進数(0から始まる整数)であることを指定します。※9,※10
(マスクビットで指定するビット単位のキーです)
形式2
b
キーが符号なし2進数(バイトデータ)であることを指定します。※10
(マスクビットで指定するビット単位のキーです)
形式2
p
キーが内部10進数であることを指定します。
形式1
z
キーが外部10進数であることを指定します。※5
形式1
x
キーが左符号付き外部10進数であることを指定します。※5
形式1
s
キーが右分離符号付き外部10進数であることを指定します。※5
形式1
t
キーが左分離符号付き外部10進数であることを指定します。※5
形式1
f
キーが内部浮動小数点であることを指定します。※9,※10
形式1
g
キーが日付(英数字)であることを指定します。※5
形式1
q
キーが文字(文字順序変更機能※2で指定した文字)であることを指定します。※3
形式1
d
キーが文字(左分離符号付き数字)であることを指定します。※5
形式1
w
キーが文字(ワイド文字※4,※6)であることを指定します(テキストファイルだけ指定できます)。
形式1
u
キーが文字(マルチバイト文字※6,※7,※8)であることを指定します(テキストファイルだけ指定できます)。
形式1
v
キーが文字(マルチバイト文字※6,※7,※8)であることを指定します(UnicodeのIVSに対応した属性で,テキストファイルだけ指定できます)。
形式1
- +pos
-
-
キーの開始バイト位置を数字で指定します。指定できる桁数は,レコード長の上限値をバイト単位に変換した値の桁数以内です。
-
-locatajstパラメタを指定したかどうかによって,レコード先頭の解釈が異なります。
-
テキストファイルに指定できる開始バイト位置(pos)の範囲は,UNIXの64ビット版(環境変数「EXSORT64MAXRECLEN」の指定がない,または無効の場合),UNIXの32ビット版,およびWindows版の場合,入力データのエンコード種別や改行文字の長さによって異なります。UNIXの64ビット版で環境変数「EXSORT64MAXRECLEN」の指定がある場合,入力データのエンコード種別によって異なりますが,改行文字の長さによって異なることはありません。
開始バイト位置(pos)に指定できる値の範囲を次の表に示します。
表5‒9 posに指定できる値の範囲(Windows版,UNIXの32ビット版,UNIXの64ビット版で環境変数「EXSORT64MAXRECLEN」の指定がない,または指定が無効の場合) ファイル編成
-locatajstパラメタ
指定あり
指定なし
固定長順編成ファイル
1〜65,535
0〜65,534
可変長順編成ファイル
5〜65,539※1
0〜65,534
テキストファイル※2
改行文字
「LF」
ASCII
SJIS
EUC-JP
EUC-HJ
UTF-8
1〜65,535
0〜65,534
UCS-2LE
UCS-2BE
UTF-16LE
UTF-16BE
1〜65,533
(2の倍数+1※3)
0〜65,532
(2の倍数※3)
UCS-4LE
UCS-4BE
UTF-32LE
UTF-32BE
1〜65,529
(4の倍数+1※4)
0〜65,528
(4の倍数※4)
改行文字
「CRLF」
ASCII
SJIS
EUC-JP
EUC-HJ
UTF-8
1〜65,534
0〜65,533
UCS-2LE
UCS-2BE
UTF-16LE
UTF-16BE
1〜65,531
(2の倍数+1※3)
0〜65,530
(2の倍数※3)
UCS-4LE
UCS-4BE
UTF-32LE
UTF-32BE
1〜65,525
(4の倍数+1※4)
0〜65,524
(4の倍数※4)
表5‒10 posに指定できる値の範囲(UNIXの64ビット版で環境変数「EXSORT64MAXRECLEN」の指定がある場合) ファイル編成
-locatajstパラメタ
指定あり
指定なし
固定長順編成ファイル
1〜レコード長の上限値※1
0〜レコード長の上限値※1−1
可変長順編成ファイル
5〜レコード長の上限値※1+4※3
0〜レコード長の上限値※1−1
テキストファイル※2
ASCII
SJIS
EUC-JP
EUC-HJ
UTF-8
1〜レコード長の上限値※1
0〜レコード長の上限値※1−1
UCS-2LE
UCS-2BE
UTF-16LE
UTF-16BE
1〜レコード長の上限値※1−1(2の倍数+1)※4
0〜レコード長の上限値※1−2(2の倍数)※4
UCS-4LE
UCS-4BE
UTF-32LE
UTF-32BE
1〜レコード長の上限値※1−3(4の倍数+1)※5
0〜レコード長の上限値※1−4(4の倍数)※5
-
- −len
-
キーの長さを次の表に示す範囲で指定します。
key-attributeの値
指定できる長さ(単位)
j,c,q,w※1
-
入力データのエンコードが「ASCII」,「SJIS」,「EUC-JP」,「EUC-HJ」または「UTF-8」の場合
1〜4,096(バイト)
-
入力データのエンコードが「UCS-2LE」,「UCS-2BE」,「UTF-16LE」または「UTF-16BE」の場合※2
2〜8,192(バイト)
-
入力データのエンコードが「UCS-4LE」,「UCS-4BE」,「UTF-32LE」または「UTF-32BE」の場合※3
4〜16,384(バイト)
u,v
1〜4,096(文字数)※6
m,n
2,4,または8(バイト)
p
1〜10(バイト)
z,x
1〜18(桁)※4
s,t
2〜19(桁)※4
f
4または8(バイト)
g
2〜8(桁)※5
d
1〜256(桁)※4
-
- −maskbit
-
-
属性コード「a」または「b」を指定した場合,マスクビットを16進数で指定します。
-
16進数のA〜Fは,小文字・大文字のどちらでも指定できます。
-
キーデータに対して,指定したマスクビットでAND演算を行った結果でソートします。なお,このAND演算によってキーデータが更新されることはありません。
-
マスクビットの16進数は,ビッグエンディアン形式で記述してください。
-
すべての桁を「00」とするマスクビット指定はできません。指定した場合は,KBLS1207-Eエラーとなります。
-
指定できるマスクビットの桁は次のとおりです。
key-attribute
に指定する値
指定できるmaskbitの桁
備考
a
4,8または16(桁)※1
キーの長さは2,4または8バイト
b
2〜8,192(桁)※2
キーの長さは1〜4,096バイト
注※1
属性コード「a(符号なし2進数)」は,2バイト(unsigned short int),4バイト(unsigned int),8バイト(unsigned long long int)のキーとして扱います。2,4または8バイトに対応するマスクビット値を,それぞれ4,8または16桁の16進数で指定してください。なお,16進数はビッグエンディアン形式で記述してください。
(例1)ra+0-F000 a+0-0FFF
第1キーの並び順:降順
第1キーの範囲:+0〜1の2バイト長
第1キーのマスクビット:0xF000
第2キーの並び順:昇順
第2キーの範囲:+0〜1の2バイト長
第2キーのマスクビット:0x0FFF
注※2
属性コード「b(符号なし2進数)」は,1〜4,096バイトの範囲を指定できます。マスクビット値を,2〜8,192桁の16進数で指定してください。なお,16進数はビッグエンディアン形式で記述してください。
(例2)rb+0-fff000 a+0-000fff
第1キーの並び順:降順
第1キーの範囲:+0〜2の3バイト長
第1キーのマスクビット:0xfff000
第2キーの並び順:昇順
第2キーの範囲:+0〜2の3バイト長
第2キーのマスクビット:0x000fff
-
- field-name
-
キーを,入力ファイルパラメタのfieldオペランドで定義したフィールド名で指定します。
-
ファイル編成が可変長順編成ファイルの場合,フィールド名は指定できません。
-
- キーの範囲
-
キーは,次の範囲内で指定してください。
-
入力ファイルが固定長順編成ファイルのとき,キーはレコード長の範囲
-
入力ファイルが可変長順編成ファイルのとき,キーは最小レコード長の範囲※1
-
入力ファイルがテキストファイルのとき,キーは実レコード長の範囲※1,※2
注※1
可変長順編成ファイルまたはテキストファイルで,-cmdoptパラメタのPOSNOCHKオプションを指定している場合は,最大レコード長の範囲となります。なお,POSNOCHKオプションでは,最大レコード長を超えた範囲をキーとして指定してもエラーになりませんが,最大レコード長を超えた部分のキー値は必ずNULL値(0x00)が仮定されるので注意してください。
-cmdoptパラメタのPOSNOCHKオプションについては,「5.5.11 キー位置のチェックオプション(POSNOCHKオプション)」を参照してください。
注※2
テキストファイルに指定した属性コード「u」または「v」の場合は,キーの指定範囲が実レコード長を超えていてもエラーにはなりません。実レコード長を超えた部分には空白を仮定してキーを比較します。
-
-
- 関連パラメタ・オペランド
-
-
-locatajstパラメタ
-
-functionパラメタ
-
-sumパラメタ
-
-inpfileパラメタ codetypeオペランド
-
- 指定例
-
【例1】
-key△j+0-4△rc+18-5△p+12-8△rz+6-10
第1キー:0バイト目から長さ4バイト(文字),昇順
第2キー:18バイト目から長さ5バイト(文字),降順
第3キー:12バイト目から長さ8バイト(内部10進数),昇順
第4キー:6バイト目から長さ10バイト(外部10進数),降順
【例2】
-key△b+0-0f△rb+2-f8△a+4-0ff0△ra+8-0000fff0
第1キー:0バイト目から長さ1バイト,マスク 0x0f,昇順
第2キー:2バイト目から長さ1バイト,マスク 0xf8,降順
第3キー:4バイト目から長さ2バイト(unsigned short int),マスク 0x0ff0,昇順
第4キー:8バイト目から長さ4バイト(unsigned int),マスク 0x0000fff0,降順
- (凡例)
-
△:半角スペース(空白)を示します。