Hitachi

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


ee_dbq_msgrefer2

〈このページの構成〉

名称

メッセージの参照読み出し

形式

ANSI C,C++の形式

#include <eedbq.h>
int ee_dbq_msgrefer2 (char *dbque_name, EEULONG read_num, 
                      EEULONG buf_len, void *buf_pt, 
                      EEULONG *out_len, EELONG flags)

機能

通番指定で,メッセージを読み出します(参照読み出し)。

他サーバ読み出しのDBキューのメッセージや,未読み出しのメッセージを読み出せます。

UAPで値を設定する引数

●dbque_name

読み出し対象のDBキュー名を27バイト以内のアスキー文字列で設定します。文字列の最後にはNULL文字を設定してください。このNULL文字は文字列の長さに数えません。

●read_num

読み出し対象のメッセージの通番を設定します。

●buf_len

読み出したメッセージを格納する領域の長さを設定します。65以上の値を指定してください。

●buf_pt

読み出したメッセージを格納する領域のアドレスを設定します。読み出したいメッセージの長さ+64バイトの領域を用意してください。先頭から64バイトはTP1/EEで使用します。

buf_ptには,8バイトで境界調整した領域のアドレスを指定してください。

●out_len

読み出したメッセージの長さを格納する領域のアドレスを設定します。

●flags

EENOFLAGSを設定します。

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

●buf_pt

読み出したメッセージが返されます。読み出したメッセージの先頭はbuf_pt+64バイトのアドレスです。

●out_len

読み出したメッセージの長さが返されます(単位:バイト)。

[図データ]

読み出したメッセージがオーバフローしてしまう場合(リターン値EEDBQER_BUF_OVERFLOW)は次のようになります。

[図データ]

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDBPP

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

EECOMER_CNDUOC

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

EECOMER_ENVIRON

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

EEDBQER_ARGUMENT

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

EEDBQER_BUF_LEN

バッファ長が指定範囲外です。

EEDBQER_BUF_OVERFLOW

読み出したメッセージがバッファをオーバフローしました。

EEDBQER_CONDITION

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

  • トランザクション種別が不正です。

EEDBQER_MEMORY_SHORT

メモリが不足しました。

EEDBQER_NO_DBQUE

要求されたDBキューは存在しません。

EEDBQER_NO_LIBRARY

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

EEDBQER_NO_OPTION

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

EEDBQER_READ_NUM

read_numに指定した値は不当な値です。

  • 1〜最大メッセージ数の指定範囲外の通番

  • 書き込まれていない通番

EEDBQER_RM_ACCESS

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

EEDBQER_RM_CONNECT

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

EEDBQER_ROLLBACK_RESERVE

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

EEDBQER_STOP

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

EEDBQER_TIMING

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

  • 通番の初期化中です。

EEDBQER_UNRESOLVABLE

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

注意事項

【TP1/FSP限定】交替用メッセージ表書き込み機能使用時に,この関数内で行うメッセージ表へのアクセスで障害が発生すると,この関数はリターンしないでトランザクションがリトライロールバックする場合があります。