11.29.3 新しい明示的なトランザクションを開始するサービスの呼出し

TPNOTRANを設定して通信呼出しを行い、呼び出されたサービスが自動的にトランザクション・モードにならないように設定されている場合、tpbegin()tpcommit()およびtpabort()を明示的に呼び出すと、サービスで複数のトランザクションを定義できます。その結果、tpreturn()が呼び出される前にトランザクションを完了できます。

この状況では、次の処理が行われます。

  • tpreturn()はトランザクションの役割は果たしません。つまり、サービス・ルーチンにトランザクションが明示的に定義されているかどうかにかかわらず、tpreturn()の役割は常に同じです。
  • トランザクションの結果に関係なく、tpreturn()rvalに任意の値を返します。
  • 通常、システムはプロセス・エラー、バッファ・タイプ・エラー、またはアプリケーション障害を返し、TPESVCFAILTPEITYPE/TPEOTYPE、およびTPESVCERRの一般的な規則に従います。
  • 呼出し側のトランザクションの状態は、呼出し側に戻されるエラー・メッセージやアプリケーション障害の影響を受けません。
  • 呼出し側は、応答を待っている間にトランザクションがタイムアウトになることがあります。
  • 応答が必要ない場合、呼出し側のトランザクションは、通信呼出しによる影響を受けません。