Hitachi

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


ee_dbq_acsctl

〈このページの構成〉

名称

DBキューの読み出し制御

形式

ANSI C,C++の形式

#include <eedbq.h>
int ee_dbq_acsctl(EEULONG access_flg, char *dbque_name,
                  EELONG flags)

機能

DBキューの読み出しを停止,および再開します。

UAPで値を設定する引数

●access_flg

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

EEDBQ_ACSCTL_STOP

DBキューの読み出しを停止します。

EEDBQ_ACSCTL_RESTART

DBキューの読み出しを再開します。

●dbque_name

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

●flags

オプションを次に示す形式で設定します。

{EENOFLAGS|EEDBQ_ACSCTL_ANY}
EENOFLAGS

dbque_nameに指定した自サーバ読み出しのDBキューを停止,再開します。

EEDBQ_ACSCTL_ANY

dbque_nameに指定した自サーバ読み出しまたは他サーバ読み出しのDBキューを停止,再開します。

dbque_nameに指定したDBキューが他サーバ読み出しの場合,メッセージを読み出しているTP1/EEプロセスが07-80以降かつDBキューのフォーマットタイプが1であれば,RPC通信を行ってDBキューの読み出しを停止,再開します。

リターン値

リターン値

意味

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_UN_FWD_DEST

変更要求処理を実行しましたが,変更要求処理の結果確認でEEDBQER_FWD_DESTを検知しました。※1,※2

EEDBQER_FWD_UN_FWD_VER

変更要求処理を実行しましたが,変更要求処理の結果確認でEEDBQER_FWD_VERを検知しました。※1,※2

EEDBQER_FWD_UN_RMACCESS

変更要求処理を実行しましたが,変更要求処理の結果確認でEEDBQER_RM_ACCESSが発生しました。※1,※2

EEDBQER_FWD_UN_ROLLBACK_RESERVE

変更要求処理を実行しましたが,変更要求処理の結果確認でEEDBQER_ROLLBACK_RESERVEを検知しました。※1,※2

EEDBQER_FWD_VER

変更要求処理に失敗しました。

対象のDBキューを読み出しているサーバが変更要求に対応していません。※1

EEDBQER_NO_DBQUE

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

EEDBQER_NO_LIBRARY

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

EEDBQER_NO_OPTION

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

EEDBQER_QUE_TYPE

設定されたDBキューのタイプは機能対象外です。※3

  • 相手読み出しDBキュー

EEDBQER_RM_ACCESS

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

EEDBQER_RM_CONNECT

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

EEDBQER_ROLLBACK_RESERVE

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

HiRDBの暗黙的ロールバックについては,HiRDBシリーズのマニュアルを参照してください。

EEDBQER_STOP

DBキューが使用できない状態です。

EEDBQER_TIMING

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

EEDBQER_UNRESOLVABLE

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

注※1

flagsにEEDBQ_ACSCTL_ANYを指定した場合に返されます。

注※2

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

注※3

flagsにEENOFLAGSを指定した場合に返されます。

注意事項

  1. DBキューの読み出しトランザクションで,該当するDBキューに対してee_dbq_acsctl関数を呼び出した場合,読み出しトランザクション完了後に読み出しを停止します。この状態でee_dbq_inquire関数を呼び出した場合,DBキューの状態はEEDBQ_QUE_STATUS_CSTOP(読み出し停止中)が返されます。

  2. 次の場合,ee_dbq_inquire関数はリターン値EE_OKでリターンします。

    • 読み出し停止状態のDBキューに対して読み出し停止を要求した場合

    • 読み出し開始状態(再開始を含む)のDBキューに対して読み出し再開を要求した場合

  3. DBキュー機能関連定義のdbqgrpdef定義コマンドの-kオプションに1を指定したDBキューに対してee_dbq_acsctl関数を呼び出した場合,DBキューのステータスが他サーバ読み出しのときでも,リターン値がEEDBQER_QUE_TYPEとならないで,EE_OKとなることがあります。

  4. flagsにEEDBQ_ACSCTL_ANYを指定した場合に,DBキュー読み出し先サーバ変更機能とee_dbq_acsctl関数が競合すると,リターン値がEE_OKでもDBキューの読み出し状態が読み出し停止,再開状態にならないことがあります。

  5. ee_dbq_acsctl関数のエラーリターン時は,リターン値別に次のように対処してください。

    • EEDBQER_FWD_TIMED_OUT

      ee_dbq_acsctl関数の発行元のTP1/EEプロセスが出力するメッセージで要求先のTP1/EEプロセスを特定します。

      要求先のTP1/EEプロセスが出力するエラーメッセージを基に障害を取り除いてください。

      このリターン値が返ったときは読み出し停止,再開要求の結果は不定です。

      実行結果を確認したい場合は,ee_dbq_inquire2関数またはeedbqlsコマンドで実行結果を確認してください。

    • EEDBQER_FWD_DEST

      DBキュー読み出し先サーバ変更機能を使用して読み出し先サーバを決定するか,該当のDBキューを読み出すTP1/EEプロセスを開始してください。

    • EEDBQER_FWD_VER

      メッセージを読み出しているサーバが07-80以降のTP1/EEであることを確認してください。

    • EEDBQER_FWD_SEND

      ee_dbq_acsctl関数の発行元のTP1/EEプロセスが出力する次のメッセージを参照して,障害を取り除いてください。

      KFSB40320-E,KFSB40322-E,KFSB40350-E,KFSB40352-E

    • EEDBQER_FWD_CHGR

      このリターン値が返ったときは読み出し停止,再開要求の結果は不定です。

      実行結果を確認したい場合は,ee_dbq_inquire2関数またはeedbqlsコマンドで実行結果を確認してください。

    • EEDBQER_FWD_UN_RMACCESS,EEDBQER_FWD_UN_FWD_VER,EEDBQER_FWD_UN_FWD_DEST,EDBQER_FWD_UN_ROLLBACK_RESERVE

      これらのリターン値が返ったときは読み出し停止,再開要求の結果は不定です。

      実行結果を確認したい場合は,変更要求結果処理確認で発生したエラーの障害要因を取り除いてから,ee_dbq_inquire2関数またはeedbqlsコマンドで実行結果を確認してください。