ソートマージ

[目次][用語][索引][前へ][次へ]

5.7 -sumパラメタ

意味
集約項目を指定します。

形式
-sum [ field-definition ]

説明
  • -sumパラメタを指定する場合は,-keyパラメタを必ず指定してください。
  • -function copyと組み合わせて指定する場合,入力ファイルはあらかじめ集約キーでソートしておく必要があります。ソートしていない場合は,集約の結果は保証されません。
  • -function copyと組み合わせる場合,入力ファイルは一つだけ指定してください。
  • 集約項目同士の範囲は重なってはいけません。
  • 集約項目の範囲は,キーの範囲と重なってはいけません。集約項目の範囲とキーの範囲と重なった場合は,「KBLS1409-E 集約項目とキーが重なっています。」というメッセージを出力して異常終了します。ただし,キー属性「u」または「v」を指定した場合,キーの範囲と集約項目の範囲が重なっていてもエラーにはなりません。重なった範囲は集約結果で更新されて正常終了します。
  • 環境ファイル「EXS_SUMNUMMAX」の「最大個数の倍数」を指定していない場合,指定できる集約項目の個数は1〜128個です。集約項目の最大個数は「128×n個」の単位で,1,280個(128×10)まで拡張できます。129個以上のキーを指定したい場合は,環境ファイル「EXS_SUMNUMMAX」の「最大個数の倍数」に,「128×n個」のnの値を指定してください。
  • 環境ファイル「EXS_SUMNUMMAX」の「合計長の上限の倍数」を指定していない場合,指定できる集約項目の合計長は4,096バイトです。集約項目の合計長は「4,096×mバイト」の単位で,65,536バイト(4,096×16)まで拡張できます。4,097バイト以上の合計長を指定したい場合は,環境ファイル「EXS_SUMNUMMAX」の「合計長の上限の倍数」に,「4,096×mバイト」のm値を指定してください。
  • 集約項目を指定しない場合(集約項目の個数が0個),同じキーを持つ連続したレコードがあるときは,最初に配置されているレコードだけを抽出します。これを無条件レコード抽出機能といいます。無条件レコード抽出機能を使用した例を次の図に示します。

    図5-4 無条件レコード抽出機能の使用例

    [図データ]

指定値
field-definitionの形式を次に示します。
 
field-attributeposlen [△field-attributeposlen … ]
 
  • field-attributeposlenは必ず続けて指定してください。それぞれの値の間に空白やタブを指定しないでください。
  • field-attributeposlenを複数指定する場合は,1個以上の空白またはタブで区切って指定します。
field-definitionに指定するそれぞれの値について次に示します。
field-attribute
集約項目の属性を指定します。
field-attributeに指定する値 意味
n 集約項目が符号付き固定小数点2進数であることを指定します。
m 集約項目が符号なし2進数であることを指定します。
p 集約項目が内部10進数であることを指定します。
z 集約項目が外部10進数であることを指定します。
x 集約項目が左符号付き外部10進数であることを指定します。
s 集約項目が右分離符号付き外部10進数であることを指定します。
t 集約項目が左分離符号付き外部10進数であることを指定します。
注※
属性コード「n」および「m」は,数値として比較するため,バイトオーダーが関係します。
バイトオーダーについては,「2.6 エンディアンオプション機能」および「5.5.4 入力ファイルのエンディアンオプション(BIG|INPBIG|INPLTLオプション)」を参照してください。
  • 符号付き固定小数点数「n」:2バイト(signed short int),4バイト(signed int),8バイト(signed long long int)
  • 符号なし2進数「m」:2バイト(unsigned short int),4バイト(unsigned int),8バイト(unsigned long long int)
pos
集約項目の開始バイト位置を5桁以内の数字で指定します。
-locatajstパラメタを指定したかどうかによって,レコード先頭の解釈が異なります。また,テキストファイルの場合は,入力データのエンコードによって指定範囲が異なります。開始バイト位置(pos)に指定できる値の範囲を次の表に示します。
ファイル編成 -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
注※1
レコードの前の4バイト領域(RDW:レコードヘッダ)の先頭が1となります。
 
注※2
入力レコードの改行文字については,「5.8.7 recsepaオペランド」を参照してください。また,入力データのエンコードについては,「5.8.13 codetypeオペランド」を参照してください。
 
注※3
2の倍数(-locatajstパラメタを同時に指定している場合は「2の倍数+1」)以外を指定すると,KBLS1404-Eメッセージが表示されてエラーになります。
 
注※4
4の倍数(-locatajstパラメタを同時に指定している場合は「4の倍数+1」)以外を指定すると,KBLS1404-Eメッセージが表示されてエラーになります。
len
集約項目の長さを次の表に示す範囲で指定します。
field-attributeの値 指定できる長さ(単位)
m,n 2,4,または8(バイト)
p 1〜10(バイト)
z,x 1〜18(桁)
s,t 2〜19(桁)
注※
「UCS-2」,「UCS-4」,「UTF-16」および「UTF-32」では,10進数データの1桁が2または4バイトで表現されます。詳細は「付録I.3 数値データの扱い」を参照してください。

集約項目の範囲
集約項目は,次の表に示す範囲内で指定してください。
入力ファイルの種別 集約項目の範囲
固定長ファイル レコード長
可変長ファイル 最小レコード長
テキストファイル 最小レコード長

集約結果の範囲
2進数項目の集約結果の範囲を次の表に示します。

表5-9 固定小数点2進数(n)の範囲

長さ OVFLWオプション
指定なし 指定あり
2 −32,768〜+32,767 −9,999〜+9,999
4 −2,147,483,648〜+2,147,483,647 −999,999,999〜+999,999,999
8 −9,223,372,036,854,775,808〜
+9,223,372,036,854,775,807
−999,999,999,999,999,999〜
+999,999,999,999,999,999

表5-10 符号なし2進数(m)の範囲

長さ OVFLWオプション
指定なし 指定あり
2 0〜32,767 0〜9,999
4 0〜2,147,483,647 0〜999,999,999
8 0〜9,223,372,036,854,775,807 0〜999,999,999,999,999,999

集約結果がオーバーフローした場合
集約結果がオーバーフローした場合は,それまで集約した結果を出力したあと,処理中のレコードから新しく集約します。集約結果がオーバーフローした場合の例を次の図に示します。

図5-5 集約結果がオーバーフローした場合の例

[図データ]
集約結果がオーバーフローした時にexsortコマンドを異常終了させたい場合は,コマンドオプション「OVFERR」を指定してください。最初のオーバーフローを検出した時点で,KBLS1412-Eエラーメッセージを出力して異常終了します。
OVFERRオプションについては,「5.5.20集約結果オーバーフロー検知オプション(OVFERRオプション)」を参照してください。

関連パラメタ・オプション
  • -locatajstパラメタ
  • -functionパラメタ
  • -keyパラメタ
  • -cmdoptパラメタ OVFERRオプション
  • -inpfileパラメタ codetypeオペランド