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 | 空フィールドを再編成フィールドに指定します。 |
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」がそのあとに続いていると判断します。