ページの先頭行へ戻る
PowerSORT V7.0 ユーザーズガイド
FUJITSU Software

3.2.2 再編成フィールドオプション(-e)

レコード再編成機能を使用する場合に再編成フィールドを指定します。
再編成フィールドに指定したフィールドは、出力レコードの先頭から順に詰めて出力します。レコード再編成機能を使用する場合、キーフィールドと集約フィールドにはレコード再編成後のフィールド位置を指定します。

記述形式

-e recon-def [ ,recon-def ...]

recon-def の記述形式

recon-def の記述形式には、以下の4つの形式があります。

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 の記述形式を以下に示します。

注意

  • オプション引数で自己規定値を指定する場合の記述方法は使用するシェルにより異なります。代表的なシェルにおける記述例を以下に示します。なお、アーギュメントファイル(アーギュメントファイルオプション(-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 で指定した長さより長い場合は、エラーとなります。

    • 自己規定値が数字、または数値の場合

      • 自己規定値で指定した値をtyplen で指定したデータ形式と長さに変換して埋め込みます。

      • 変換結果が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コード系の場合に指定できます。

  • 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」がそのあとに続いていると判断します。

記述例

  1. 入力レコードの5バイト目から長さ10バイトのフィールドを再編成する場合は、以下のように指定します。

    -e 4.10
  2. 自己規定値としてASCIIコードの「abc」を文字列で指定する場合は、以下のように指定します。

    Bourneシェルの場合
    -e "'abc'.3asc"
    Cシェルの場合
    -e \'abc\'.3asc
  3. 自己規定値としてダブルクォーテーション(")を含んだASCIIコードの「ab"cd」を文字列で指定する場合は、以下のように指定します。

    Bourneシェルの場合
    -e "'ab\"cd'.5asc"
    Cシェルの場合
    -e \'ab\"cd\'.5asc
  4. 自己規定値としてクォーテーション(')を含んだASCIIコードの「abc'd」を文字列で指定する場合は、以下のように指定します。

    Bourneシェルの場合
    -e "'abc''d'.5asc"
    Cシェルの場合
    -e \'abc\'\'d\'.5asc
  5. 自己規定値としてASCIIコードの「abc」を16進数で指定する場合は、以下のように指定します。

    -e x616263.3asc
  6. 自己規定値として外部10進数の「-32」を長さ4バイトで指定する場合は、以下のように指定します。

    -e d-32.4zdl
  7. 入力レコードの5バイト目からレコードの最後までを再編成する場合は、以下のように指定します。

    -e 4.END
  8. 入力レコードの3バイト目から長さ8バイトのフィールドを再編成し、その後に自己規定値として文字列「,」を再編成して、さらにその後に入力レコードの20バイト目から長さ5バイトのフィールドを再編成する場合は、以下のように指定します。

    Bourneシェルの場合
    -e "2.8,','.1asc,19.5"
    Cシェルの場合
    -e 2.8,\',\'.1asc,19.5
  9. テキストファイルCSV形式、またはテキストファイルTSV形式の場合、自己規定値としてASCIIコードの「abc」を文字列で指定し、このフィールドをダブルクォーテーション(")で囲むときは、以下のように指定します。

    Bourneシェルの場合
    -e "'abc'.3ascA"
    Cシェルの場合
    -e \'abc\'.3ascA
  10. テキストファイルCSV形式、またはテキストファイルTSV形式の場合、入力レコードの1番目のフィールドと2番目のフィールドの間にダブルクォーテーション(")で囲まれた空フィールドを追加するときは、以下のように指定します。

    -e 0.1,EMPTYA,1.END