6.5.1 CBLDCTRS('BEGIN ') − トランザクションの開始
(1) 形式
(a) マルチスレッド環境の場合
■ PROCEDURE DIVISIONの指定
CALL 'CBLDCTRS' USING 一意名1
■ DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'BEGIN '. 02 データ名B PIC X(5). 02 FILLER PIC X(3). 02 データ名C PIC 9(9) COMP-X.
(b) シングルスレッド環境の場合
■ PROCEDURE DIVISIONの指定
CALL 'CBLDCTRN' USING 一意名1
■ DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'BEGIN '. 02 データ名B PIC X(5).
(2) 機能
グローバルトランザクションを,CBLDCTRS('BEGIN ')を実行するCUPのプロセスから開始します。
CBLDCTRS('BEGIN ')は,CBLDCRPS('OPEN ')を実行したあとに発行してください。
CBLDCTRS('BEGIN ')を実行してから,トランザクションの同期点(コミットの要求)までが一つのグローバルトランザクションとなります。
また,グローバルトランザクション中では,CBLDCTRS('BEGIN ')を重複して発行できません(SPPでのCBLDCTRS('BEGIN ')を含みます)。発行した場合はエラーリターンします。
SPPのトランザクション属性は,ユーザサービス定義のatomic_updateの指定に従います。
(3) UAPで値を設定するデータ領域
-
データ名A
トランザクションの開始を示す要求コードを「VALUE 'BEGIN△△△'」と設定します。
-
データ名C
CBLDCCLS('CLTIN '),またはCBLDCCLS('EXCLTIN ')で受け取ったクライアントIDを指定します。
(4) 値が返されるデータ領域
-
データ名B
ステータスコードが,5けたの数字で返されます。
(5) ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常終了しました。 |
02501 |
要求コード(データ名A)に指定した値が間違っています。 |
02502 |
誤ったコンテクスト(例 すでにトランザクション内にいる)からプログラムを発行しています。 または,次の条件が重なった環境下から関数を呼び出しています。
|
02504 |
メモリ不足が発生しました。 |
02506 |
ネットワーク障害が発生しました。 |
02507 |
CBLDCTRS('BEGIN ')の処理時間で時間切れ(タイムアウト)が発生しました。 |
02510 |
クライアント拡張サービスが起動されていません。システムサービス構成定義clt_confの指定が正しいか見直してください。または,トランザクショナルRPC実行プロセスが起動されていません。クライアントサービス定義clt_trn_confの指定が正しいか見直してしてください。 |
02515 |
OpenTP1が起動されていません。 |
02517 |
トランザクションプロセス内でメモリ不足が発生しました。 |
02518 |
システムエラーが発生しました。 |
02542 |
CUP実行プロセス側から常設コネクションが解放されました。 |
02544 |
データ名Cに指定したクライアントIDはCBLDCCLS('CLTIN '),またはCBLDCCLS('EXCLTIN ')で受け取ったクライアントIDと異なっています。 |
02545 |
サーバのトランザクション処理に負荷が掛かり過ぎているため,トランザクションを開始できません。 このステータスコードが戻った場合は,再び実行すれば成功する可能性が高いので,再実行してください。 |
02547 |
指定したポート番号は使用されています。または,OSが自動的に割り当てるポート番号が不足しています。 |
03406 |
リソースマネジャ(RM)でエラーが発生しました。トランザクションは発生できませんでした。 |
03407 |
トランザクションサービスでエラーが発生したので,トランザクションを開始できませんでした。 このステータスコードが戻った場合は,再び実行すれば成功する可能性が高いので,再び実行してください。 |
(6) 注意事項
ステータスコード02518が戻る場合,CUPを終了してから開始し直してください。