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

6.5.1 BSRTPRIM構造体

BSRTPRIM構造体は、ソート処理、マージ処理、およびコピー処理など主要な基本情報を指定するための構造体です。

typedef struct {
    unsigned long    reserve1;      /* reserved */
    unsigned char    function;
    unsigned char    recform;
    unsigned char    optionfunc;
    unsigned char    fileoprat;
    unsigned char    recoprat;
    unsigned char    msglevel;
    unsigned char    cdmode;
    unsigned char    chklevel;
    unsigned long    rec_len;
    unsigned long    input_string;
    unsigned long    memory_size;
    BSPTR_VOID       memory_addr;
    unsigned long    input_recno;
    BSPTR_UCHAR      fldchar_addr;
    unsigned char    debuginfo;
    unsigned char    fieldmode;
    unsigned char    keyoption;
    unsigned char    keyoption2;
    unsigned char    linedlmt;
    unsigned char    error_happened;
    unsigned char    altmode;
    unsigned char    reserve4;      /* reserved */
    BSPTR_UCHAR      reserve5;      /* reserved */
} BSRTPRIM;

BSRTPRIM構造体メンバー

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

function

PowerSORTの主要機能を指定します。
以下から1つを選択して指定します。省略はできません。

定義値

意味

BS_SORT

ソート機能

BS_MERGE

マージ機能

BS_COPY

コピー機能

recform

レコード形式を指定します。
以下から1つを選択して指定します。テキストファイルの場合は値を指定する必要はありません。

定義値

意味

BS_FREC

固定長レコード形式

BS_VREC

可変長レコード形式

optionfunc

オプション機能を指定します。
必要に応じて以下を指定します。複数指定する場合は、その論理和を指定します。

定義値

意味

BS_FIFO

先入力先出力(FIFO)機能を示します。
サプレス機能、またはレコード集約機能と同時に指定された場合、先入力先出力(FIFO)機能の指定は無視されます。ソート機能において先入力先出力(FIFO)機能を指定しなかった場合、同値のキーフィールドをもつレコードの出力順序は不定です。

BS_SUPPRESS

サプレス機能を示します。
レコード集約機能とは排他関係にあります。

BS_SUM

レコード集約機能を示します。
サプレス機能とは排他関係にあります。レコード集約機能を指定する場合は、BSRTOPT構造体に集約テーブル(BSRTSUM構造体)のアドレスを指定する必要があります。

BS_SELECT

レコード選択機能を示します。
レコード選択機能を指定する場合は、BSRTOPT構造体に選択テーブル(BSRTSELE構造体)のアドレスを指定する必要があります。

BS_RECON

レコード再編成機能を示します。
レコード再編成機能を指定する場合は、BSRTOPT構造体に再編成テーブル(BSRTRCON構造体)のアドレスを指定する必要があります。

BS_REVERSE

降順にソート処理、またはマージ処理することを示します。
キーフィールドを省略した場合に有効になります。

BSMSG_STDERR

標準エラー出力にメッセージを出力することを示します。(注)

注) 出力するメッセージの種別は、BSRTPRIM構造体のmsglevel、またはスタートアップファイルのBSORT_MSGLEVELの指定に依存します。

fileoprat

入出力情報を指定します。
必要に応じて以下を指定します。複数指定する場合は、その論理和を指定します。

定義値

意味

BS_OVERWRITE

出力ファイルが入力ファイルと同じ場合に、処理を継続することを示します。
ソート機能のときに有効です。このオプションを指定し、出力ファイルが入力ファイルと同じ場合、ソート処理中に異常が発生すると、入力ファイルのデータは保証されない場合がありますので、注意してください。

BS_STDIN

標準入力からレコードを入力することを示します。
この定義値は、マージ機能の場合には指定できません。BSRTFILE構造体で入力ファイルを指定している場合には無視されます。

BS_STDOUT

