Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス C言語編


dc_jnl_ujput

〈このページの構成〉

名称

ユーザジャーナルの取得

形式

ANSI C ,C++の形式

#include <dcjnl.h>
int  dc_jnl_ujput(char *data,DCULONG dsize,DCLONG ujcode,
                  DCLONG flags)

K&R版 C の形式

#include <dcjnl.h>
int dc_jnl_ujput(data,dsize,ujcode,flags)
char     *data;
DCULONG  dsize;
DCLONG   ujcode;
DCLONG   flags;

機能

UAPの履歴情報であるユーザジャーナル(UJ)をシステムジャーナルファイル(system_jnl_file)に取得します。dc_jnl_ujput関数1回の呼び出しで取得するUJの単位をUJレコードといいます。

dc_jnl_ujput関数を呼び出しても,すぐにはシステムジャーナルファイルに出力されません。ジャーナルバッファに空きがなくなったときか,トランザクション処理が正常終了した同期点で,システムジャーナルファイルにUJレコードが出力されます。

dc_jnl_ujput関数は,dc_rpc_open関数の呼び出し後からdc_rpc_close関数の呼び出しまでの間で呼び出せます。出力済みのUJレコードは,dc_jnl_ujput関数を呼び出したトランザクションで障害が発生しても,ロールバック(部分回復)で無効にできません。dc_jnl_ujput関数を呼び出したトランザクションをロールバックしても,UJレコードはシステムジャーナルファイルへ出力されます。

UAPで値を設定する引数

●data

取得するUAPの履歴情報を設定します。UAPの履歴情報として有効になるデータは,dsizeに設定した長さです。

●dsize

取得するUAPの履歴情報の長さを設定します。設定できる長さは1から(取得先のシステムジャーナルファイルサービス定義のjnl_max_datasizeオペランドの値−8)までです。

●ujcode

UJコードを,0〜255の値で設定します。

●flags

UJレコードを取得する時点で,システムジャーナルファイルにUJレコードを出力するかどうかを,次に示す形式で設定します。

DCJNL_FLUSH

UJレコードを取得する時点で,システムジャーナルファイルにUJレコードを出力します。トランザクション内でUJレコードが取得されている場合,この設定は無視されます。

DCNOFLAGS

UJレコードを取得する時点では,システムジャーナルファイルにUJレコードを出力しません。

リターン値

リターン値

リターン値(数値)

意味

DC_OK

0

正常に終了しました。

DCJNLER_PARAM

-1101

パラメタの形式が間違っています。

DCJNLER_SHORT

-1102

ユーザジャーナルの長さ(dsizeの値)に,0以下のデータ長を設定しています。

DCJNLER_LONG

-1103

ユーザジャーナルの長さ(dsizeの値)に,設定できる範囲以上の値を設定しています。

DCJNLER_PROTO

-1105

dc_rpc_open関数が呼び出されていません。または,該当するシステムの実行環境がジャーナルファイルレスモードのため,dc_jnl_ujput関数が動作できません。

注意事項

トランザクション外UJレコードは,ジャーナルバッファに空きがなくなったとき,またはほかのアプリケーションのトランザクションが正常終了した同期点(コミットした時点)で,システムジャーナルファイルに出力されます。トランザクションが発生しないアプリケーションでUJレコードを取得する場合は,flagsにDCJNL_FLUSHを設定したdc_jnl_ujput関数を,適切なタイミングで呼び出してください。