tx_set_commit_return
名称
commit_return特性の設定
形式
ANSI C ,C++ の形式
#include <tx.h>
int tx_set_commit_return(COMMIT_RETURN when_return)
K&R版 Cの形式
#include <tx.h>
int tx_set_commit_return(when_return)
COMMIT_RETURN when_return;
機能
関数tx_set_commit_return()は,commit_return特性をwhen_returnに指定した値に設定します。commit_return特性は,tx_commit()が呼び出し元に制御を戻す方法に対して影響します。
tx_set_commit_return()は,呼び出し元がトランザクションモードかどうかに関係なく呼び出せます。when_returnに設定したcommit_return特性は,あとから呼び出されるtx_set_commit_return()で変更されるまで引き継がれて,効力を発揮します。
commit_return特性の初期設定値は,製品の仕様に依存します。『OpenTP1の場合は,TX_COMMIT_COMPLETEDです。』
『引数』
『●when_return』
次の二つのどちらかの値が,when_returnの妥当な設定です。
{TX_COMMIT_DECISION_LOGGED|TX_COMMIT_COMPLETED}
リターン値
『リターン値が0で』成功した場合,tx_set_commit_return()はTX_OKを返します。これは,負ではないリターン値です。『この場合,commit_return特性の設定は,when_returnに設定した値に変更されます。』
『リターン値が正の値で』成功した場合,tx_set_commit_return()はTX_NOT_SUPPORTEDを返します。これは,負ではないリターン値です。『when_returnに設定した値は,システムのトランザクションマネジャでは使えません。』
この場合のcommit_return特性は,変更されません。トランザクションマネジャはTX_COMMIT_COMPLETEDまたはTX_COMMIT_DECISION_LOGGEDのどちらかは,when_returnの値として使えるようにしておく必要があります。『OpenTP1の場合は,TX_COMMIT_RETURNです。』
エラー
次のような場合,tx_set_commit_return()はエラーリターンして,次のうちどれか一つの値を返します。これは,負のリターン値です。負のリターン値が返った場合は,tx_set_commit_return()はcommit_return特性を変更しません。
リターン値 | リターン値(数値) | 意味 |
---|---|---|
TX_PROTOCOL_ERROR | -5 | 関数は,適切でないコンテクストで呼ばれました(例えば,呼び出し元がtx_open()を呼び出していない)。 |
TX_FAIL | -7 | トランザクションマネジャで,回復できないエラーが起こりました。トランザクションマネジャが,すでにアプリケーションに代わって作業できないことが,エラーの原因です。 |
TX_EINVAL | -8 | when_returnに設定した値が,TX_COMMIT_DECISION_LOGGEDでも,TX_COMMIT_COMPLETEDでもありません。 |
参照
tx_commit(),tx_open(),tx_info()
『指定例』
『if (tx_set_commit_return(TX_COMMIT_COMPLETED) == 0 &&
tx_commit() < 0 )
fputs("cannot commit transaction¥n",stderr);』
『OpenTP1で使う場合の注意事項』