Hitachi

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


2.7 ユーザジャーナルの取得

UAPから任意の情報を,ユーザジャーナル(UJ)としてシステムジャーナルファイルに出力できます。ユーザジャーナルを取得するときは,UAPからdc_jnl_ujput関数【CBLDCJNL('UJPUT ')】を呼び出します。

ユーザジャーナルを取得する機能は,TP1/Server Baseの場合だけ使用できます。TP1/LiNKでは,UAPからユーザジャーナルを取得できません。

dc_jnl_ujput関数を呼び出して取得するユーザジャーナルの単位をUJレコードといいます。dc_jnl_ujput関数を1回呼び出すと,UJレコードを一つ取得できます。

UJレコードは,トランザクションの範囲外,またはトランザクションの範囲内で取得できます。トランザクションの範囲外で取得するUJレコードをトランザクション外UJと呼び,トランザクションの範囲内で取得するUJレコードをトランザクション内UJと呼びます。トランザクション外UJレコードは,ジャーナルバッファに空きがなくなったとき,またはほかのアプリケーションのトランザクションが正常終了した同期点(コミットした時点)で,システムジャーナルファイルに出力されます。

トランザクションが発生しないアプリケーションでUJレコードを取得する場合は,flagsにDCJNL_FLUSHを設定したdc_jnl_ujput関数を,適切なタイミングで呼び出してください。

ユーザジャーナルの取得を次の図に示します。

図2‒53 ユーザジャーナルの取得

[図データ]

dc_jnl_ujput関数を呼び出したトランザクションの処理に障害が起こった場合,ユーザジャーナルを取得した処理はロールバックで無効にはできません。dc_jnl_ujput関数を呼び出したUAPの処理を部分回復しても,UJレコードはシステムジャーナルファイルに出力されます。