レコード再編成機能を使用する場合に再編成フィールドを指定します。
再編成フィールドに指定したフィールドは、出力レコードの先頭から順に詰めて出力します。レコード再編成機能を使用する場合、キーフィールドと集約フィールドにはレコード再編成後のフィールド位置を指定します。
記述形式
-e recon-def [ ,recon-def ...]
recon-def の記述形式
recon-def の記述形式には、以下の4つの形式があります。
recon-def の記述形式1
recon-def の記述形式1では、入力レコードのフィールドを指定します。
指定したフィールドが入力レコードに存在しない場合は、エラーになります。
pos.len
recon-def の記述形式2
recon-def の記述形式2では、自己規定値を指定します。
self.len typ [ opt ]
recon-def の記述形式3
recon-def の記述形式3では、入力レコードの指定位置から終端までを再編成フィールドに指定します。
指定したフィールドが入力レコードに存在しない場合は、エラーになります。
pos.ENDrecon-def の記述形式4
recon-def の記述形式4では、空フィールドを指定します。
テキストファイルCSV形式、およびテキストファイルTSV形式の場合に指定できます。
EMPTY [ opt ]pos
再編成フィールドの位置を指定します。
バイナリファイルとテキストファイル固定フィールド指定の場合は、レコードの先頭を0としたバイト位置を指定します。テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合は、0から数えたフィールド番号を指定します。
len
再編成フィールドの長さをバイト数で指定します。
テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合、指定したフィールド長よりも長いフィールドが現れた場合は、指定したフィールド長で処理します。指定したフィールド長よりも短いフィールドが現れた場合は、実際のフィールド長で処理します。
recon-def の記述形式1では長さの制限はありません。recon-def の記述形式2の場合の各データ形式における指定可能な長さについては、1.7.4.4 再編成フィールドの自己規定値に指定可能なデータ形式を参照してください。
注意
テキストファイルCSV形式、およびテキストファイルTSV形式の場合、フィールドを囲むダブルクォーテーション(")は、再編成フィールドの長さに含みません。また、ダブルクォーテーション(")で囲まれたフィールド内の2つ連続したダブルクォーテーション("")は、1つのダブルクォーテーション(")として長さを計算します。
例) テキストファイルCSV形式における、再編成フィールドと長さ
再編成フィールド 再編成フィールドとして有効な文字 再編成フィールドの長さ ABC ABC 3バイト "ABC" ABC 3バイト "A""B""C" A"B"C 5バイト "A,B,C" A,B,C 5バイト
self
自己規定値を指定します。
self の記述形式を以下に示します。
self の記述形式1
self の記述形式1では、文字を直接指定します。
'文字列 'self の記述形式2
self の記述形式2では、文字を16進数で指定します。
x16進数self の記述形式3
self の記述形式3では、数値、または数字を10進数で指定します。
d10進数注意
オプション引数で自己規定値の文字列を指定する場合は、オプション引数全体をダブルクォーテーション(")で囲みます。
オプション引数でダブルクォーテーション(")を含んだ自己規定値の文字列を指定する場合は、ダブルクォーテーション(")の前に円記号(\)を指定します。
オプション引数でクォーテーション(')を含んだ自己規定値の文字列を指定する場合は、クォーテーション(')を2つ続けて指定します。
自己規定値の文字列を指定する場合、文字列は1文字以上である必要があります。
typ で指定したデータ形式がUnicode UTF-32形式の場合、自己規定値の文字列はASCIIコードの範囲内の文字しか指定できません。ASCIIコードの範囲外の文字を指定する場合は、16進数で指定してください。
自己規定値の10進数を指定する場合は、符号を指定できます。
テキストファイル固定フィールド指定の場合は、自己規定値にレコード分離文字を含むことはできません。
テキストファイル浮動フィールド指定の場合は、自己規定値にフィールド分離文字列、またはレコード分離文字を含むことはできません。
テキストファイルCSV形式、およびテキストファイルTSV形式の場合、自己規定値にフィールド分離文字、レコード分離文字(注)、またはダブルクォーテーション(")が含まれているときは、自己規定値をダブルクォーテーション(")で囲んで出力します。この際、自己規定値のダブルクォーテーション(")は、2つ連続して出力します。
注) 入力ファイルのレコード分離文字だけでなく、レコード分離文字として許されているCRLF、CR、およびLFのどれか1つでも含まれている場合、自己規定値をダブルクォーテーション(")で囲みます。例) 自己規定値にフィールド分離文字(コンマ)、またはダブルクォーテーション(")を含む場合の再編成フィールドに出力されるデータ自己規定値の指定 再編成フィールドに出力されるデータ FIELD"2" "FIELD""2""" FIELD2,3 "FIELD2,3" FIELD"2",3 "FIELD""2"",3"
自己規定値で指定した値とlen で指定した長さが異なるときは、以下に示すように処理します。
自己規定値が文字列の場合
自己規定値で指定した文字列の長さがlen で指定した長さより短い場合は、自己規定値を左詰めにして右余白に空白を詰めます。
自己規定値で指定した文字列の長さがlen で指定した長さより長い場合は、エラーとなります。
自己規定値が数字、または数値の場合
自己規定値で指定した値をtyp とlen で指定したデータ形式と長さに変換して埋め込みます。
変換結果がlen を超える場合は、エラーとなります。
typ で指定したデータ形式が、固定小数点2進数、符号なし固定小数点2進数、8086形式固定小数点2進数、8086形式符号なし固定小数点2進数、システム依存形式固定小数点2進数、またはシステム依存形式符号なしの場合、自己規定値はlen で指定した長さで表現できる値まで指定できます。
例
長さ | 符号ありのデータ形式 | 符号なしのデータ形式 |
|---|---|---|
1バイト | -128~127 | 0~255 |
2バイト | -32768~32767 | 0~65535 |
3バイト | -8388608~8388607 | 0~16777215 |
4バイト | -2147483648~2147483647 | 0~4294967295 |
: | : | : |
typ
自己規定値のデータ形式を指定します。
指定可能なデータ形式については、1.7.4.4 再編成フィールドの自己規定値に指定可能なデータ形式を参照してください。
注意
ASCIIコードは、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がASCIIコード系の場合に指定できます。
EBCDICコードは、入力コード系オプション(-q)がEBCDICコード系の場合に指定できます。
シフトJISコードは、入力コード系オプション(-q)がASCIIコード系の場合に指定できます。
Unicode UCS-2形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UCS-2形式)の場合に指定できます。
Unicode UTF-32形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UTF-32形式)の場合に指定できます。
Unicode UTF-8形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UTF-8形式)の場合に指定できます。
END
recon-def の記述形式3の場合に、「END」の固定文字列を指定します。
EMPTY
recon-def の記述形式4の場合に、「EMPTY」の固定文字列を指定します。
opt
再編成フィールドの操作を指定します。
テキストファイルCSV形式、またはテキストファイルTSV形式の場合の、recon-def の記述形式2、またはrecon-def の記述形式4のときに指定できます。以下から選択して指定します。省略した場合は、Lを指定したものとして動作します。
opt | 意味 |
|---|---|
A | 再編成フィールドをダブルクォーテーション(")で囲みます。 |
L | 再編成フィールドをダブルクォーテーション(")で囲みません。 |
注) 入力ファイルのレコード分離文字だけでなく、レコード分離文字として許されているCRLF、CR、およびLFのどれか1つでも含まれている場合、自己規定値をダブルクォーテーション(")で囲みます。
参考
テキストファイルCSV形式、またはテキストファイルTSV形式の場合、recon-def の記述形式1、またはrecon-def の記述形式3のときに、再編成フィールドをダブルクォーテーション(")で囲むかどうかは、入力レコードのフィールドに従います。入力レコードのフィールドがダブルクォーテーション(")で囲まれているときは、レコード再編成後のフィールドもダブルクォーテーション(")で囲みます。
例) 再編成フィールドを「-e 1.3,2.2」と指定した場合
入力レコード 出力レコード "001","ABC",60 "ABC",60 "002","ABCDE",50 "ABC",50 "003","AB,CDE",40 "AB,",40 "004","AB"CDE,30 (注) "AB"C,30 注) 2番目のフィールドは、「AB」がダブルクォーテーションで囲まれ、「CDE」がそのあとに続いていると判断します。
記述例
例
入力レコードの5バイト目から長さ10バイトのフィールドを再編成する場合は、以下のように指定します。
-e 4.10
自己規定値としてASCIIコードの「abc」を文字列で指定する場合は、以下のように指定します。
-e "'abc'.3asc"
自己規定値としてダブルクォーテーション(")を含んだASCIIコードの「ab"cd」を文字列で指定する場合は、以下のように指定します。
-e "'ab\"cd'.5asc"
自己規定値としてクォーテーション(')を含んだASCIIコードの「abc'd」を文字列で指定する場合は、以下のように指定します。
-e "'abc''d'.5asc"
自己規定値としてASCIIコードの「abc」を16進数で指定する場合は、以下のように指定します。
-e x616263.3asc
自己規定値として外部10進数の「-32」を長さ4バイトで指定する場合は、以下のように指定します。
-e d-32.4zdl
入力レコードの5バイト目からレコードの最後までを再編成する場合は、以下のように指定します。
-e 4.END
入力レコードの3バイト目から長さ8バイトのフィールドを再編成し、その後に自己規定値として文字列「,」を再編成して、さらにその後に入力レコードの20バイト目から長さ5バイトのフィールドを再編成する場合は、以下のように指定します。
-e "2.8,','.1asc,19.5"
テキストファイルCSV形式、またはテキストファイルTSV形式の場合、自己規定値としてASCIIコードの「abc」を文字列で指定し、このフィールドをダブルクォーテーション(")で囲むときは、以下のように指定します。
-e "'abc'.3ascA"
テキストファイルCSV形式、またはテキストファイルTSV形式の場合、入力レコードの1番目のフィールドと2番目のフィールドの間にダブルクォーテーション(")で囲まれた空フィールドを追加するときは、以下のように指定します。
-e 0.1,EMPTYA,1.END