Hitachi

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


ee_dbq_inquire2

〈このページの構成〉

名称

DBキュー情報の照会

形式

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

その他のエラーが発生しました。

注※1

flagsにEEDBQ_REQ_READSTATUSを指定した場合にだけ発生するリターン値です。

注※2

DBキューがHiRDBの場合にだけ発生するリターン値です。

注意事項

  1. flagsにEEDBQ_REQ_READSTATUSを指定し,かつDBキューがOracleの場合にDBキュー読み出し先サーバ変更機能とee_dbq_inquire2関数が競合すると,リターン値がEE_OKでもDBキューの読み出し状態が最新の状態にならないことがあります。

  2. 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コマンドで実行結果を確認してください。