Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引


ee_dbq_inquire

〈このページの構成〉

名称

DBキュー情報の照会

形式

ANSI C,C++の形式

#include <eedbq.h>
int ee_dbq_inquire(char *dbque_name, EEDBQINF *dbq_inf,
                   EELONG flags)

機能

DBキューの情報を照会します。ユーザキューアクセス機能を使用するDBキューでは,使用できません。ee_dbq_inquire2関数を使用してください。

UAPで値を設定する引数

●dbque_name

DBキュー名を27バイト以内のアスキー文字列で設定します。文字列の末尾にはNULL文字を付けてください。このNULL文字は文字列の長さに数えません。

●dbq_inf

DBキュー情報を格納するための構造体ポインタのアドレスを設定します。

●flags

次のフラグを設定します。

EEDBQ_INF_FLAGS_0200

DBキュー読み出しサーバ変更機能またはDBキュー書き込み抑止機能を使用する場合に設定します。このフラグを設定すると,最新のDBキュー情報を照会します。

EENOFLAGS

DBキュー読み出しサーバ変更機能およびDBキュー書き込み抑止機能以外の機能を使用する場合に設定します。このフラグを設定すると,DBキュー情報を照会します。

TP1/EEから値が返される引数

●dbq_inf

DBキュー情報が構造体EEDBQINFで返されます。構造体の形式は次のとおりです。

struct ee_dbq_inf_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;
}EEDBQINF;
  • service_name(DBキューサービス名)

    指定したDBキューに接続しているDBキューサービス名を返します。接続していない場合はNULL文字を設定します。

  • dbq_grp_name(DBキューグループ名)

    指定したDBキューが属するDBキューグループ名を返します。

  • dbque_name(DBキュー名)

    ee_dbq_inquire関数を呼び出すときにdbque_nameに設定したDBキュー名をそのまま返します。

  • read_srvgrp_name(DBキューを読み出すサービスグループ名)※1

    指定したDBキューを読み出すサービスグループ名を返します。

    DBキュー機能関連定義のdbqgrpdef定義コマンドに-fオプションを指定した場合,または,-kオプションに1を指定した場合で,DBキューからメッセージを読み出すサーバを確認できないとき,および,DBキューからメッセージを読み出すサーバにサービスグループ名がないときは,値はNULL文字を設定します。

  • sts_code(ステータスコード)

    • ステータスコード1

      DBキューの状態を返します。※1

      ・EEDBQ_QUE_STATUS_NORMAL

       正常

      ・EEDBQ_QUE_STATUS_PSTOP

       障害による読み出し停止中

      ・EEDBQ_QUE_STATUS_CSTOP

       コマンド,TP1/EEサービス定義,またはAPI関数による読み出し停止中

      ・EEDBQ_QUE_STATUS_ESTOP

       DB構成不正またはDBキューの内容矛盾による使用不可

      ・EEDBQ_QUE_STATUS_NOTRM

       リソースマネジャ未接続で使用不可

    • ステータスコード2

      DBキューの状態を返します。

      ・EEDBQ_QUE_STATUS_WTPR

       書き込み抑止※1,※2

       このステータスは,ステータスコード1がEEDBQ_QUE_STATUS_ESTOPまたはEEDBQ_QUE_STATUS_NOTRMの場合は無効となります。

  • write_event_num(メッセージ書き込み通番)

    DBキューへ最後に書き込んだメッセージの通番を返します。※3

  • read_num(メッセージ読み出し通番)

    DBキューから最後に読み出したメッセージの通番を返します。※3

  • write_max_num(最大書き込みメッセージ数)

    DBキュー機能関連定義のdbqdef定義コマンドで指定した最大書き込みメッセージ数と同一の値を返します。

  • unread_count(未読み出しメッセージ数)

    未読み出しメッセージ数を返します。※3

注※1

flagsにEEDBQ_INF_FLAGS_0200を設定し,かつDBキュー機能関連定義のdbqgrpdef定義コマンドの-kオプションに1を指定した場合,DBキューから情報を読み込みます。

注※2

flagsにEEDBQ_INF_FLAGS_0200を設定し,かつDBキュー機能関連定義のdbqgrpdef定義コマンドの-kオプションに1を指定した場合,ステータスコードEEDBQ_QUE_STATUS_WTPRは,ほかのコードとの論理和を返します。

注※3

ステータスコードが次の場合,値は参照できません。

EEDBQ_QUE_STATUS_ESTOP

DB構成不正またはDBキューの内容矛盾による使用不可

EEDBQ_QUE_STATUS_NOTRM

リソースマネジャ未接続で使用不可

また,該当するDBキューのタイプが相手読み出しDBキューの場合,値は返りません。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため,この機能は使用できません。

EECOMER_CNDUOC

UOCから発行しているため,この機能は使用できません。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EEDBQER_ARGUMENT

引数に設定した値が間違っています。

EEDBQER_CONDITION

関数の呼び出し条件が不正です。

EEDBQER_NO_DBQUE

引数に設定したDBキュー名は存在しません。

EEDBQER_NO_LIBRARY

DBキュー機能のライブラリがリンケージされていません。

EEDBQER_NO_OPTION

DBキュー機能は使用できません。

EEDBQER_NOT_UAPQUE

AP間通信機能を使用するDBキューではありません。

EEDBQER_RM_ACCESS

リソースマネジャへのアクセス時にエラーが発生しました。

EEDBQER_RM_CONNECT

該当するスレッドではリソースマネジャに接続されていません。

EEDBQER_ROLLBACK_RESERVE

HiRDBの暗黙的ロールバックが発生したため,ee_trn_rollback_mark関数を呼び出しました。

EEDBQER_TIMING

このAPI関数を呼び出せる状態ではありません。

  • 通番の初期化中です。

注意事項