3.3.4 OLTP環境でのUAPのトランザクション管理
OLTP環境で,トランザクションの同期点,及びロールバックをUAPから実行する場合,X/Openに従ったアプリケーションプログラムインタフェース(以降APIと略します)を使用します。
ここでは,OpenTP1の場合を例に説明します。なお,OpenTP1を利用する場合のプログラムの作成方法については,マニュアル「OpenTP1 プログラム作成リファレンス C言語編」,又はマニュアル「OpenTP1 プログラム作成リファレンス COBOL言語編」を参照してください。
1件のトランザクションをRPC(リモートプロシジャコール)を使用して,複数のOLTPユーザサーバプロセスで実現できます。個々のプロセスをトランザクションブランチと呼び,全体をまとめてOLTPのグローバルトランザクションと呼びます。
このようなOLTPのグローバルトランザクションからHiRDBをアクセスする場合,一つのグローバルトランザクション内の複数のトランザクションブランチからHiRDBをアクセスできません。
アクセスする資源によっては,グローバルトランザクション内の先発トランザクションブランチで掛けた排他を,後発トランザクションブランチが待ってタイムアウトになったり,トランザクションブランチ間でデッドロックが発生したりすることがあります。
このような場合は,連鎖RPCなどの機能を使用して,複数のRPCを同一トランザクションブランチとして扱うようにしてください。
- 〈この項の構成〉
(1) C言語で記述する場合
(2) COBOL85言語で記述する場合
(a) トランザクションの開始
DATA DIVISION. *include TX definitions. 01 TX-RETURN_STATUS COPY TXSTATUS. PROCEDURE DIVISION. CALL "TXBEGIN" USING TX-RETURN_STATUS.