ソートマージ


5.17 -csvsumパラメタ

意味

CSVファイルの集約項目を指定します。

このパラメタは,CSVファイルを指定した場合だけ有効です。CSVファイル以外を指定した場合は,KBLS1213-Eエラーとなります。

形式
-csvsum [△csv-field-definition [△csv-field-definition … ] ]
  • -csvsumパラメタを指定する場合は,-csvkeyパラメタを必ず指定してください。

  • -function copyと組み合わせて指定する場合,入力ファイルはあらかじめ集約キーでソートしておく必要があります。ソートしていない場合は,集約の結果は保証されません。

  • -function copyと組み合わせる場合,入力ファイルは1つだけ指定してください。

  • このパラメタに指定したセルに対応するデータが入力されなかった場合,NULLセルとして処理します。NULLセルの扱いについては,「付録D CSVファイル内のNULLセルの扱い(SORT EEの機能)」を参照してください。

  • -csvkeyパラメタに指定したセル番号を,-csvsumパラメタに指定しないでください。

  • 環境ファイル「EXS_CSVSUMNUMMAX」の「最大個数の倍数」を指定していない場合,指定できる集約項目の個数は0〜128個です。集約項目の最大個数は「128×n個」の単位で,1,280個(128×10)まで拡張できます。129個以上の集約項目を指定したい場合は,環境ファイル「EXS_CSVSUMNUMMAX」の「最大個数の倍数」に,「128×n個」のnの値を指定してください。

  • 環境ファイル「EXS_CSVSUMNUMMAX」の「合計長の上限の倍数」を指定していない場合,指定できる集約項目の合計長は4,096バイトです。集約項目の合計長は「4,096×mバイト」の単位で,65,536バイト(4,096×16)まで拡張できます。4,097バイト以上の合計長を指定したい場合は,環境ファイル「EXS_CSVSUMNUMMAX」の「合計長の上限の倍数」に,「4,096×mバイト」のm値を指定してください。

  • 集約項目を指定しない場合(集約項目の個数が0個),同じキーを持つ連続したレコードがあるときは,最初に配置されているレコードだけを抽出します。これを無条件レコード抽出機能といいます。

csv-field-definitionの形式1
field-attributecellposp[,s] [△field-attributecellposp[,s] … ]
  • 数値データ(固定小数点数)のセルを定義します。

  • field-attributeには,「z」だけを指定できます。

  • field-attributecellposp[,s]は必ず続けて指定してください。それぞれの値の間に空白やタブを指定しないでください。

  • field-attributecellposp[,s]を複数指定する場合は,1個以上の空白またはタブで区切って指定します。

csv-field-definitionの形式2
csvfield-name [△csvfield-name … ]
  • csvfield-nameを複数指定する場合は,1個以上の空白またはタブで区切って指定します。

指定値
field-attribute

集約項目の属性を指定します。

z:集約項目が固定小数点数であることを指定します。

cellpos

レコード内の処理対象セル(列)の位置を,番号で指定します。

レコードの先頭セル番号を「1」,最大セル番号を「n」とし,1〜nまでの番号を指定します。最大セル番号は,16,384番となります。

p [,s]

固定小数点データの有効桁を10進数で指定します。

  • p(precision:精度)は,固定小数点データの総桁数を表します。pからsを引いた桁が整数部の有効桁となります。

  • pに指定できる桁の範囲は,1〜38桁です。

  • s(scale:位)は,固定小数点データの小数部(小数点以下)の有効桁を表します。

  • sに指定できる桁の範囲は,0〜p桁です(0≦sp)。

  • sを省略した場合は,0(小数部なし)を仮定します。

  • データ中の引用符囲み,符号,通貨記号,桁修飾文字(コンマ,小数点,空白)は,有効桁に含みません。

field-name

集約項目を入力ファイルパラメタのcsvfieldオペランドで定義したフィールド名で指定します。

  • field-attributeと同じ属性を定義したフィールド名だけ指定できます。