標準出力に結果を出力することを示します。
BSRTFILE構造体で出力ファイルを指定している場合には無視されます。

recoprat

PowerSORTとのレコードの受渡し方法を指定します。
複数指定する場合は、入力の受渡し方法と出力の受渡し方法から1つずつ選んでその論理和を指定します。

msglevel

PowerSORTが出力するメッセージの種別(レベル)を指定します。
以下から1つを選択して指定します。

定義値

意味

BSMSG_LEVEL_N

何も出力しません。

BSMSG_LEVEL_E

エラーメッセージを出力します。

BSMSG_LEVEL_W

エラーメッセージ、および警告メッセージを出力します。

BSMSG_LEVEL_I

エラーメッセージ、警告メッセージ、および情報メッセージを出力します。

また、V5.0以前のバージョンとの互換用として、以下の種別(レベル)も指定できます。

定義値

意味

BSMSG_LEVEL0

何も出力しません。

BSMSG_LEVEL1

エラーメッセージ、および警告メッセージを出力します。

BSMSG_LEVEL2

エラーメッセージ、警告メッセージ、および情報メッセージを出力します。

注意

メッセージを標準エラー出力に出力するためには、BSRTPRIM構造体のoptionfuncにBSMSG_STDERRを指定する必要があります。

cdmode

入力ファイルのコード系を指定します。
以下から1つを選択して指定します。

定義値

意味

BSZD_AU

ASCIIコード系(富士通COBOL形式)

BSZD_AC

ASCIIコード系(Micro Focus COBOL形式)

BSZD_EBCDIC

EBCDICコード系 (注)

BSZD_UCS2

Unicode系(UCS-2形式)
システム標準のバイトオーダー

BSZD_UCS2B

Unicode系(UCS-2形式)
Big endianのバイトオーダー

BSZD_UCS2L

Unicode系(UCS-2形式)
Little endianのバイトオーダー

BSZD_UTF32

Unicode系(UTF-32形式)
システム標準のバイトオーダー

BSZD_UTF32B

Unicode系(UTF-32形式)
Big endianのバイトオーダー

BSZD_UTF32L

Unicode系(UTF-32形式)
Little endianのバイトオーダー

BSZD_UTF8

Unicode系(UTF-8形式)

注) EBCDICコード系はバイナリファイルの場合に指定可能です。

chklevel

BSORT関数のチェック機構を指定します。
以下から1つを選択して指定します。

定義値

意味

BSCHK_LEVEL0

何もチェックしません。 (省略値)

BSCHK_LEVEL1

インターフェースをチェックします。
インターフェースチェックは、bsrtput関数bsrtget関数、およびbsrtmrge関数でパラメタの正当性をチェックするものです。

rec_len

入力レコード長を指定します。
バイナリファイルの可変長レコード形式の場合は最大レコード長を指定します。テキストファイルの場合は改行コードを含んだ最大レコード長を指定します。

注意

バイナリファイル可変長レコード形式またはテキストファイルの場合、実際の最大レコード長より大きな値を指定しても動作可能です。ただし、実際の最大レコード長よりも大きな値を指定した場合、指定した値の差異に応じて性能悪化の要因となりますので、可能な限り実際の最大レコード長に近い値を指定してください。

input_string

マージ機能時の入力ストリング数を指定します。
ソート機能、またはコピー機能を使用する場合は0を指定してください。

参考

ソート済のレコードの集まりをストリングと呼びます。

memory_size

PowerSORTが使用する作業域の大きさ(メモリサイズ)をバイト数で指定します。
65536~2147482624バイトの範囲で指定します。省略する場合は0を指定します。省略した場合、スタートアップファイルのBSORT_MEMSIZEの指定があればその大きさの作業域を使用し、指定がなければ作業域は自動的に設定されます。2147482625以上の値を指定した場合は2147482624を指定したとみなします。

memory_addr

