9.5.1 サービス・ルーチンのトランザクションの暗黙的な定義

構成ファイルのシステム・パラメータAUTOTRANを設定すると、サービス・ルーチンがトランザクション・モードになります。AUTOTRANYを設定すると、別のプロセスからリクエストを受信したときに、サービス・サブルーチン内でトランザクションが自動的に開始されます。

暗黙的にトランザクションを定義する場合は、以下の規則に従います。

  • 呼出し側プロセスがトランザクション・モードになっていない場合に、システム・パラメータAUTOTRANがトランザクションを開始するように設定されていると、プロセスが別のプロセスのサービスをリクエストしたときにトランザクションが開始されます
  • すでにトランザクション・モードになっているプロセスが別のプロセスのサービスをリクエストした場合、システムは呼出し側のflagsパラメータがTPNOTRANに設定されているかどうかをまず確認します。

    flags引数にTPNOTRANが設定されていない場合、呼び出されたプロセスは伝達の規則によってトランザクション・モードになります。システムによってAUTOTRANパラメータは確認されません。

    flags引数にTPNOTRANが設定されている場合、呼び出されたプロセスによって実行されるサービスは、現在のトランザクションに含まれません。つまり、「伝達の規則」は適用されません。システムによってAUTOTRANパラメータが確認されます。

    • AUTOTRANNが設定されている場合(つまりAUTOTRANが有効になっていない場合)、呼び出されたプロセスはトランザクション・モードになりません。
    • AUTOTRANYが設定されている場合、呼び出されたプロセスはトランザクション・モードになります。ただし、新しいトランザクションとして処理されます。

ノート:

サービスは自動的にトランザクション・モードにできるので、TPNOTRANフラグが設定されたサービスから、AUTOTRANパラメータが設定されたサービスを呼び出すことができます。そのようなサービスが別のサービスをリクエストした場合、サービスのデータ構造体のflagsメンバーは問合せを実行したときにTPTRANを返します。たとえば、flagsTPNOTRAN | TPNOREPLYを設定して呼出しを行い、サービスが呼び出されたときに(そのサービスによって)トランザクションが自動的に開始された場合、データ構造体のflagsメンバーは、TPTRAN | TPNOREPLYに設定されます。