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関数を,適切なタイミングで呼び出してください。