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_OK0正常に終了しました。
DCJNLER_PARAM-1101パラメタの形式が間違っています。
DCJNLER_SHORT-1102ユーザジャーナルの長さ(dsizeの値)に,0以下のデータ長を設定しています。
DCJNLER_LONG-1103ユーザジャーナルの長さ(dsizeの値)に,設定できる範囲以上の値を設定しています。
DCJNLER_PROTO-1105dc_rpc_open関数が呼び出されていません。または,該当するシステムの実行環境がジャーナルファイルレスモードのため,dc_jnl_ujput関数が動作できません。

注意事項

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