ee_dbq_inquire2
- 〈このページの構成〉
形式
ANSI C,C++の形式
#include <eedbq.h> int ee_dbq_inquire2(char *dbque_name, EEDBQINF2 *dbq_inf, EELONG flags)
機能
DBキューの情報内容を照会します。
DBキューユーザ要求転送機能を使用した場合は,指定したDBキューを読み出しているサーバの情報を取得できます。
DBキューのフォーマットタイプが1のDBキューに対して実行できます。
UAPで値を設定する引数
●dbque_name
照会するDBキュー名を,27バイト以内のアスキー文字列で設定します。文字列の最後にはNULL文字を設定してください。このNULL文字は文字列の長さに数えません。
●dbq_inf
照会したDBキュー情報を格納するための構造体ポインタのアドレスを設定します。
●flags
次のフラグを設定します。
- EENOFLAGS
-
メッセージを読み出しているTP1/EEプロセスの読み出し状態の照会が不要な場合に設定します。
メッセージを読み出しているTP1/EEプロセスのDBキューの読み出し状態を照会するためのRPC通信は行いません。
- EEDBQ_REQ_READSTATUS
-
メッセージを読み出しているTP1/EEプロセスの読み出し状態の照会が必要な場合に設定します。
dbque_nameに指定したDBキューを読み出しているTP1/EEプロセスがAPI発行元のプロセスと異なる場合,RPC通信を行ってDBキューの読み出し状態を照会します。
flagsにEEDBQ_REQ_READSTATUSを指定した場合,メッセージを読み出しているTP1/EEのバージョンが07-80以降である必要があります。
TP1/EEから値が返される引数
●dbq_inf
DBキュー情報が構造体EEDBQINF2で返されます。構造体の形式は次のとおりです。
typedef struct ee_dbq_inf2_t{ char service_name[32]; char dbq_grp_name[32]; char dbque_name[28]; char read_srvgrp_name[32]; EEULONG sts_code; EEULONG write_event_num; EEULONG read_num; EEULONG write_max_num; EEULONG unread_count; char read_base_id[8]; char read_system_id[16]; EEULONG dbq_kind; EEULONG attribute; char node_id[5]; char write_inhibit_sts; char yobi[74]; }EEDBQINF2;
-
service_name(サービス名)
指定したDBキューに現在接続しているサービス名を返します。接続していない場合,NULL文字を設定します。
-
dbq_grp_name(DBキューグループ名)
指定したDBキューが属するDBキューグループ名を返します。
-
dbque_name(DBキュー名)
dbque_nameに設定したDBキュー名をそのまま返します。
-
read_srvgrp_name(DBキューを読み出すサービスグループ名)
指定したDBキューを読み出すサービスグループ名を返します。
読み出すサーバにサービスグループ名がない場合,NULL文字を設定します。
-
sts_code(DBキューの読み出し状態)
flagsにEEDBQ_REQ_READSTATUSを指定した場合の,DBキューの読み出し状態を返します。
flagsにEENOFLAGSを指定した場合,DBキューを読み出しているTP1/EEプロセスがee_dbq_inquire2関数の発行元のプロセスと異なっていると,DBキュー状態1が読み出し停止中のときでもEEDBQ_QUE_STATUS_NORMAL(正常)を返します。
DBキューの読み出し状態はDBキューの状態1とDBキューの状態2の和で返します。
-
DBキューの状態1:
DBキューの状態1を次のコードで返します。
EEDBQ_QUE_STATUS_NORMAL:正常
EEDBQ_QUE_STATUS_PSTOP:障害による読み出し停止中
EEDBQ_QUE_STATUS_CSTOP:コマンド,定義,またはAPI関数による読み出し停止中
EEDBQ_QUE_STATUS_ESTOP:DB構成不正またはDBキューの内容矛盾による使用不可
EEDBQ_QUE_STATUS_NOTRM:リソースマネジャ未接続で使用不可
-
DBキューの状態2:
DBキューの状態2を次のコードで返します。
EEDBQ_QUE_STATUS_WTPR:書き込み抑止中
DBキューの状態1がEEDBQ_QUE_STATUS_ESTOPまたはEEDBQ_QUE_STATUS_NOTRMのときは加算しません。
このとき,書き込み抑止状態は不明となります。
-
-
write_event_num(書き込み通番)
DBキューへ最後に書き込んだメッセージの通番を返します。※
-
read_num(読み出し通番)
DBキューから最後に読み出したメッセージの通番を返します。※
-
write_max_num(最大書き込みメッセージ数)
定義に指定した最大書き込みメッセージ数と同一の値を返します。
-
unread_count(未読み出し数)
未読み出し数を返します。※
-
read_base_id(該当するDBキューを読み出すサーバの基盤種別)
読み出すサーバの基盤種別を返します。※
TP1EE:TP1/EE
CosmiRM:uCosminexus Reliable Messaging
-
read_system_id(該当するDBキューを読み出すシステム種別)
該当するDBキューを読み出すシステム種別を返します。※
TP1/EEの場合,ノード識別子を返します。
uCosminexus Reliable Messagingの場合,RMSystemNameで指定したシステム名称を返します。
-
dbq_kind(DBキュー種別)
DBキューの種別を返します。
EEDBQ_QUE_KIND_UAPFUNC:AP間通信機能を使用したDBキュー
EEDBQ_QUE_KIND_USERQUE:ユーザキューアクセス機能を使用したDBキュー
-
attribute(DBキュー属性)
DBキューに付与した属性を論理和で返します。※
0:付与した属性なし
1:上書き抑止属性
2:通番初期化属性
4:データ連携支援書き込み
8:交替用メッセージ表書き込み機能を使用
-
node_id(TP1/Server Baseのノード識別子)
該当するDBキューを読み出すTP1/EEプロセスのTP1/Server Baseのノード識別子を返します。文字列の最後はNULL文字です。※
次の条件をすべて満たす場合にTP1/Server Baseのノード識別子を返します。
-
該当するDBキューを読み出すサーバの基盤種別がTP1/EE
-
該当するDBキューを読み出すTP1/EEプロセスでネーム機能が有効
-
該当するDBキューを読み出すTP1/EEプロセスのTP1/EEバージョンが07-80以降
TP1/Server Baseのノード識別子を返さない場合は,NULL文字を返します。
-
-
write_inhibit_sts(DBキューの書き込み禁止状態)
該当するDBキューに対する書き込み禁止状態を返します。
EEDBQ_WRITE_INHIBIT_OFF:書き込み可能状態(X'00')
EEDBQ_WRITE_INHIBIT_ON:書き込み禁止状態(X'01')
- 注※
-
DBキュー状態1がEEDBQ_QUE_STATUS_ESTOPまたはEEDBQ_QUE_STATUS_NOTRMの場合は値を参照できません。
リターン値
リターン値 |
意味 |
---|---|
EE_OK |
正常に終了しました。 |
EECOMER_CNDBPP |
オフラインバッチプロセスから発行しているため,この機能は使用できません。 |
EECOMER_CNDUOC |
UOCから発行しているため,この機能は使用できません。 |
EECOMER_ENVIRON |
TP1/EEの環境下にありません。 |
EEDBQER_ARGUMENT |
引数に設定した値が間違っています。 |
EEDBQER_CONDITION |
関数の呼び出し条件が不正です。
|
EEDBQER_FUNC_OPT |
引数に設定したDBキューのフォーマットタイプが不正です。※1 |
EEDBQER_FWD_CHGR |
情報照会処理は実行しましたが,情報照会処理の実行後に読み出し先サーバの変更を検知しました。※1,※2 |
EEDBQER_FWD_DEST |
情報照会処理に失敗しました。 対象のDBキューを読み出しているサーバが存在しません。※1 |
EEDBQER_FWD_SEND |
情報照会処理が失敗しました。※1 |
EEDBQER_FWD_TIMED_OUT |
情報照会処理が時間切れになりました。※1 |
EEDBQER_FWD_VER |
情報照会処理に失敗しました。 対象のDBキューを読み出しているサーバが情報照会処理に対応していません。※1 |
EEDBQER_NO_DBQUE |
引数に設定したDBキュー名は存在しません。 |
EEDBQER_NO_LIBRARY |
DBキュー機能のライブラリがリンケージされていません。 |
EEDBQER_NO_OPTION |
DBキュー機能は使用できません。 |
EEDBQER_RM_ACCESS |
リソースマネジャアクセス時にエラーが発生しました。 |
EEDBQER_RM_CONNECT |
該当するスレッドではリソースマネジャに接続されていません。 |
EEDBQER_ROLLBACK_RESERVE |
HiRDBの暗黙的ロールバックが発生したため,ee_trn_rollback_mark関数を呼び出しました。 |
EEDBQER_TIMING |
このAPI関数を呼び出せる状態ではありません。
|
EEDBQER_UNRESOLVABLE |
その他のエラーが発生しました。 |
注意事項
-
flagsにEEDBQ_REQ_READSTATUSを指定し,かつDBキューがOracleの場合にDBキュー読み出し先サーバ変更機能とee_dbq_inquire2関数が競合すると,リターン値がEE_OKでもDBキューの読み出し状態が最新の状態にならないことがあります。
-
ee_dbq_inquire2関数のエラーリターン時は,リターン値別に次のように対処してください。
-
EEDBQER_FWD_TIMED_OUT
ee_dbq_inquire2関数の発行元のTP1/EEプロセスが出力するメッセージで,照会先のTP1/EEプロセスを特定します。
照会先のTP1/EEプロセスが出力するエラーメッセージを基に障害を取り除いてください。
-
EEDBQER_FWD_DEST
DBキュー読み出し先サーバ変更機能を使用して読み出し先サーバを決定するか,該当のDBキューを読み出すTP1/EEプロセスを開始してください。
-
EEDBQER_FWD_VER
メッセージを読み出しているサーバが07-80以降のTP1/EEであることを確認してください。
-
EEDBQER_FWD_SEND
ee_dbq_inquire2関数の発行元のTP1/EEプロセスが出力する次のメッセージを参照して,障害を取り除いてください。
KFSB40320-E,KFSB40322-E,KFSB40350-E,KFSB40352-E
-
EEDBQER_FWD_CHGR
ee_dbq_inquire2関数を再発行するか,またはeedbqlsコマンドで実行結果を確認してください。
-