レコード再編成機能を使用する場合に再編成フィールドを指定します。
再編成フィールドに指定したフィールドは、出力レコードの先頭から順に詰めて出力します。レコード再編成機能を使用する場合、キーフィールドと集約フィールドにはレコード再編成後のフィールド位置を指定します。
記述形式
-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.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進数注意
オプション引数で自己規定値を指定する場合の記述方法は使用するシェルにより異なります。代表的なシェルにおける記述例を以下に示します。なお、アーギュメントファイル(アーギュメントファイルオプション(-a))に記述する場合は、Bourneシェルの場合と同じ記述方法とします。
Bourneシェルの場合
オプション引数で自己規定値の文字列を指定する場合は、オプション引数全体をダブルクォーテーション(")で囲みます。
例) 自己規定値として文字列「ABC」を指定する場合
-e "'ABC'.3asc,0.10"
オプション引数でダブルクォーテーション(")を含んだ自己規定値の文字列を指定する場合は、ダブルクォーテーション(")の前に円マーク(バックスラッシュ)を指定します。$、\、`など、シェルにより特別な意味を持つ文字も同様です。
例) 自己規定値として文字列「"ABC"」を指定する場合
-e "'\"ABC\"'.5asc,0.10"
オプション引数でクォーテーション(')を含んだ自己規定値の文字列を指定する場合は、クォーテーション(')を2つ続けて指定します。
例) 自己規定値として文字列「'ABC'」を指定する場合
-e "'''ABC'''.5asc,0.10"
Cシェルの場合
オプション引数で自己規定値の文字列を指定する場合は、文字列の前後のクォーテーション(')の前に円マーク(バックスラッシュ)を指定します。
例) 自己規定値として文字列「ABC」を指定する場合
-e \'ABC\'.3asc,0.10
オプション引数でダブルクォーテーション(")を含んだ自己規定値の文字列を指定する場合は、ダブルクォーテーション(")の前に円マーク(バックスラッシュ)を指定します。$、&、(、)、|、\、`、{、}、;、*、<、>、?、空白など、シェルにより特別な意味を持つ文字も同様です。
例) 自己規定値として文字列「"ABC"」を指定する場合
-e \'\"ABC\"\'.5asc,0.10
オプション引数でクォーテーション(')を含んだ自己規定値の文字列を指定する場合は、クォーテーション(')の前に円マーク(バックスラッシュ)を付け、2つ続けて指定します。
例) 自己規定値として文字列「'ABC'」を指定する場合
-e \'\'\'ABC\'\'\'.5asc,0.10
自己規定値の文字列を指定する場合、文字列は1文字以上である必要があります。
自己規定値の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.6.4.4 再編成フィールドの自己規定値に指定可能なデータ形式を参照してください。
注意
ASCIIコードは、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がASCIIコード系の場合に指定できます。
EBCDICコードは、入力コード系オプション(-q)がEBCDICコード系の場合に指定できます。
EUCファイルコードは、入力コード系オプション(-q)がASCIIコード系で、環境変数LANGがC、またはEUCコードのlocaleの場合に指定できます。
Unicode UCS-2形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UCS-2形式)の場合に指定できます。どちらの場合も、環境変数LANGがC、またはUTF-8のlocaleの場合に指定できます。
Unicode UTF-32形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UTF-32形式)の場合に指定できます。どちらの場合も、環境変数LANGがC、またはUTF-8のlocaleの場合に指定できます。
Unicode UTF-8形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UTF-8形式)の場合に指定できます。どちらの場合も、環境変数LANGがC、またはUTF-8のlocaleの場合に指定できます。
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」を文字列で指定する場合は、以下のように指定します。
Bourneシェルの場合
-e "'abc'.3asc"
Cシェルの場合
-e \'abc\'.3asc
自己規定値としてダブルクォーテーション(")を含んだASCIIコードの「ab"cd」を文字列で指定する場合は、以下のように指定します。
Bourneシェルの場合
-e "'ab\"cd'.5asc"
Cシェルの場合
-e \'ab\"cd\'.5asc
自己規定値としてクォーテーション(')を含んだASCIIコードの「abc'd」を文字列で指定する場合は、以下のように指定します。
Bourneシェルの場合
-e "'abc''d'.5asc"
Cシェルの場合
-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バイトのフィールドを再編成する場合は、以下のように指定します。
Bourneシェルの場合
-e "2.8,','.1asc,19.5"
Cシェルの場合
-e 2.8,\',\'.1asc,19.5
テキストファイルCSV形式、またはテキストファイルTSV形式の場合、自己規定値としてASCIIコードの「abc」を文字列で指定し、このフィールドをダブルクォーテーション(")で囲むときは、以下のように指定します。
Bourneシェルの場合
-e "'abc'.3ascA"
Cシェルの場合
-e \'abc\'.3ascA
テキストファイルCSV形式、またはテキストファイルTSV形式の場合、入力レコードの1番目のフィールドと2番目のフィールドの間にダブルクォーテーション(")で囲まれた空フィールドを追加するときは、以下のように指定します。
-e 0.1,EMPTYA,1.END