レコード再編成機能を使用する場合に再編成フィールドを指定します。
再編成フィールドに指定したフィールドは、出力レコードの先頭から順に詰めて出力します。レコード再編成機能を使用する場合、キーフィールドと集約フィールドにはレコード再編成後のフィールド位置を指定します。
記述形式
-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.END
recon-def の記述形式4
recon-def の記述形式4では、空フィールドを指定します。
テキストファイルCSV形式、およびテキストファイルTSV形式の場合に指定できます。
EMPTY [ opt ]
pos
再編成フィールドの位置を指定します。
バイナリファイルとテキストファイル固定フィールド指定の場合は、レコードの先頭を0としたバイト位置を指定します。テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合は、0から数えたフィールド番号を指定します。
len
再編成フィールドの長さをバイト数で指定します。
テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合、指定したフィールド長よりも長いフィールドが現れた場合は、指定したフィールド長で処理します。指定したフィールド長よりも短いフィールドが現れた場合は、実際のフィールド長で処理します。
recon-def の記述形式1では、長さの制限はありません。recon-def の記述形式2で指定可能な各データ形式の長さについては、2.6.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つ続けて指定します。
自己規定値の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 を超える場合は、エラーとなります。
固定小数点2進数、符号なし固定小数点2進数、8086形式固定小数点2進数、8086形式符号なし固定小数点2進数、システム依存形式固定小数点2進数、システム依存形式符号なしの自己規定値を10進数で指定する場合、その値は以下の範囲になります。
長さ | 符号ありのデータ形式 | 符号なしのデータ形式 |
---|---|---|
1バイト | -128~127 | 0~255 |
2バイト | -32768~32767 | 0~65535 |
3バイト | -8388608~8388607 | 0~16777215 |
4バイト以上 | -2147483648~2147483647 | 0~4294967295 |
typ
自己規定値のデータ形式を指定します。
指定可能なデータ形式については、2.6.4.4 再編成フィールドの自己規定値に指定可能なデータ形式を参照してください。
注意
ASCIIコードは、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がASCIIコード系の場合に指定できます。
EBCDICコードは、入力コード系オプション(-q)がEBCDICコード系の場合に指定できます。
シフトJISコードは、入力コード系オプション(-q)がASCIIコード系の場合に指定できます。
Unicode UCS-2形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UCS-2形式)の場合に指定できます。
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」がそのあとに続いていると判断します。
記述例
例
例1) 入力レコードの5バイト目から長さ10バイトのフィールドを再編成する場合は、次のように指定します。
-e 4.10
例2) 自己規定値としてASCIIコードの「abc」を文字列で指定する場合は、以下のように指定します。
-e "'abc'.3asc"
例3) 自己規定値としてASCIIコードの「abc」を16進数で指定する場合は、以下のように指定します。
-e x616263.3asc
例4) 自己規定値として外部10進数の「-32」を長さ4バイトで指定する場合は、以下のように指定します。
-e d-32.4zdl
例5) 入力レコードの5バイト目からレコードの最後までを再編成する場合は、以下のように指定します。
-e 4.END
例6) テキストファイルCSV形式、またはテキストファイルTSV形式の場合、自己規定値としてASCIIコードの「abc」を文字列で指定し、このフィールドをダブルクォーテーション( " )で囲むときは、以下のように指定します。
-e "'abc'.3ascA"
例7) テキストファイルCSV形式、またはテキストファイルTSV形式の場合、入力レコードの1番目のフィールドと2番目のフィールドの間にダブルクォーテーション( " )で囲まれた空フィールドを追加するときは、以下のように指定します。
-e 0.1,EMPTYA,1.END