PowerSORT Workstation V5.0 使用手引書
目次 索引 前ページ次ページ

第6章 C言語プログラムからPowerSORTを使用する> 6.4 BSORT関数で使用する構造体

6.4.4 BSKEY構造体

BSKEY構造体は、個々のキーフィールドを定義するための構造体です。
キーフィールドのデータ形式については、キーフィールドに指定可能なデータ形式を参照してください。

typedef struct {
  unsigned long   key_position;
  unsigned long   key_length;
  unsigned char   key_type;
  unsigned char   key_order;
  unsigned char   key_option;
  unsigned char   key_option2;
  BSPTR_VOID    subfield_addr;
} BSKEY;

■BSKEY構造体メンバ

unsigned long  key_position

キーフィールドの位置を指定します。
バイナリファイルとテキストファイル固定フィールド指定の場合は、レコードの先頭を0としたバイト位置を指定し、テキストファイル浮動フィールド指定の場合は、0から数えたフィールド番号を指定します。

unsigned long  key_length

キーフィールドの長さをバイト数で指定します。
データ形式に符号なし2進数(BSKEY_BIT)を指定する場合は、当メンバにマスク値を指定します。
テキストファイル浮動フィールド指定の場合、指定したフィールド長よりも長いフィールドが現れた場合は、指定したフィールド長で処理します。指定したフィールド長よりも短いフィールドが現れた場合は、実際のフィールド長で処理します。

unsigned char  key_type

キーフィールドのデータ形式を指定します。
キーフィールドのデータ形式については、キーフィールドに指定可能なデータ形式を参照してください。

unsigned char  key_order

キーフィールドの並びを指定します。
以下のいずれかを指定します。

定義値

意味

BS_ASCND

昇順を示します。(省略値)

BS_REVRS

降順を示します。

unsigned char  key_option

キーフィールドの操作を指定します。
BSOPT_K以外の操作は、テキストファイルのときのみ有効です。必要に応じて以下を指定します。複数指定する場合は、その論理和を指定します。

定義値

意味

BSOPT_B

キーフィールドの先頭の空白とタブを無視します。

BSOPT_D

空白と英数字だけを比較の対象とします。

BSOPT_I

制御文字コードを無視します。

BSOPT_J

英小文字を英大文字とみなして比較します。

BSOPT_K

漢字ソートマージ機能を使用します。

BSOPT_N

符号を含む数字の文字列を算術的な値で比較します。文字列中に数字以外の文字が存在した場合の結果は保証されません。
BSOPT_LNおよびkey_option2のBSOPT2_Wとは排他関係にあります。

BSOPT_LN

英字と数字の連結データ(例えば、data123など)を英字と数値に分けて評価し並べます。英字だけを比較の対象として比較後、数字だけの文字列を算術的な値で比較します。指定フィールドの左から評価し、有効データ後に出現したデータは無視します。
BSOPT_Nおよびkey_option2のBSOPT2_Wとは排他関係にあります。

unsigned char  key_option2

複数バイトで表現される文字の文字列を文字単位に比較する場合の操作を指定します。
ここで指定する定義値は、key_optionのBSOPT_NおよびBSOPT_LNとは排他関係にあります。
必要に応じて以下を指定します。

定義値

意味

BSOPT2_W

複数バイトから成る文字が混在していても、文字ごとに比較して並べます。
データ形式がASCIIコード、シフトJISコード、Unicode UCS-2形式またはUnicode UTF-8形式で、入力ファイルのコード系(BSRTPRIM構造体のcdmode)がEBCDICコード系以外の場合に有効です。

キーフィールドのデータ形式に照合順序変更(BSKEY_COL)を指定した場合、key_option2の指定はできません。

BSPTR_VOID  subfield_addr

漢字ソートマージ機能または照合順序変更機能を使用する場合に指定します。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2004-2006