7.5.8 トランザクション制御
データ連携支援のUOCからSQLを実行できるよう,各UOCはデータ連携支援が制御するトランザクションとして動作し,DBとの接続や切断,およびコミットの制御を行います。
データ連携支援がトランザクションとして制御するUOCを次に示します。
-
開始終了UOC
-
反映先指定UOC
-
反映UOC
-
編集UOC(UOCからのSQL実行は不可)
(1) 定義とリソースマネジャとUOCの関連
(a) 開始終了UOC/反映先指定UOCでの定義とリソースマネジャとUOCの関連
開始終了UOC/反映先指定UOCで使用するリソースマネジャは,トランザクション関連定義のtrnstring定義コマンドの-jオプションで指定します。-jオプションを指定したリソースマネジャは,反映UOC/編集UOCで使用するリソースマネジャと同じでもかまいません。リソースマネジャと定義とUOCの関連を次の図に示します。
(b) 反映UOC/編集UOCでの定義とリソースマネジャとUOCの関連
反映UOC/編集UOCで使用するリソースマネジャは,トランザクション関連定義のtrnstring定義コマンドで指定します。リソースマネジャと定義とUOCの関連を次の図に示します。
(2) コネクション制御
データ連携支援の開始時,トランザクション関連定義のtrnstring定義コマンドに指定したリソースマネジャに対してCONNECT文を実行して接続します。接続に失敗したときは,KFSB50970-Eメッセージを出力し,データ連携支援を中断します。
(3) UOCでのSQL実行
(a) 開始終了UOC/反映先指定UOCでのSQL実行
ee_trn_gethandle関数/CBLEETRN('GETHNDL ')によって取得した接続ハンドルを使用して,SQLを実行することができます。
(b) 反映UOCでのSQL実行
反映UOC起動時のインタフェースエリアの接続ハンドルを使用して,SQLを実行することができます。
(c) UOCで発行不可のSQL
UOCでは,次のSQL文を実行しないでください。実行した場合の動作は保障しません。
-
COMMIT
-
ROLLBACK
-
DISCONNECT
-
定義系SQL
-
上記以外で処理完了と同時にCOMMITされるSQL
(4) 同期点取得
(a) 開始終了UOCでの同期点取得
開始終了UOC後にCOMMIT文を実行します。COMMIT文が失敗したときは,KFSB50970-Eメッセージを出力し,データ連携支援を中断します。
(b) 反映先指定UOC/反映UOC/編集UOCでの同期点取得
同期点の取得は,PJ管理表の更新契機と同期して行います。
PJ管理表の更新タイミング変更機能を使用しない場合は,反映処理のトランザクションごとにCOMMIT文を実行します。
PJ管理表の更新タイミング変更機能を使用している場合は,PJUPITVLオペランド指定回数の反映先指定UOCを呼び出し,そのあとの反映処理のトランザクションがすべて完了したときにCOMMIT文を実行します。ただし,前回のPJ管理表の更新から,EEFDPARMパラメタのCONTROL文のPJUPTIMEITVLオペランドで指定した時間が経過したときは,PJUPITVLオペランド指定値に関係なくCOMMIT文を実行します。COMMIT文が失敗したときは,KFSB50970-Eメッセージを出力し,データ連携支援を中断します。
(5) 注意事項
反映先指定UOCで実行したSQLの同期点取得は,SQL実行と非同期で行います。このため,UOCで更新系SQLを実行したあとにデータ連係支援が中断,または強制停止した場合,UOCで実行したSQLの同期点を取得して,PJ管理表への同期点を取得しないことがあるため,結果が不一致となることがあります。