注意事項
  • すべて空白文字の集約項目は,0(ゼロ)として扱います。ただし,集約した範囲(オーバーフローが発生する前まで)のすべての集約項目が空白だった場合は,集約結果も空白で出力します。

    【例】

    -csvsum z+2-4を指定した場合(2セル目を有効桁4桁(小数以下0桁)で集約項目として指定)

    [図データ]

  • NULLセル(空のセル)の集約項目は,0(ゼロ)として扱います。ただし,集約した範囲(オーバーフローが発生する前まで)のすべての集約項目がNULLセルだった場合は,集約結果もNULLセルで出力します。詳細は,「付録D CSVファイル内のNULLセルの扱い(SORT EEの機能)」を参照してください。

  • NULLセルを集約対象としたくない場合は,コマンドオプション「SUMNONUL」を指定してください。SUMNONULオプションを指定すると,NULLセルは集約されずに1個のレコードで出力します。SUMNONULオプションについては,「5.5.19 NULLセルの集約オプション(SUMNULKEY,SUMNONULLオプション)」を参照してください。

  • NULLセル(空のセル)の集約キーは同値として集約します。NULLセルを同値として扱いたくない場合は,コマンドオプション「SUMKEYNUL」を指定してください。SUMKEYNULオプションを指定すると,NULLセルのキーの集約項目は集約されず,1個のレコードで出力されます。SUMKEYNULオプションについては,「5.5.19 NULLセルの集約オプション(SUMNULKEY,SUMNONULLオプション)」を参照してください。

  • 入力データの桁あふれはオーバーフローと判定されます。例えば,有効桁数が5桁,小数部2桁と指定した場合,最小値は「-999.99」,最大値は「+999.99」です。この指定に対して,入力データが「1000」や「-999.999」など,整数部または小数部が桁あふれしていればオーバーフローとなります。

  • 入力データが桁あふれしていなければ,丸め処理をします。丸め処理の結果,整数部が桁あふれした場合はオーバーフローとなります。丸め方法は,環境ファイルの「EXS_ROUND」または-inpfile,-catinp,-splitinpパラメタのroundオペランドに指定した方法を適用します。丸め方法の詳細については,「5.8.11 roundオペランド」を参照してください。

  • 指定された有効桁よりも大きい桁の入力データを検出した場合,KBLS1012-Iインフォメーションメッセージを出力して正常終了します。KBLS1012-Iが出力された場合は,-csvsumに指定した有効桁を見直してください。

  • 入力データの丸め処理でオーバーフローを検出した場合,KBLS1013-Iインフォメーションメッセージを出力して正常終了します。KBLS1013-Iが出力された場合は,-csvsumに指定した有効桁と,roundオペランドに指定した丸め方式を見直してください。

  • 集約した結果のセルの書式は,次に示す書式に合わせて出力します。

    [通貨記号][符号]数字[小数点][数字][符号]

    注※ 整数部の有効桁によっては,桁区切りのコンマが含まれます。

    書式

    説明

    有効桁

    指定された有効桁に合わせます。

    • 小数部の桁を指定している場合は,小数点も付加されます。小数部の有効桁が指定されていない場合(s=0)は,整数部だけです。

    • 整数部の有効桁が指定されていない場合(p-s=0)は,整数部は必ず「0.」とします。

    通貨記号

    集約した範囲(オーバーフローが発生する前まで)のすべての集約項目に通貨記号が含まれている場合,通貨記号を付加します。通貨記号は,左端に付加されます。

    符号位置

    集約した範囲(オーバーフローが発生する前まで)の集約項目のうち,最初の符号付きの位置に合わせます。

    • 最初の符号付きの符号位置が左側の場合,符号の位置は整数部の左側です。

    • 最初の符号付きの符号位置が右側の場合,符号の位置は小数部の右側です。

    符号

    集約した範囲(オーバーフローが発生する前まで)の集約項目のうち,「+」の符号が含まれている集約項目が1個でもあれば,正値の集約結果に「+」を付加します。

    「+」の符号を含む集約項目が1個もなければ,符号は付加しません。

    また,集約結果が負値の場合は,「-」を付加します。

    桁区切り

    集約した範囲(オーバーフローが発生する前まで)の集約項目のうち,桁区切り(コンマ)が含まれている集約項目が1個でもあれば,整数部に桁区切りを付加します。

    桁区切りは,3桁ごとにコンマを付加します。

    桁区切り(コンマ)を含む集約項目が1個もなければ,桁区切りは付加しません。

  • 集約した結果を引用符で囲んだ形式で出力したい場合は,-outfile,-catoutおよび-splitoutパラメタのquottypeオペランドで引用符を付加する指定をしてください。quottypeオペランドについては,「5.10.8 quottypeオペランド」を参照してください。

  • 同じキーを持つ連続したレコードのうち,最初に配置されているレコードを基に集約レコードを作成して出力します。SUMNONULLオプションの指定がなく,かつ最初に配置されているレコードに集約項目のセルがない場合,集約項目のセルが付加されます。また,元のレコードの最後のセルと集約項目のセルの間に間隔が生じる場合には,NULLセル(空のセル)が作成されます。

    【例1】SUMNONULLオプション指定なし

    集約キー:c+1-5(セル1)

    集約項目:z+4-4(セル4)

    [図データ]

    【例2】SUMNONULLオプション指定あり

    集約キー:c+1-5(セル1)

    集約項目:z+4-4(セル4)

    [図データ]

  • 入力レコードの連続区切り文字オプション(INPCONSEPA)だけが指定されている場合,作成されるNULLセルは,引用符で囲んだ形式となります。出力レコードの連続区切り文字オプション(OUTCONSEPA)の指定がある,またはINPCONSEPAとOUTCONSEPAの両方の指定がない場合は,NULLセルを引用符で囲みません。

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

関連パラメタ・オペランド
  • -csvkeyパラメタ

  • -cmdoptパラメタ SUMNULKEY,SUMNONULオペランド

  • -cmdoptパラメタ INPCONSEPA,OUTCONSEPAオペランド

  • -inpfileパラメタ roundオペランド

  • -outfileパラメタ quottypeオペランド