ソートマージ


5.32.4 csvformatオペランド

意味

入力ファイル形式がCSVの出力レコードフォーマットを定義します。

出力レコードの項目単位にcsvformatオペランドを指定します。

項目の詳細をサブオペランドで指定します。

【例】

出力レコードが項目1から項目3まである場合,csvformatオペランドは3個指定します。

項目1,項目2,項目3

csvformat=・・・・ 項目1の定義

csvformat=・・・・ 項目2の定義

csvformat=・・・・ 項目3の定義

形式
csvformat={  val{ (alias-name.csvfield-name)|(alias-name)|(insertdata) }
            |calc(calculation formula) }
          [△pos(position) ]
          [△len(length) ]
          [△rounding-method ]
          [△padding(C'padding-character'|X'hex-digit') ]
  • valまたはcalcのどちらかを必ず指定します。

  • pos,rounding-method,およびpaddingは省略できます。

  • calcを指定した場合,lenは必ず指定します。

  • val(別名)およびval(挿入データ)を指定した場合,lenは指定できません。

  • val(別名.フィールド名)でlenを省略した場合,挿入する長さは実セル長とします。

  • 1つのcsvformatオペランドは複数行にわたって記述できます。また,1行に複数のサブオペランドを指定できます。ただし,1つのサブオペランドは複数行にわたって記述できません。

  • csvformatオペランドをダブルクォーテーション(")で囲まないでください。

  • 挿入位置は,csvformatオペランド間で昇順となるように指定してください。昇順となっていない場合,KBLS2414-Eエラーとなります。

注意事項
  • 指定できるcsvformatオペランドの個数は,環境ファイル「EXS_CSVFORMATNUMMAX」で指定できます。環境ファイル「EXS_CSVFORMATNUMMAX」については,「15.1.1(30) EXS_CSVFORMATNUMMAX【SORT EE(64) 09-00以降】」を参照してください。

  • フォーマット機能の場合,フィールドデータの入力では,csvfieldに指定されたセルの長さは参照しません。入力の対象は指定されたセルの実セル長ととなります。

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

  • 入力セルデータの桁調整については,「付録B CSVファイルのデータの扱い(SORT EEの機能)」を参照してください。

  • セルとセルの間のデリミタは必ず1文字を配置します。

  • 次のどちらかのオプションを指定した場合,連続したデリミタは1文字となります。

    ・入力レコードの連続したデリミタを1つのデリミタとして扱う「連続区切り文字オプション(INPCONSEPA)」

    ・レコード出力時に連続したデリミタを1つのデリミタに置き換える「連続区切り文字オプション(OUTCONSEPA)」

  • 配置するデリミタは次の順番で決定されます。なお,複数のデリミタを指定している場合は,先頭のデリミタが対象となります。

    1. -joinoutパラメタのcellsepaオペランドに指定したデリミタ

    2. 環境ファイルの「EXS_OUTCELLSEPA」に指定したデリミタ

    3. -joininpパラメタのcellsepaオペランドに指定したデリミタ

    4. 環境ファイルの「EXS_CELLSEPA」に指定したデリミタ

    5. コンマ

  • -joinoutパラメタのrecsepaオペランドに指定した改行文字を付加します。recsepaオペランドの指定を省略した場合は,-joininpパラメタのrecsepaオペランドの指定に従います。詳細は,「5.32.7 recsepaオペランド」を参照してください。

〈この項の構成〉

(1) valサブオペランド

意味

出力レコードへ挿入するフィールドや挿入データを指定します。

形式
val{ (alias-name.csvfield-name)|(alias-name)|(insertdata) }
指定値

valに指定する内容を次の表に示します。

表5‒87 valに指定する内容

項目

指定値

(alias-name.csvfield-name)

aliasオペランドで指定された別名が示すファイルから,csvfieldオペランドで指定されたフィールド名のフィールドデータを挿入します。

(alias-name)

1レコードを挿入します。

(insertdata)

指定されたデータを挿入します。

指定できるフィールド名の属性を次の表に示します。

表5‒88 指定できるフィールド名の属性

指定できる属性

属性コード

文字

文字(JIS8単位コード)

j

文字

c

文字(文字順序変更機能で指定した文字)

q

文字(ワイド文字)

w

文字(マルチバイト文字)

u

文字(マルチバイト文字で,UnicodeのIVSに対応した属性)

v

文字(左分離符号付き数字)

d

10進数

数値(固定小数点数)

z

日付

日付(英数字)

g

日付時刻

日付時刻(数字)

h

注※

データの形式については,「3.2 キー属性と形式」を参照してください。

挿入データの指定内容を次の表に示します。

表5‒89 挿入データ指定内容

指定値

指定内容

C'文字列'

任意の文字列(改行文字は指定できません)

X'16進数'

「0〜9」,「A〜F」,「a〜f」の偶数桁の16進数

注意事項
  • 挿入文字データ(C'nn')の中にシングルクォーテーション(')または円記号(\)のどちらかを指定する場合は,選択条件式の文字条件値と同じように指定してください。選択条件式の書き方については,「4.5.3 選択条件式の書き方」を参照してください。

  • X'16進数'に改行コードおよびデリミタが指定された場合,引用符で囲んだ形式にして出力します。

  • C'文字列'にデリミタが指定された場合,引用符で囲んだ形式にして出力します。

  • 文字挿入データ「C'文字'」に日本語(マルチバイト文字)を含む場合,パラメタファイルに記述されたcode文で指定された文字コードから,入力ファイルパラメタのcodetypeに指定されたエンコードに変換し挿入します。エンコードに変換できなかった場合,KBLS2409-Eエラーとなります。

  • val(別名.フィールド名)指定で,lenが指定されなかった場合,挿入するデータの長さは実セル長にとなります。lenが指定された場合,入力したフィールドデータを正規化し,指定されたlenの長さ分挿入します。フィールドデータの正規化方法については「付録B CSVファイルのデータの扱い(SORT EEの機能)」および「付録J 日付時刻データの形式(SORT EEの機能)」を参照してください。lenの指定については「5.10.14(4) lenサブオペランド」を参照してください。

(2) calcサブオペランド

意味

計算式,および挿入する数値データを指定します。

形式
calc = { calculation formula | alias-name.csvfield-name | 数値 }
指定値

calcに指定する内容を次の表に示します。

表5‒90 calcで指定できる内容

項目

指定値

calculation formula

指定された計算式の演算結果を挿入します。

alias-name.csvfield-name

csvfieldオペランドで指定されたフィールド名のフィールドのデータを挿入します(10進数項目)。

数値

指定された数値データを挿入します(符号付き数値は,括弧で囲む)。

計算式に指定できる組み合わせを次の表に示します。

表5‒91 計算式に指定できる組み合わせ

指定種類

指定例

10進数項目と10進数項目

10進数項目A + 10進数項目B

10進数項目と数値

10進数項目A * 100

数値と数値

100 * 0.25

100 * (-0.25)

注※

csvfieldオペランドで指定された数値(固定小数点数)のフィールド名を示します。

データの形式については,「3.2 キー属性と形式」を参照してください。

計算式に指定できる内容を次の表に示します。

表5‒92 計算式で指定できる内容

指定内容

意味

指定最大

+(加算),-(減算),*(乗算),/(除算)

演算子

該当しない

「0〜9」の数字

数値データ

16個

( ),

({+|- } 「0〜9」の数字)

優先順位,符号付き数値

24ネスト

alias-name.csvfield-name

csvfieldオペランドで指定された,10進数項目のフィールド名

16個

注※

レコード中の値を演算に使用する場合に指定します。

注意事項
  • 符号付き数字は()で囲みます。また,符号は数字の前に指定します。

    (例)(+3),(-3)

  • 0除算の場合はKBLS2424-Eエラーとなります。

  • 数値項目のデータに形式以外のデータ(数値以外)があった場合,KBLS2413-Eエラーとなります。

  • lenサブオペランドは必ず指定してください。

  • csvfieldオペランドで指定したフィールドのセル値が次に示す場合は,0(ゼロ)と扱います。

    ・空白(例 1,△△,222)

  • csvfieldオペランドで指定したフィールドのセル値が次に示す場合は,NULL値と扱います。

    ・NULLセル(空のセル)(例 1,,2)

    ・3列しかないレコードに対して4列目を指定

  • 計算式に指定されたフィールドの入力ではcsvfieldに指定された有効桁は参照しません。入力桁数は実セル長となります。入力したフィールドの有効桁が38桁を超えた場合,右側の桁あふれ部分を丸めて,有効桁数に調整されます。ただし,有効桁のうち,整数桁が38桁を超えた場合はKBLS2412-Eエラーとなります。丸め処理は入力ファイル情報パラメタのroundオペランドに指定された方式で行います。丸め方式については,「5.8.11 roundオペランド」を参照してください。

  • 演算結果を引用符で囲んだ形式で出力したい場合は,出力ファイルパラメタ(-outfileパラメタ,-joinoutパラメタ)のquottypeオペランドで引用符を付加するオプションコードを指定します。

  • 演算結果のセル出力書式を次に示します。

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

    注※

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

    書式についての説明を次の表に示します。

    表5‒93 演算結果の出力書式

    書式

    設定内容

    有効桁

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

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

    • 整数部の有効桁が0桁の場合は,小数点「.」だけ付加します。

    通貨記号

    1. 計算式にフィールド指定がない場合

      通貨記号は付加しません。

    2. 計算式にフィールド指定がある場合

      計算式に通貨記号を含むフィールドが1 個でもあれば,通貨記号を付加します。

      通貨記号は左端に付加されます。

    符号

    1. 計算式に指定されたフィールドに符号が含まれている場合

      演算結果に符号が付加されます。

      付加される符号は,演算結果が負数の場合は「-」,負数以外は「+」です。

      符号の位置は,計算式に指定されたフィールドのうち,最初の符号付きの位置に合わせます。

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

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

    2. 計算式に指定されたフィールド名に符号が含まれていない場合

      演算結果に符号は付加されません。

      ただし,演算結果が負数になった場合,符号「-」が付加されます。

      符号の位置は整数部の左側です。

    桁区切り

    1. 計算式にフィールド指定がない場合

      桁区切りは付加しません。

    2. 計算式にフィールド指定がある場合

      計算式に桁区切り(コンマ)を含むフィールドが1個でもあれば,整数部に桁区切りを付加します。

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

      桁区切り(コンマ)を含むフィールドが1個もなければ,桁区切りは付加しません。

(3) posサブオペランド

出力フィールドの出力位置を指定します。

詳細は,「5.10.15(3) posサブオペランド」を参照してください。

(4) lenサブオペランド

出力フィールドの長さを指定します。

詳細は,「5.10.15(4) lenサブオペランド」を参照してください。

(5) 桁の丸め方式サブオペランド

数値属性の入力フィールドに対する桁丸め(端数処理)方式を指定します。

詳細は,「5.10.15(5) 桁の丸め方式サブオペランド」を参照してください。

(6) paddingサブオペランド

文字属性の入力フィールドに対するパディング文字を指定します。

詳細は,「5.10.15(6) paddingサブオペランド」を参照してください。