機能
入力パラメタを基に検索を行い、検索結果をソートまたは集計して呼出し元に通知します。
記述形式
#include “libshun.h” int shunsort( char *host_Name, /* in (1)ホスト名 */ int Port_No, /* in (2)ポート番号 */ int Reply_No, /* in (3)返信開始番号 */ int Request_Cnt, /* in (4)返信要求件数 */ char *Query, /* in (5)検索式領域 */ char *Return, /* in (6)リターン式領域 */ char *Sort, /* in (7)ソート式領域 */ int Secure_Size, /* in (8)返信データ格納領域サイズ */ int *Hit_Cnt, /* out (9)ヒット件数 */ int *Return_Cnt, /* out (10)応答返信件数 */ int *Available_Cnt, /* out (11)返信可能件数 */ int *Stored_Size, /* out (12)返信データ格納済領域サイズ */ Sdsma *Dsma, /* out (13)返信データ格納管理配列 */ char *Data /* out (14)返信データ格納領域 */ /* (Len=Secure_Size) */ ); |
復帰値
本関数が通知するエラーコードが返却されます。
正常終了の場合は、“0”です。
復帰値が“0”以外の場合、返却結果は保証されません。
エラーコードの詳細については、“N.7 出力されるエラーコード”を参照してください。
パラメタ
conductorが稼働しているサーバのホスト名またはIPアドレスを指定します。
サイズは24バイト以内です。
conductor用動作環境ファイルのMySearchPortを指定します。
本関数の出力結果として返信されるデータの最大件数を指定します。
クライアントの要求への応答最大件数(conductor用動作環境ファイルのAnsMax)を超えた値を指定した場合、クライアントの要求への応答最大件数までが返信されます。
検索式の領域へのポインタを設定します。検索式には、conductor用動作環境ファイルのCharacterCodeに定義した文字コードの文字列を設定してください。検索式は1~1048575バイトの範囲で指定してください。
検索式の詳細については、“B.3 検索式”を参照してください。
リターン式の領域へのポインタを設定します。リターン式の領域は本関数の呼出し元で用意する必要があります。リターン式は0~1048575バイトの範囲で指定してください。
リターン式に集合関数指定を含む場合、集計結果を返します。
リターン式の詳細については、“B.4 リターン式”を参照してください。
ソート式の領域へのポインタを設定します。ソート式の領域は本関数の呼出し元で用意する必要があります。ソート式は1~65535バイトの範囲で指定してください。
ソート式の詳細については、“B.5 ソート式”を参照してください。
ソート依頼した場合は、ソート結果として返信可能な件数が返却されます。最大1000件まで返信することができます。ソートキーの合計長が大きい場合、返信可能な件数は少なくなります。ソートキーの長さと返信可能件数の目安については、 “付録C 定量値”を参照してください。
集計依頼した場合は、集計結果として返信可能なグループ数が返却されます。最大1000グループまで返信することができます。グループキーの合計長が大きい場合、返信可能なグループ数は少なくなります。グループキーの長さと返信可能件数の目安については、“付録C 定量値”を参照してください。
返信可能件数の領域は0クリアして設定してください。
検索結果に対する返信データを返却するために使用した領域のサイズが返却されます。
返信データ格納済領域サイズの領域は0クリアして設定してください。
返信データ格納領域のサイズが不足していた場合は、返信データを格納するために必要な領域サイズが返却されます。
検索の結果が返却される、返信データ格納管理配列へのポインタを設定します。返信データ格納管理配列は本関数の呼出し元で用意する必要があります。
返信データ格納管理配列の詳細については、“【返信データ格納管理構造体】”を参照してください。
本関数を実行した結果が返却される、返信データ格納領域へのポインタを設定します。
返信データ格納領域の領域を0クリアして設定してください。
返信データ格納領域は(8)返信データ格納領域サイズで指定した領域を本関数の呼出し元で用意する必要があります。
返信データ格納領域に格納された各返信データの情報を取得するには、返信データ格納管理配列に通知される各返信データのポインタとサイズを参照してください。
本関数を実行した結果が返却される、返信データ格納管理配列の構造体です。この領域は、本関数の呼出し元が返信要求件数分の配列の大きさであらかじめ用意する必要があります。
typedef struct /* データ格納管理域 */ { char *Rec_Ctl; /* (1)コンダクタ制御情報域へのポインタ */ char *Rec_ID; /* (2)返信レコード識別子域へのポインタ */ char *Rec_Ptr; /* (3)返信データへのポインタ */ int Rtn_Len; /* (4)返信データのサイズ */ } Sdsma; |
返信データのコンダクタ制御情報域へのポインタを、あらかじめ設定してください。通知領域はあらかじめ確保し、0クリアして設定してください。
通知領域はlibshun.hのCOND_CTL_LENに定義した長さの領域を確保してください。
注意
コンダクタ制御情報はバイナリデータです。str関数などの文字列関数は使用しないでください。
集計依頼で返されたコンダクタ制御情報およびレコード識別子を指定して、shunsearch3 を実行できません。実行すると、該当レコードなしとして処理されます。
返信データのレコード識別子域へのポインタを、あらかじめ設定してください。通知領域はあらかじめ確保し、0クリアして設定してください。
通知領域はlibshun.hのROW_ID_LENに定義した長さの領域を確保してください。
注意
返信レコード識別子はバイナリデータです。str関数などの文字列関数は使用しないでください。
集計依頼で返されたコンダクタ制御情報およびレコード識別子を指定して、shunsearch3 を実行できません。実行すると、該当レコードなしとして処理されます。
本関数の呼出し後に、返信データ格納領域における返信データへのポインタが返却されます。
返信データへのポインタの領域を0クリアして設定してください。
本関数の呼出し後に、返信データのサイズが返却されます。
返信データのサイズの領域は0クリアして設定してください。
shunsortのパラメタの説明図を以下に示します。
図N.3 shunsortのパラメタの説明図
注意
返信データ格納済領域のサイズが返信データ格納領域サイズに指定した値を超えた場合、以下の情報が設定されます。
返信データ格納済領域サイズには、データの格納に必要なサイズが返却されます。
エラーコードは-30です。
ヒット件数には、検索に該当したデータ(ヒット件数)が返却されます。
ソート依頼では、コンダクタ制御情報域および返信レコード識別子には、検索に該当したすべてのレコード識別子が返却されます。
集計依頼では、コンダクタ制御情報域および返信レコード識別子は、呼出し状態のままです。
ソート依頼で、リターン式にNULLを設定した場合、返信データは不要であると解釈し、コンダクタ制御情報およびレコード識別子のみが返却されます。
ソート依頼で、リターン式に空文字“\0”または“/”を指定した場合、レコードの全体が返却されます。
集計依頼では、リターン式領域およびソート式領域は必須です。
本関数を使用する場合は、conductorは必須です。