4.5.1 dc_trn_begin_s − トランザクションの開始
- 〈この項の構成〉
(1) 形式
(a) _s付き関数の場合
#include <dcvtrn.h> DCLONG dc_trn_begin_s(DCCLT_ID cltid)
(b) _s無し関数の場合
#include <dcvtrn.h> DCLONG dc_trn_begin()
(2) 機能
グローバルトランザクションを,dc_trn_begin_s関数を実行するCUPのプロセスから開始します。
dc_trn_begin_s関数は,dc_rpc_open_s関数のあとに実行してください。
dc_trn_begin_s関数を実行してから,トランザクションの同期点(コミットの要求)までが一つのグローバルトランザクションとなります。また,グローバルトランザクションの中では,dc_trn_begin_s関数は重複して実行できません(SPPでのdc_trn_begin_s関数を含みます)。実行した場合はエラーリターンします。
SPPのトランザクション属性は,ユーザサービス定義のatomic_updateの指定に従います。
(3) UAPで値を設定する引数
-
cltid
dc_clt_cltin_s関数で受け取ったクライアントIDを指定します。
(4) リターン値
リターン値 |
数値 (10進数) |
意味 |
---|---|---|
DC_OK |
0 |
正常終了しました。 |
DCCLTER_PROTO |
-2502 |
誤ったコンテクスト(例 すでにトランザクション内にいる)から関数を呼び出しています。 または,次の条件が重なった環境下から関数を呼び出しています。
|
DCCLTER_NO_BUFS |
-2504 |
メモリ不足が発生しました。または,リソース不足が発生しました。 |
DCCLTER_NET_DOWN |
-2506 |
ネットワーク障害が発生しました。 |
DCCLTER_TIMED_OUT |
-2507 |
dc_trn_begin_s関数の処理時間で時間切れ(タイムアウト)が発生しました。 |
DCCLTER_NO_SUCH_SERVICE_GROUP |
-2510 |
クライアント拡張サービスが起動されていません。システムサービス構成定義clt_confの指定が正しいか見直してください。または,トランザクショナルRPC実行プロセスが起動されていません。クライアントサービス定義clt_trn_confの指定が正しいか見直してしてください。 |
DCCLTER_OLTF_NOT_UP |
-2515 |
OpenTP1が起動されていません。 |
DCCLTER_NO_BUFS_AT_SERVER |
-2517 |
トランザクションプロセス内でメモリ不足が発生しました。 |
DCCLTER_SYSERR |
-2518 |
システムエラーが発生しました。 |
DCCLTER_CONNFREE |
-2542 |
常設コネクションが解放されました。 |
DCCLTER_INVALID_CLTID |
-2544 |
cltidに指定したクライアントIDは,dc_clt_cltin_s関数で受け取ったクライアントIDと異なっています。 |
DCCLTER_BUSY_AT_SERVER |
-2545 |
サーバのトランザクション処理に負荷が掛かり過ぎているため,トランザクションを開始できません。 このリターン値が戻った場合は,再び実行すれば成功する可能性が高いので,再実行してください。 |
DCCLTER_PORT_IN_USE |
-2547 |
指定したポート番号は使用されています。または,OSが自動的に割り当てるポート番号が不足しています。 |
DCTRNER_RM |
-3406 |
リソースマネジャ(RM)でエラーが発生しました。 トランザクションは発生できませんでした。 |
DCTRNER_TM |
-3407 |
トランザクションサービスでエラーが発生したので,トランザクションを開始できませんでした。 このリターン値が返った場合は,再び実行すれば成功する可能性が高いので,再実行してください。 |
(5) 注意事項
-
リターン値DCCLTER_SYSERRが戻る場合,CUPを終了してから開始し直してください。