ページの先頭行へ戻る
PowerSORT (64bit) V8.0 ユーザーズガイド
FUJITSU Software

6.5.19 BSRCON構造体

BSRCON構造体は、個々の再編成フィールドを定義するための構造体です。

typedef struct {
    union {
        unsigned long    rcon_position;
        BSPTR_UCHAR      rcon_literal;
    } pos;
    unsigned long        rcon_length;
    unsigned char        rcon_consinf;
    unsigned char        rcon_option;
    unsigned char        reserve[2];        /* reserved */
} BSRCON;

BSRCON構造体メンバー

以下では、BSRCON構造体のメンバーについて説明します。

pos.rcon_position

再編成フィールドの位置を指定します。
バイナリファイルとテキストファイル固定フィールド指定の場合は、レコードの先頭を0としたバイト位置を指定します。テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合は、0から数えたフィールド番号を指定します。rcon_consinfにBS_EMPFLDを指定する場合は、0を指定してください。
pos.rcon_literalとは共用体で定義されています。自己規定値を指定する場合は、pos.rcon_literalに指定します。

pos.rcon_literal

自己規定値のアドレスを指定します。
pos.rcon_positionとは共用体で定義されています。入力レコード中のフィールドを指定する場合は、pos.rcon_positionに指定します。

注意

  • テキストファイル固定フィールド指定の場合は、自己規定値にレコード分離文字を含むことはできません。

  • テキストファイル浮動フィールド指定の場合は、自己規定値にフィールド分離文字列、またはレコード分離文字を含むことはできません。

  • テキストファイルCSV形式、およびテキストファイルTSV形式の場合、自己規定値にフィールド分離文字、レコード分離文字(注)、またはダブルクォーテーション(")が含まれているときは、自己規定値をダブルクォーテーション(")で囲んで出力します。この際、自己規定値のダブルクォーテーション(")は、2つ連続して出力します。

    注) 入力ファイルのレコード分離文字だけでなく、レコード分離文字として許されているCRLF、CR、およびLFのどれか一つでも含まれている場合、自己規定値をダブルクォーテーション(")で囲みます。
    例) 自己規定値にフィールド分離文字(コンマ)、またはダブルクォーテーション(")を含む場合の再編成フィールドに出力されるデータ
    自己規定値の指定        再編成フィールドに出力されるデータ
    FIELD"2"                "FIELD""2"""
    FIELD2,3                "FIELD2,3"
    FIELD"2",3              "FIELD""2"",3"

rcon_length

再編成フィールド、または自己規定値の長さを指定します。
テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合、指定したフィールド長よりも長いフィールドが現れた場合は、指定したフィールド長で処理します。指定したフィールド長よりも短いフィールドが現れた場合は、実際のフィールド長で処理します。rcon_consinfにBS_RECEND、またはBS_EMPFLDを指定する場合は、0を指定してください。

注意

テキストファイル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バイト

rcon_consinf

入力レコード中のフィールドを再編成フィールドにするか、または自己規定値を再編成フィールドにするかを指定します。
テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合、PowerSORTがフィールド分離文字列を付加して再編成します。

定義値

意味

BS_FIELD

入力レコード中のフィールドを再編成フィールドに指定します。

BS_LITERAL

自己規定値を再編成フィールドに指定します。

BS_RECEND

指定位置からレコードの最後までを再編成フィールドに指定します。

BS_EMPFLD

空フィールドを再編成フィールドに指定します。
テキストファイルCSV形式、およびテキストファイルTSV形式の場合に指定できます。

rcon_option

再編成フィールドの操作を指定します。
テキストファイルCSV形式、またはテキストファイルTSV形式の場合、自己規定値、または空フィールドを再編成フィールドとするときに指定できます。必要に応じて以下を指定します。省略した場合は、BSFE_Lを指定したものとして動作します。

定義値

意味

BSFE_A

再編成フィールドをダブルクォーテーション(")で囲みます。

BSFE_L

再編成フィールドをダブルクォーテーション(")で囲みません。
ただし、再編成フィールドに、フィールド分離文字、レコード分離文字(注)、またはダブルクォーテーション(")が含まれている場合は、ダブルクォーテーション(")で囲みます。

注) 入力ファイルのレコード分離文字だけでなく、レコード分離文字として許されているCRLF、CR、およびLFのどれか1つでも含まれている場合、自己規定値をダブルクォーテーション(")で囲みます。

参考

  • テキストファイルCSV形式、またはテキストファイルTSV形式の場合、入力レコード中のフィールドを再編成フィールドとするときに、再編成フィールドをダブルクォーテーション(")で囲むかどうかは、入力レコードのフィールドに従います。入力レコードのフィールドがダブルクォーテーション(")で囲まれているときは、レコード再編成後のフィールドもダブルクォーテーション(")で囲みます。

    例) 再編成フィールドを「2番目のフィールドの長さ3バイト、3番目のフィールドの長さ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」がそのあとに続いていると判断します。