ソートマージ

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

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-definition形式1
 
field-attributeposlen [△field-attributeposlen … ]
 
  • field-attributeposlenは必ず続けて指定してください。それぞれの値の間に空白やタブを指定しないでください。
  • field-attributeposlenを複数指定する場合は,1個以上の空白またはタブで区切って指定します。

field-definition形式2
 
field-name [△field-name … ]
 
  • field-nameを複数指定する場合は,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
  • 集約項目の開始バイト位置を数字で指定します。指定できる桁数は,レコード長の上限値をバイト単位に変換した値の桁数以内です。
  • -locatajstパラメタを指定したかどうかによって,レコード先頭の解釈が異なります。
  • テキストファイルに指定できる開始バイト位置(pos)の範囲は,UNIXの64ビット版(環境変数「EXSORT64MAXRECLEN」の指定がない,または無効の場合),UNIXの32ビット版,およびWindows版の場合,入力データのエンコード種別や改行文字の長さによって異なります。UNIXの64ビット版で環境変数「EXSORT64MAXRECLEN」の指定がある場合,入力データのエンコード種別によって異なりますが,改行文字の長さによって異なることはありません。
    開始バイト位置(pos)に指定できる値の範囲を次の表に示します。

    表5-11 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

    注※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メッセージが表示されてエラーになります。

    表5-12 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

    注※1
    レコード長の上限値は,環境変数「EXSORT64MAXRECLEN」に指定した「レコード長の上限値」です。
    環境変数「EXSORT64MAXRECLEN」ついては「14.1 SORT EEの環境変数の設定」を参照してください。

    注※2
    入力データのエンコード種別については「5.8.13 codetypeオペランド」を参照してください。

    注※3
    レコードの前の4バイト領域(RDW:レコードヘッダ)の先頭が1となります。

    注※4
    2の倍数(-locatajstパラメタを同時に指定している場合は「2の倍数+1」)以外を指定すると,KBLS1404-Eメッセージが表示されてエラーになります。

    注※5
    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 数値データの扱い」を参照してください。

field-name
集約項目を入力ファイルパラメタのfieldオペランドで定義したフィールド名で指定します。
  • field-attributeと同じ属性を定義したフィールド名だけ指定できます。
  • ファイル編成が可変長順編成ファイルの場合,フィールド名は指定できません。

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

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

表5-13 固定小数点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-14 符号なし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オプション)」を参照してください。

注意事項
  • レコード結合機能(-joindata,-joininp,-joinoutパラメタ)と同時に指定できません。同時に指定した場合KBLS1106-Eエラーとなります。

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