ソートマージ


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.7 エンディアンオプション機能」および「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オペランド