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,5350~65,534
可変長順編成ファイル5~65,539※10~65,534
テキストファイル※2改行文字
「LF」
ASCII
SJIS
EUC-JP
EUC-HJ
UTF-8
1~65,5350~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,5340~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,n2,4,または8(バイト)
p1~10(バイト)
z,x1~18(桁)
s,t2~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オプション
指定なし指定あり
20~32,7670~9,999
40~2,147,483,6470~999,999,999
80~9,223,372,036,854,775,8070~999,999,999,999,999,999
集約結果がオーバーフローした場合
集約結果がオーバーフローした場合は,それまで集約した結果を出力したあと,処理中のレコードから新しく集約します。集約結果がオーバーフローした場合の例を次の図に示します。

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

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