5.10.15 csvformatオペランド
- 意味
-
入力ファイル形式がCSVの,出力レコードフォーマットを定義します。
出力レコードの項目単位にcsvformatオペランドを指定します。
項目の詳細をサブオペランドで指定します。
- 【例】
-
出力レコードが項目1から項目3まである場合,csvformatオペランドは3個指定します。
項目1,項目2,項目3
csvformat=・・・・ 項目1の定義
csvformat=・・・・ 項目2の定義
csvformat=・・・・ 項目3の定義
- 形式
csvformat={ val{ (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(insertdata)を指定した場合,lenは指定できません。
val(csvfield-name)で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. -outfileパラメタのcellsepaオペランドに指定したデリミタ
2. 環境ファイル「EXS_OUTCELLSEPA」に指定したデリミタ
3. -inpfileパラメタのcellsepaオペランドに指定したデリミタ
4. 環境ファイル「EXS_CELLSEPA」に指定したデリミタ
5. コンマ
-
-outfileパラメタのrecsepaオペランドに指定した改行文字を付加します。recsepaオペランドの指定を省略した場合は,-inpfileパラメタのrecsepaオペランドの指定に従います。詳細は,「5.10.5 recsepaオペランド」を参照してください。
-
csvformatオペランドは,exsortパラメタファイルで指定します。exsort64コマンドラインで指定した場合,KBLS1114-Eエラーとなります。
-
csvformatオペランドは,UNIXのexsort64(64ビット版SORT EE)コマンドだけ指定できます。Windowsのexsort64コマンド,またはexsort(32ビット版SORT EE)コマンドに指定した場合,KBLS1100-Eエラーとなります。
-
csvreorgオペランドと同時に指定できません。同時に指定した場合はKBLS2388-Eエラーとなります。
-
- 〈この項の構成〉
(1) valサブオペランド
- 意味
-
出力レコードへ挿入するフィールドや挿入データを指定します。
- 形式
val{ (csvfield-name)|()|(insertdata) }
- 指定値
-
valに指定する内容を次の表に示します。
表5‒52 valに指定する内容 項番
項目
指定値
1
(csvfield-name)
csvfieldオペランドで指定されたフィールド名のフィールドデータを挿入します。
2
()
1レコードを挿入します。
3
(insertdata)
指定されたデータを挿入します。
指定できるフィールド名の属性を次の表に示します。
表5‒53 指定できるフィールド名の属性 指定できる属性※
属性コード
文字
文字(JIS8単位コード)
j
文字
c
文字(文字順序変更機能で指定した文字)
q
文字(ワイド文字)
w
文字(マルチバイト文字)
u
文字(マルチバイト文字で,UnicodeのIVSに対応した属性)
v
文字(左分離符号付き数字)
d
10進数
数値(固定小数点数)
z
日付
日付(英数字)
g
日付時刻
日付時刻(数字)
h
挿入データの指定内容を次の表に示します。
表5‒54 挿入データ指定内容 指定値
指定内容
C'文字列'
任意の文字列(改行文字は指定できません)
X'16進数'
「0〜9」,「A〜F」,「a〜f」の偶数桁の16進数
- 注意事項
-
-
挿入文字データ(C'nn')の中にシングルクォーテーション(')または円記号(\)のどちらかを指定する場合は,選択条件式の文字条件値と同じように指定してください。選択条件式の書き方については,「4.5.3 選択条件式の書き方」を参照してください。
-
X'16進数'に改行コードおよびデリミタが指定された場合,引用符で囲んだ形式にして出力します。
-
C'文字列'にデリミタが指定された場合,引用符で囲んだ形式にして出力します。
-
文字挿入データ「C'文字'」に日本語(マルチバイト文字)を含む場合,パラメタファイルに記述されたcode文で指定された文字コードから,入力ファイルパラメタのcodetypeに指定されたエンコードに変換し挿入します。エンコードに変換できなかった場合,KBLS2409-Eエラーとなります。
-
val(csvfield-name)指定で,lenが指定されなかった場合,挿入するデータの長さは実セル長となります。lenが指定された場合,入力したフィールドデータを正規化し,指定されたlenの長さ分挿入します。フィールドデータの正規化方法については「付録B CSVファイルのデータの扱い(SORT EEの機能)」および「付録J 日付時刻データの形式(SORT EEの機能)」を参照してください。lenの指定については「5.10.14(4) lenサブオペランド」を参照してください。
-
(2) calcサブオペランド
- 意味
-
計算式,および挿入する数値データを指定します。
- 形式
calc = { calculation formula | field-name | 数値 }
- 指定値
-
calcに指定する内容を次の表に示します。
表5‒55 calcで指定できる内容 項目
指定値
calculation formula
指定された計算式の演算結果を挿入します。
field-name
csvfieldオペランドで指定されたフィールド名のフィールドのデータを挿入します(10進数項目)
数値
指定された数値データを挿入します。
符号付き数値は,括弧で囲みます。
計算式に指定できる組み合わせを次の表に示します。
表5‒56 計算式に指定できる組み合わせ 指定種類
指定例
10進数項目※と10進数項目
10進数項目A + 10進数項目B
10進数項目と数値
10進数項目A * 100
数値と数値
100 * 0.25
100 * (-0.25)
計算式に指定できる内容を次の表に示します。
表5‒57 計算式で指定できる内容 指定内容
意味
指定最大
+(加算),-(減算),*(乗算),/(除算)
演算子
該当しない
「0〜9」の数字
数値データ
16個
( ),({+|- } 「0〜9」の数字)
優先順位,符号付き数値
24ネスト
フィールド名※
csvfieldオペランドで指定された,10進数項目のフィールド名
16個
- 注意事項
-
-
符号付き数字は()で囲みます。また,符号は数字の前に指定します。
例)(+3),(-3)
-
0除算の場合はKBLS2424-Eエラーとなります。
-
数値項目のデータに形式以外のデータ(数値以外)があった場合,KBLS2413-Eエラーとなります。
-
lenサブオペランドは必ず指定してください。
-
csvfieldオペランドで指定したフィールドのセル値が次に示す値の場合は,0(ゼロ)と扱います。
・空白(例 1,△△,222)
・NULLセル(空のセル)(例 1,,2)
・3列しかないレコードに対して4列目を指定
-
計算式に指定されたフィールドの入力ではcsvfieldに指定された有効桁は参照しません。入力桁数は実セル長となります。入力したフィールドの有効桁が38桁を超えた場合,小数部の右側の桁あふれ部分を丸めて,有効桁数に調整されます。ただし,有効桁のうち,整数桁が38桁を超えた場合はKBLS2412-Eエラーとなります。丸め処理は入力ファイル情報パラメタのroundオペランドに指定された方式で行います。丸め方式については,「5.8.11 roundオペランド」を参照してください。
-
演算結果を引用符で囲んだ形式で出力したい場合は,出力ファイルパラメタ(-outfileパラメタ,-joinoutパラメタ)のquottypeオペランドで引用符を付加するオプションコードを指定します。
-
演算結果のセル出力書式を次に示します。
[通貨記号][符号]数字※[小数点][数字][符号]
書式についての説明を次の表に示します。
表5‒58 演算結果の出力書式 項番
書式
設定内容
1
有効桁
lenで指定された有効桁に合わせます。
-
小数部の桁を指定している場合は,小数点も付加されます。小数部の有効桁が指定されていない場合は,整数部だけです。
-
整数部の有効桁が0桁の場合は,小数点「.」だけ付加します。
2
通貨記号
-
計算式にフィールド名の指定がない場合
通貨記号は付加しません。
-
計算式にフィールド名の指定がある場合
計算式に通貨記号を含むフィールドが1個でもあれば,通貨記号を付加します。
通貨記号は左端に付加されます。
3
符号
-
計算式に指定されたフィールドに符号が含まれている場合
演算結果に符号が付加されます。
付加される符号は,演算結果が負数の場合は「-」,負数以外は「+」です。
符号の位置は,計算式に指定されたフィールドのうち,最初の符号付きの位置に合わせます。
・最初の符号付きの符号位置が左側の場合,符号の位置は整数部の左側です。
・最初の符号付きの符号位置が右側の場合,符号の位置は小数部の右側です。
-
計算式に指定されたフィールド名に符号が含まれていない場合
演算結果に符号は付加されません。
ただし,演算結果が負数になった場合,符号「-」が付加されます。
符号の位置は整数部の左側です。
4
桁区切り
-
計算式にフィールド名の指定がない場合
桁区切りは付加しません。
-
計算式にフィールド名の指定がある場合
計算式に桁区切り(コンマ)を含むフィールドが1個でもあれば,整数部に桁区切りを付加します。
桁区切りは3桁ごとにコンマを付加します。
桁区切り(コンマ)を含むフィールドが1個もなければ,桁区切りは付加しません。
-
-
(3) posサブオペランド
- 意味
-
valまたはcalcの挿入データは,csvformatオペランドの順に出力レコードを作成しますが,このオペランドを指定すると挿入データを固定位置に挿入できます。
- 形式
pos(position)
- 指定値
-
挿入データの位置(セル番号)を,1〜16,384の範囲で指定します。
- 注意事項
-
-
挿入データとの間に生じた間隔は,空セルとなります。
【例】
csvformatオペランドの指定
csvformat=val(C'aaaaa') pos(1)
csvformat=val(C'bbbbb') pos(3)
出力結果
1セル目へ定数「aaaaa」を,3セル目に定数「bbbbb」を挿入。2セル目は空セルとなる。
aaaaa
,
,
bbbbb
-
前の出力フィールドや挿入データと重なる位置は指定できません。
【例】
1セル目は定数C'aaaaa'を挿入し,再度1セル目に定数C'bbbbb'を挿入できません。
-
(4) lenサブオペランド
- 意味
-
出力フィールドの長さを指定します。
- 形式
len(length)
(a) valサブオペランドとの組み合わせ
csvfieldで指定されたセルから,lenで指定された長さのデータを挿入します。
lenが省略された場合,csvfieldで指定されたセルを挿入します。
■ valがフィールド名の指定の場合
- 指定値
-
出力フィールドの長さを5桁以内の数字で指定します。
指定する長さは,属性によって形式と指定できる範囲が異なります。
指定できる長さの形式を次の表に示します。
表5‒59 指定できる長さの形式 挿入するデータの属性
指定できる長さの形式
文字
j,c,q,w※
形式1 : len
u,v
d
10進数
z
形式2 : p [, s]
日付
g
形式3 : d , dateform
日付時刻
h
形式4 : datedigit [, timedigit]
- 形式1 : len
-
属性が「j」,「c」,「q」,「w」,「u」,「v」または「d」のフィールド名を指定した場合に,文字データの最大バイト長を,10進数で指定します。
-
入力したセルデータを,「付録B CSVファイルのデータの扱い(SORT EEの機能)」に示す「内部データ形式(有効データ形式)」のとおりに正規化し,指定された長さを挿入します。
-
出力フィールドの長さを次の表に示す範囲で指定します。
表5‒60 指定できる長さ 挿入するデータの属性
指定できる長さ(単位)
j,c,q,w※1
1〜4,096(バイト)
u,v
1〜4,096(文字数)※2
d
1〜256(桁)※3
-
入力フィールドの先頭が引用符の場合だけ,対の引用符で囲んだ範囲がエスケープされます。エスケープされた引用符は,2文字で1文字となります。また,入力フィールドの先頭および対の引用符は,有効バイト長に含まれません。詳細は,「付録B.4 引用符のエスケープ」を参照してください。
-
入力フィールドの先頭が引用符の場合,出力フィールドを引用符で囲んで出力します。
-
フィールド属性が「j」,「c」,「q」,「w」で,マルチバイト文字(日本語)の途中で最大長を超えた場合でも,指定された長さを挿入します。「付録B.2 文字列データの端数処理」に示す端数処理は行いません。
-
- 形式2 : p [, s]
-
属性コード「z」のフィールド名を指定(calcに指定した計算式の結果を含む)した場合に,数値データの有効桁を10進数で指定します。
-
p(precision:精度)は,数値データの総桁数を表します。pからsを引いた桁が整数部の有効桁となります。
-
pに指定できる桁の範囲は,1〜38桁です。
-
s(scale:位)は,数値データの小数部(小数点以下)の有効桁を表します。
-
sに指定できる桁の範囲は,0〜p桁です(p以下の桁を指定 0≦s≦p)。p=sを指定した場合は,整数部の有効桁は0(整数部なし)となります。
-
sを省略した場合は,小数部の有効桁は0(小数部なし)を仮定します。データ中に小数点を含まない場合は,sの指定は必要ありません。
-
データ中には,0〜9の数字以外に,データを囲んでいる引用符(セルの先頭と末尾),符号,通貨記号,および桁修飾文字(コンマ,小数点,空白)を含められます。これらの文字を除いた内部データ形式に正規化し,指定された長さを挿入します。また,それぞれの除外文字は位置規則があります。違反するデータを検出した場合は,データ形式が不正と見なされ,KBLS2416-Eエラーとなります。除外文字の位置規則については,「付録B CSVファイルのデータの扱い(SORT EEの機能)」を参照してください。
-
データ中の符号,通貨記号,桁修飾文字(コンマ,小数点,空白),およびデータを囲んでいる引用符(セルの先頭と末尾)は,有効桁に含まれません。有効桁の対象は,0〜9の数字だけです。
-
データ中に小数点がある場合は,小数点位置を合わせて入力します。データ中に小数点がない場合は,データの末尾に小数点を仮定して入力します。詳細は,「付録B CSVファイルのデータの扱い(SORT EEの機能)」を参照してください。
-
実際に入力したデータの桁に過不足がある場合は桁調整を行います。詳細は,「付録B CSVファイルのデータの扱い(SORT EEの機能)」を参照してください。
-
すべて空白のデータは,0(ゼロ)として入力します。
-
出力フィールドは,csvformatオペランドの桁の丸め方式サブオペランド,または環境ファイル「EXS_ROUND」指定した,丸め方式(四捨五入,切り捨て,切り上げのどれか)に従って,整数部または小数部を丸め処理します。サブオペランドおよびEXS_ROUNDの両方の指定を省略している場合,切り捨てられます。詳細は,「5.10.15(5) 桁の丸め方式サブオペランド」を参照してください。
-
- 形式3 : d , dateform
-
属性コード「g」のフィールド名を指定した場合に,日付データの有効桁,および書式番号を指定します。
-
d(digit:桁)は,日付データの有効桁を表します。
-
dateformは,日付データの書式を表します。
-
入力したセルデータを「付録B.3 日付データの端数処理」に示す「内部データ形式(有効データ形式)」のとおりに正規化し,指定された有効桁数を挿入します。
-
正規化では,入力データの左端から指定された書式に適用します。有効桁以降のデータは無視されます。
-
dに指定できる桁の範囲は,書式によって異なります。指定できる桁の範囲を次の表に示します。
表5‒61 指定できる桁の範囲 dateform(書式)
データ形式※1
d(桁)※2
1
前置4桁年号
4,6,8(桁)
2
後置4桁年号
2,4,8(桁)
3
前置2桁年号
2,4,6(桁)
4
後置2桁年号
2,4,6(桁)
-
データ中には,データを囲んでいる引用符(セルの先頭と末尾)と年月日を区切る桁修飾文字を含むことができます。これらの文字は有効桁に含まれません。日付データの形式については「3.2 キー属性と形式」を参照してください。
-
入力データの年号部分が数字「0〜9」以外を指定した場合,データ形式が不正と見なされ,KBLS2416-Eエラーとなります。なお,年号以外のデータ(月,日)は,形式チェックしません。
-
入力データがNULLセル(空のセル)の場合,「0000年00月00日」を仮定し,指定された桁で出力します。
-
桁修飾文字は,「ハイフン(-)」と「スラント(/)」の2種類です。
-
環境変数「EXSORTGOPTION(64ビット版は「EXSORT64GOPTION」)」を指定すると,「年月日{T|空白}時分秒」形式の入力データを扱えます。また,桁修飾文字は,「ハイフン」,「スラント」および「ピリオド(.)」の3種類に変更されます。環境変数については,「14.1.1(29) EXSORTGOPTION」または「14.1.2(29) EXSORT64GOPTION」を参照してください。
-
- 形式4 : datedigit [, timedigit]
-
属性コード「h」のフィールド名を指定した場合に,日付および時刻データの有効桁を10進数で指定します。
-
datedigitは,日付データの有効桁を表します。
-
timedigitは,時刻データの有効桁を表します。
-
入力したセルデータを「付録J 日付時刻データの形式(SORT EEの機能)」に示す「内部データ形式(有効データ形式)」のとおりに正規化し,指定された有効桁数を挿入します。
-
正規化では,入力データを項目の区切り文字で区切り,それぞれのデータの左端から日付時刻の書式に適用します。有効桁以降のデータは無視されます。
-
datedigitに指定できる桁は0,4,6または8桁です。timedigitに指定できる桁は0,2,4,6または9桁です。それ以外を指定した場合は,KBLS2408-Eエラーになります。また,datedigitとtimedigit両方に0を指定した場合もKBLS2408-Eエラーになります。
-
入力データがNULLセル(空のセル)の場合,「19700101T000000000(1970年01月01日00時00分00秒000ミリ秒)」を仮定し,指定された桁で出力します。
-
データ中には,データを囲んでいる引用符(セルの先頭と末尾),項目区切り文字('T'または空白),および桁修飾文字(スラント,ハイフン,コロン,およびピリオド)を含めることができます。これらの文字は有効桁に含まれません。また,12時間制表記も有効桁に含まれません。日付時刻データの形式については,「3.2 キー属性と形式」を参照してください。
-
入力データが数字「0〜9」以外を指定した場合,データ形式が不正と見なされ,KBLS2416-Eメッセージが表示されてエラーになります。また,年の桁数が4桁未満,または入力データが指定できる範囲を超えた場合もエラーとなります。
-
csvformatでは,日付時刻のまたがりは調整しません。入力したデータをそのまま指定された桁数分,挿入します。
-
■ valがC'文字列',X'16進数',レコード指定(())の場合
lenは指定できません。
(b) calcサブオペランドとの組み合わせ
- 指定値
-
出力フィールドの長さを5桁以内の数字で指定します。
指定できる長さの形式を次の表に示します。
表5‒62 指定できる長さの形式 挿入するデータの属性
指定できる長さの形式
10進数
演算結果
z
形式2 : p [, s]
-
形式2については,「valがフィールド名の指定の場合」の「形式2 : p [, s]」を参照してください。
-
演算結果の整数桁が,有効桁の最大値を超えた場合はKBLS2412-E(オーバーフロー)エラーに,lenで指定された整数桁(有効桁−小数桁)を超えた場合はKBLS2423-Eエラーとなります。
-
演算結果の小数桁が,lenで指定された小数桁を超えた場合,次のどちらかの指定に従って,右側の桁あふれ部分を丸めて,指定された有効桁数に調整(丸め処理)します。
・csvformatオペランドの桁の丸め方式サブオペランド
環境ファイル「EXS_ROUND」指定した,丸め方式(四捨五入,切り捨て,切り上げのどれか)
サブオペランドおよびEXS_ROUNDの両方の指定を省略している場合,切り捨てられます。詳細は,「5.10.15(5) 桁の丸め方式サブオペランド」を参照してください。
-
(5) 桁の丸め方式サブオペランド
- 意味
-
valでの数値項目の挿入や,calcでの演算結果で,lenで指定した小数桁数以上の小数データが発生した場合,lenで指定した小数桁に丸める方式を指定します。
- 指定値
-
指定内容を次の表に示します。
表5‒63 桁の丸め方式 指定値
丸め内容
round
有効小数部以下を四捨五入
roundup
有効小数部以下を切り上げ
truncate
有効小数部以下を切り捨て
丸め対象の桁位置を次の表に示します。
表5‒64 丸め対象の桁位置 小数部桁数指定
小数データ発生有無
小数部丸め
無または0
無
丸めなし
有
小数1桁目以降が丸め対象
有
無
丸めなし
有
指定小数部桁数(A)とデータ中の小数部桁数(B)の大小関係
-
A = B ・・・ 丸めなし
-
A > B ・・・ 丸めなし
-
A < B ・・・ データ中小数部のA+1桁目以降が丸め対象
-
- 注意事項
-
-
桁の丸め方式の優先順位を次に示します。
1. csvformatオペランドの桁の丸め方式サブオペランド
2. 環境ファイルの「EXS_ROUND」項目
3. 切り捨て(デフォルト値)
-
(6) paddingサブオペランド
- 意味
-
挿入するデータの長さを,指定されたlenにそろえるためのパディング文字を指定します。
このサブオペランドは,valに文字属性フィールドを指定した場合に有効です。
- 形式
padding({ C'padding-character' | X'hex-digit' })
- 指定値
-
paddingに指定する内容を次の表に示します。
表5‒65 パディング文字 項番
指定値
挿入内容
1
C'padding-character'
パディング文字として,任意の1文字(半角英数字)を指定します。
【指定例】padding(C'*')
2
X'hex-digit'
パディング文字として,任意の1バイトのデータを指定します。
【指定例】padding(X'ff')
- 注意事項
-
-
パディング文字に,改行文字およびマルチバイト文字(日本語)は指定できません。
-
16進数として指定できるのは「0〜9」,「A〜F」および「a〜f」だけです。
-
exsortパラメタファイルに指定する場合は,ダブルクォーテーションで囲まないでください。また,パディング文字に引用符(シングルクォーテーションまたはダブルクォーテーション)を指定する場合,「\」でのエスケープは不要です。
【例】
padding(C'*')
padding(X'ff')
padding(C'"')
-
パディング文字の優先順位を次に示します。
1. csvformatオペランドのpaddingサブオペランド
2. 出力ファイルパラメタ(-outfile,-joinout)のpaddingオペランド
3. 環境ファイル「EXS_PADDING」項目
4. デフォルト値 空白(0x20)
-
指定されたフィールド名の属性が「左分離符号付き数字(d)」の場合,paddingは無効です。左分離符号付き数字(d)は空白を加えて長さをそろえます。
-