5.8.15 csvreorgオペランド
- 意味
-
CSVファイルの入力レコード編集フォーマットを指定します。
このオペランドは,CSVファイルを指定した場合だけ有効です。CSVファイル以外を指定した場合は,KBLS1522-Eエラーとなります。
- 形式
csvreorg=csv-reorganization-format [△csv-reorganization-format … ]
入力レコード編集フォーマットを指定します。
指定できるフォーマットの個数は,1〜128個です。
入力レコード中の編集するセル(以降,編集セルと呼びます)を指定した位置に置くことで,レコード形式を再編成する機能です。編集セルは,指定した順序に従って,前の編集セルの後方に隣接して置かれます。
csv-reorganization-formatの形式を次に示します。
- csv-reorganization-formatオペランド形式1
[insert_cellpos]+cellpos [−cellnum]
入力レコード中のセルと,挿入位置を指定します。
-
[insert_cellpos]+cellpos [−cellnum]は必ず続けて指定してください。それぞれの値の間に空白やタブを指定しないでください。
-
[insert_cellpos]+cellpos [−cellnum]を複数指定する場合は,1個以上の空白またはタブで区切って指定します。
-
- csv-reorganization-formatオペランド形式2
[insert_cellpos]+insertdata−cnt
挿入データ形式と,挿入位置を指定します。
-
[insert_cellpos]+insertdata−cntは必ず続けて指定してください。それぞれの値の間に空白やタブを指定しないでください。
-
[insert_cellpos]+insertdata−cntを複数指定する場合は,1個以上の空白またはタブで区切って指定します。
-
- 指定値
-
- insert_cellpos
-
insert_cellposに指定する値を次の表に示します。レコード内のセルの挿入位置(レコード編集後のセルの位置)を,番号で指定します。
指定値
機能
説明
0
連結
前に指定した編集セルまたは挿入データの内容に連結し,1つのセルとして配置します。指定した順番に,右側に連結していきます。
-
直前に指定された編集セルが連続したセルの場合,最後のセルの内容に連結します。
-
最初の編集フォーマットに挿入位置「0」を指定した場合,セル番号「1」からセルまたは挿入データを配置します。
-
連結するセルの内容が引用符で囲まれている場合,引用符を除いたデータを連結し,最後にデータ全体を引用符で囲みます。
-
連結する挿入データに改行文字やデリミタが指定されている場合,連結したデータを引用符で囲みます。
1〜16384
挿入
指定した位置に,指定した編集セルまたは挿入データを配置します。
-
レコードの先頭セル番号を「1」,最大セル番号を「n」とし,1〜nまでの番号を指定します。最大セル番号は,16,384番です。
-
挿入位置は,フォーマット間で昇順となるように指定します。
-
前の編集セル範囲または挿入データとの間に間隔が生じる場合には,NULLセル(空のセル)が作成されます。
「0」を指定した連結指定で,連結したデータを引用符で囲む場合の例を次に示します。
(凡例)
←:改行文字
出力セル1と3の内容が引用符で囲まれて出力されます。
-
出力セル1:入力セル2の内容「123」に,入力セル1の内容「ABC」を連結し,引用符で囲む。
-
出力セル2:入力セル3の内容「def」に,入力セル2の内容「123」を連結する。引用符はなし。
-
出力セル3:デリミタを含む挿入データ「V,W」に,入力セル2の内容「123」を連結し,引用符で囲む。
-
出力セル4:入力セル2の内容「123」に,挿入データ「xyz」を連結する。引用符はなし。
-
- +cellpos [−cellnum ]
-
レコード内の編集セルの位置と個数を指定します。
-
レコードの先頭セル番号を「1」,最大セル番号を「n」とし,1〜nまでの番号を指定します。最大セル番号は,16,384番です。
-
連続したセルを指定する場合は,+cellpos−cellnumで番号と個数を指定します。例えば,「+5−3」と指定した場合,5〜7番目の3個の連続したセルが対象となります。
-
連続したセルを指定した場合,insert_cellposで指定された挿入位置に,順番に挿入します。insert_cellposを省略した場合は,前の編集セルに隣接して挿入します。
-
最後の編集セルに限り,[−cellnum]を省略できます。省略した場合,+cellposから実レコードの最後のセルまでを編集セル範囲として扱います。
-
[−cellnum]を省略し,+cellposで指定した編集セル位置が実レコードの最後のセルを超えた場合,編集セルの挿入は行いません。挿入する編集セルが存在しない場合の例題を次に示します。
(凡例)
NULL:NULLセル(空のセル)
←:改行文字
-
- +insertdata
-
insertdataに指定する値を次の表に示します。
指定値
データ形式
X
空白
Z
ゼロ
NULL
NULLセル(空のセル)
C'文字列'
文字列(改行文字は指定できません)
X'16進数'
16進数
-
16進数として指定できるのは「0〜9」および「A〜F」だけです。
-
16進数に指定できる桁数は,次のとおりです。
入力データのエンコード
X'16進数'の指定桁数
ASCII
SJIS
EUC-JP
EUC-HJ
UTF-8
偶数桁
UCS-2LE
UCS-2BE
UTF-16LE
UTF-16BE
4の倍数桁
UCS-4LE
UCS-4BE
UTF-32LE
UTF-32BE
8の倍数桁
-
挿入データに改行文字やデリミタが指定された場合は,引用符で囲んだ(改行文字とデリミタをエスケープする)形式にして出力します。
-
入力データのエンコードが「UCS-2LE」,「UCS-2BE」,「UTF-16LE」または「UTF-16BE」である場合,「UCS-2」の文字コードのデータ形式となります。「付録H Unicode操作文字コード一覧(SORT EE)」の「表H-3 ASCII対応予約文字一覧」を参照してください。
-
入力データのエンコードが「UCS-4LE」,「UCS-4BE」,「UTF-32LE」または「UTF-32BE」である場合,「UCS-4」の文字コードのデータ形式となります。「付録H Unicode操作文字コード一覧(SORT EE)」の「表H-3 ASCII対応予約文字一覧」を参照してください。
-
入力データのエンコードが「EUC-HJ」で,マルチバイト文字を挿入する場合は「X'16進数'」形式で指定してください。
-
改行文字は,「X'16進数'」形式で挿入指定できます。なお,「C'文字列'」形式では改行文字は指定できません。次に示す使い方で,挿入データ中に改行文字を指定できます。改行文字のデータ形式については,「付録H Unicode操作文字コード一覧(SORT EE)」の「表H-3 ASCII対応予約文字一覧」を参照してください。
-
- 入力データのエンコードに「SJIS」を指定した場合の例
-
-
文字列または16進数データをexsortコマンドに指定する場合,フォーマット全体をダブルクォーテーションで囲んで指定してください。exsortパラメタファイルに指定する場合は,ダブルクォーテーションで囲まないでください。文字列データの指定例を次に示します。
指定先
記述例
備考
exsortコマンド
csvreorg="1+2-1△+C'ABCD'-1"
ダブルクォーテーションで囲みます。
exsortパラメタファイル
csvreorg=1+2-1△+C'ABCD'-1
ダブルクォーテーションで囲みません。
-
- −cnt
-
挿入データの繰り返し回数を,1〜65,535の5桁以内の数字で指定します。
-
+insertdataで挿入するデータの形式を指定した場合,この指定は省略できません。
-
挿入データに「NULL(NULLセル)」を指定した場合,繰り返し回数は必ず1となります。2以上を指定しても1が仮定されます。
-
「挿入データのバイト長※×繰り返し回数」の値は,65,535バイト以下にする必要があります。
注※ 16進数で指定した場合は,2桁で1バイトです。
-
- 注意事項
-
-
CSVファイルの編集機能では,-outfile,-catout,または-splitoutパラメタのreclenオペランド,およびminlenオペランドの指定は必須ではありません。reclenオペランドを省略した場合,CSVファイルの最大レコード長を仮定します。また,minlenオペランドを省略した場合,CSVファイルの最小レコード長の「0」を仮定します。CSVファイルの最大レコード長については,「表3-7 SORT EEのパラメタの最小値および最大値」を参照してください。
-
reclenおよびminlenオペランドを指定する場合,レコード編集後のレコード長(編集レコード長)は「minlen≦編集レコード長≦reclen」である必要があります。
編集レコード長とreclen,minlenとの関係
レコード編集結果
minlen > 編集レコード長
×(KBLS1513-E)
minlen ≦ 編集レコード長 ≦ reclen
○
編集レコード長 > reclen
×(KBLS1511-E)
- (凡例)
-
編集レコード長:レコード編集後のレコード長を示します。
○:レコード編集後のレコードをそのまま出力します。
×:括弧内に記載しているメッセージが表示され,エラーとなります。
-
-outfile,-catout,または-splitoutパラメタのcellnumオペランドを指定している場合,レコード編集後のレコードに対してセル数を調整して出力します。詳細は,「5.10.7 cellnumオペランド」を参照してください。
-
挿入位置は,フォーマット間で昇順となるように指定してください。昇順となっていない場合,KBLS1519-Eエラーとなります。指定例を次に示します。
正しい指定例:10+1-5 20+10-5
誤った指定例:20+1-5 10+10-5
(最初の挿入位置(20)と次の挿入位置(10)が逆転している)
-
-outfile,-catout,または-splitoutパラメタのrecsepaオペランドに指定した改行文字を付加します。recsepaオペランドの指定を省略した場合は,-inpfile,-catinp,または-splitinpパラメタのrecsepaオペランドの指定に従います。詳細は,「5.10.5 recsepaオペランド」を参照してください。
-
レコード編集では,セルとセルの間のデリミタは必ず1文字を配置します。入力レコードの連続したデリミタを1つのデリミタとして扱う「連続区切り文字オプション(INPCONSEPA)」を指定している場合でも,デリミタは1文字となります。連続しているデリミタは1文字にまとめられるので注意してください。
-
レコード編集を指定するとデリミタは必ず1文字で配置されるので,レコード出力時に連続したデリミタを1つのデリミタに置き換える「連続区切り文字オプション(OUTCONSEPA)」と同時に指定した場合,OUTCONSEPAオプションは無効となります。
-
配置するデリミタは次の順番で決定されます。なお,複数のデリミタを指定している場合は,先頭に指定したデリミタとなります。
-
-outfile,-catoutまたは-splitoutパラメタのcellsepaオペランドに指定したデリミタ
-
環境ファイルの「EXS_OUTCELLSEPA」に指定したデリミタ
-
-inpfile,-catinp,または-splitinpパラメタのcellsepaオペランドに指定したデリミタ
-
環境ファイルの「EXS_CELLSEPA」に指定したデリミタ
-
コンマ
-
「-outfileパラメタ」の「csvformatオペランド」と同時に指定できません。同時に指定した場合はKBLS2388-Eエラーとなります。
-
入力ファイルパラメタ(-inpfile,-catinp,-splitinpパラメタ)の「csvreorgオペランド」および「-csvreorgパラメタ」は,環境変数「EXSORT64MAXRECLEN」と同時に指定できません。同時に指定した場合はKBLS1107-Eエラーとなります。
-
- 関連パラメタ・オペランド
-
-
-outfileパラメタ recsepaオペランド
-
-outfileパラメタ cellsepaオペランド
-
-outfileパラメタ cellnumオペランド
-
-outfileパラメタ reclenオペランド
-
-outfileパラメタ minlenオペランド
-
-inpfileパラメタ recsepaオペランド
-
-inpfileパラメタ cellsepaオペランド
-
-inpfileパラメタ codetypeオペランド
-
- 指定例
-
指定例はexsortパラメタファイルに指定した場合です。exsortコマンドに指定する場合は,フォーマット全体をダブルクォーテーションで囲んでください。
【例1】(入力データのエンコードに「SJIS」を指定した場合の例)
-inpfile fileorg=C recsepa=LF cellsepa='△' csvreorg=+1-3 +6-4 +X'FF'-3 11+10 file=INFILE -outfile recsepa=CRLF cellsepa=',' file=OUTFILE
-
入力レコードの改行文字(recsepa=LF):0x0A
-
入力レコードのデリミタ(cellsepa='△'):半角空白
-
編集セル1
セル1〜3を,レコード先頭に挿入します。
-
編集セル2
セル6〜9を,編集セル1に隣接して挿入します。
-
挿入データ
X'FF'(3バイト)のデータを,編集セル2に隣接して挿入します。
-
編集セル3
挿入位置11番に,10番からレコード末尾までのセルを挿入します。挿入データとの間に生じた間隔(挿入位置9と10)にはNULLセルが挿入されます。
-
出力レコードの改行文字を,「CRLF」に変更して出力します。(recsepa=CRLF)
-
出力レコードのデリミタを,コンマに変更して出力します。(cellsepa=',')
【例2】(入力データのエンコードに「SJIS」を指定した場合の例)
-inpfile fileorg=C recsepa=LF cellsepa='△' csvreorg=2+1-2 0+C'ABC'-1 7+7-1 0+X'0A'-1 0+5-1 file=INFILE -outfile file=OUTFILE quottype=3
-
入力レコードの改行文字(recsepa=LF):0x0A
-
入力レコードのデリミタ(cellsepa='△'):半角空白
-
編集セル1(挿入)
挿入位置2番から,セル1と2を挿入します。挿入位置との間に生じた間隔(挿入位置1)にはNULLセルが挿入されます。
-
挿入データ(連結)
挿入位置3番のセルの内容に,挿入データ「C'ABC'」を連結します。セルの内容の右側に連結します。
-
編集セル2(挿入)
挿入位置7番から,セル7を挿入します。挿入位置との間に生じた間隔(挿入位置4〜6)にはNULLセルが挿入されます。
-
挿入データ(連結)
挿入位置7番のセルの内容に,挿入データ「X'0A'(改行文字)」を連結します。セルの内容の右側に連結します。
-
編集セル3(連結)
挿入位置7番のセルの内容に,セル5の内容を連結します。セルの内容の右側に連結します。
-
セルを引用符で囲んで出力します。(quottype=3)
-