11.1 システム・エラー

Oracle Tuxedoシステムでは、関数が失敗すると、tperrno(5)変数を使用してプロセスに情報が提供されます。すべてのATMI関数は、正常に処理が行われた場合、整数またはポインタを返します。エラーが発生した場合、-1またはNULLを返し、tperrno()にエラーの原因を示す値を設定します。サービス・ルーチンを終了させるために使用するtpreturn()tpforward()など、呼出し側に戻らない関数の場合、成功か失敗かを確認する唯一の方法はリクエスタのtperrno()変数です。

tperrordetail(3c)およびtpstrerrordetail(3c)関数を使用すると、現在のスレッドへのOracle Tuxedoシステムの最新の呼出しで発生したエラーの詳細を取得できます。tperrordetail()は、そのシンボリック名で表される整数値を返します。この整数値は、tpstrerrordetail()の引数として使用され、エラー・メッセージを表す文字列を指すポインタを取得します。このポインタは、userlog(3c)またはfprintf()の引数として使用できます。返されるシンボリック名については、『Oracle Tuxedo ATMI C関数リファレンス』tperrordetail(3c)に関する項を参照してください。

tpurcode(5)は、ユーザー定義の条件だけを通知します。tpurcodeの値は、tpreturn()rcode引数の値に設定されます。tpreturn()でエラーまたはトランザクション・タイムアウトが発生しないかぎり、tpreturn()rval引数の値に関係なく、tpurcodeの値が設定されます。

tperrno(5)に戻されるコードは、エラーの種類を表し、次の表は、そのエラーの種類を示しています。

表11-1 tperrnoエラーの種類

エラーの種類 tperrnoの値
中断 TPEABORT2
Oracle Tuxedoシステム1 TPESYSTEM
呼出し記述子 TPELIMITおよびTPEBADDESC
会話 TPEVENT
複製操作 TPEMATCH
一般的な通信 TPESVCFAIL、TPESVCERR、TPEBLOCKおよびTPGOTSIG
ヒューリスティックな判断 TPEHAZARD2およびTPEHEURISTIC2
無効な引数1 TPEINVAL
MIB TPEMIB
エントリなし TPENOENT
オペレーティング・システム1 TPEOS
パーミッション TPEPERM
プロトコル1 TPEPROTO
キューイング TPEDIAGNOSTIC
リリース間の互換性 TPERELEASE
リソース・マネージャ TPERMERR
タイムアウト TPETIME
トランザクション TPETRAN2
型付きバッファの不一致 TPEITYPEおよびTPEOTYPE
1. tperrno(5)で返される値によって失敗が通知されるすべてのATMI関数に適用されます。
2. このエラーの詳細は、「致命的なトランザクション・エラー」を参照してください。

脚注1にあるように、tperrno(5)によって通知される4種類のエラーは、すべてのATMI関数で発生するエラーです。それ以外のエラーの種類は、特定のATMI関数だけで発生します。次の項では、一部のエラーの種類について詳しく説明します。