PowerSORTが使用する作業域のアドレスを指定します。
省略する場合はNULLを指定します。省略した場合、作業域は自動的に確保されます。memory_addrを指定する場合は、memory_sizeでその大きさを指定する必要があります。

注意

不当な値が指定された場合、PowerSORTの処理は保証できません。

input_recno

サポートしていないメンバーです。何も設定する必要はありません。

fldchar_addr

フィールド分離文字列のアドレスを指定します。
テキストファイル浮動フィールド指定のときに有効です。フィールド分離文字列は、'\0'で終わる文字列です。省略する場合はNULLを指定します。省略した場合は、タブ、および空白をフィールド分離文字として扱います。

debuginfo

サポートしていないメンバーです。何も指定する必要はありません。

fieldmode

テキストファイルのときのフィールドの決め方を指定します。
以下から1つを選択して指定します。テキストファイルの場合は指定が必要です。

定義値

意味

BS_FLTFLD

テキストファイル浮動フィールド指定であることを示します。
フィールド分離文字列で区切られたフィールドの番号で各フィールドを指定します。フィールド分離文字の位置によりフィールド位置が決定されるため、レコードごとにフィールドの位置は異なります。

BS_FIXFLD

テキストファイル固定フィールド指定であることを示します。
レコードの先頭からのバイト位置によって各フィールドを指定します。

BS_CSVFORM

テキストファイルCSV形式であることを示します。
コンマ( , )で区切られたフィールドの番号で各フィールドを指定します。コンマの位置によりフィールド位置が決定されるため、レコードごとにフィールドの位置は異なります。

BS_TSVFORM

テキストファイルTSV形式であることを示します。
タブで区切られたフィールドの番号で各フィールドを指定します。タブの位置によりフィールド位置が決定されるため、レコードごとにフィールドの位置は異なります。

keyoption

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

定義値

意味

BSOPT_BLANK

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

BSOPT_DICTIONARY

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

BSOPT_IGNORE

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

BSOPT_JUMBO

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

BSOPT_NUMERIC

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

BSOPT_CHARNUM

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

keyoption2

キーフィールドの操作を指定します。
複数バイトで表現される文字の文字列を文字単位に比較する場合に指定します。テキストファイルの場合にキーフィールドの指定を省略したときに有効です。このメンバーはkeyoptionのBSOPT_NUMERIC、およびBSOPT_CHARNUMとは排他関係にあります。必要に応じて以下を指定します。

定義値

意味

BSOPT2_LOCALE

環境変数LC_COLLATEで定義した照合順序で比較します。

linedlmt

レコード分離文字を指定します。
テキストファイルのときに有効です。以下から1つを選択して指定します。

定義値

意味

BSLDM_LF

LFを改行文字とします。 (省略値)

BSLDM_CR

CRを改行文字とします。

BSLDM_CL

CRLFを改行文字とします。

注意

PowerSORTでは、改行コードは1種類に統一されている必要があります。複数の改行コードが混在している場合の動作は保証できません。

error_happened

サポートしていないメンバーです。何も指定する必要はありません。

altmode

ASCIIコードとEBCDICコード間の変換方式を指定します。
以下から1つを選択して指定します。

定義値

意味

BSALT_ASCII

EBCDICコードとUS ASCIIコード間のコード変換を指定します。 (省略値)

BSALT_JIS8

EBCDIC(カナ)コードとASCII(JIS8)コード間のコード変換を指定します。

BSALT_JIS7

EBCDIC(英小文字)コードとASCII(JIS7)コード間のコード変換を指定します。

参考

以下の場合にASCIIコードとEBCDICコード間の変換が行われます。

  • 入力ファイルのコード系(BSRTPRIM構造体のcdmode)がASCIIコード系でキーフィールドのデータ形式がEBCDICコードの場合におけるキーフィールドの比較

  • 入力ファイルのコード系(BSRTPRIM構造体のcdmode)がEBCDICコード系でキーフィールドのデータ形式がASCIIコードの場合におけるキーフィールドの比較