9.5.1 サービス・ルーチンのトランザクションの暗黙的な定義
構成ファイルのシステム・パラメータAUTOTRAN
を設定すると、サービス・ルーチンがトランザクション・モードになります。AUTOTRAN
にY
を設定すると、別のプロセスからリクエストを受信したときに、サービス・サブルーチン内でトランザクションが自動的に開始されます。
暗黙的にトランザクションを定義する場合は、以下の規則に従います。
- 呼出し側プロセスがトランザクション・モードになっていない場合に、システム・パラメータ
AUTOTRAN
がトランザクションを開始するように設定されていると、プロセスが別のプロセスのサービスをリクエストしたときにトランザクションが開始されます - すでにトランザクション・モードになっているプロセスが別のプロセスのサービスをリクエストした場合、システムは呼出し側の
flags
パラメータがTPNOTRAN
に設定されているかどうかをまず確認します。flags
引数にTPNOTRAN
が設定されていない場合、呼び出されたプロセスは伝達の規則によってトランザクション・モードになります。システムによってAUTOTRAN
パラメータは確認されません。flags
引数にTPNOTRAN
が設定されている場合、呼び出されたプロセスによって実行されるサービスは、現在のトランザクションに含まれません。つまり、「伝達の規則」は適用されません。システムによってAUTOTRAN
パラメータが確認されます。AUTOTRAN
にN
が設定されている場合(つまりAUTOTRANが有効になっていない場合)、呼び出されたプロセスはトランザクション・モードになりません。AUTOTRAN
にY
が設定されている場合、呼び出されたプロセスはトランザクション・モードになります。ただし、新しいトランザクションとして処理されます。
ノート:
サービスは自動的にトランザクション・モードにできるので、TPNOTRAN
フラグが設定されたサービスから、AUTOTRAN
パラメータが設定されたサービスを呼び出すことができます。そのようなサービスが別のサービスをリクエストした場合、サービスのデータ構造体のflags
メンバーは問合せを実行したときにTPTRAN
を返します。たとえば、flags
にTPNOTRAN
| TPNOREPLY
を設定して呼出しを行い、サービスが呼び出されたときに(そのサービスによって)トランザクションが自動的に開始された場合、データ構造体のflags
メンバーは、TPTRAN
| TPNOREPLY
に設定されます。
親トピック: グローバル・トランザクションの暗黙的な定義