Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス COBOL言語編


CBLDCTRN('BEGIN ')

〈このページの構成〉

名称

トランザクションの開始

形式

PROCEDURE DIVISIONの指定

CALL 'CBLDCTRN' USING 一意名1

DATA DIVISIONの指定

01 一意名1.
   02 データ名A PIC X(8) VALUE 'BEGIN   '.
   02 データ名B PIC X(5).

機能

グローバルトランザクションを,CBLDCTRN('BEGIN ')を呼び出したプロセスから開始します。トランザクションを開始したプロセスは,グローバルトランザクションのルートトランザクションブランチになります。

トランザクションを開始するUAPは,実行環境の設定でトランザクション属性を指定しておいてください。また,すでにトランザクションを開始しているグローバルトランザクションの中では,どのトランザクションブランチからもCBLDCTRN('BEGIN ')は呼び出せません。一つのグローバルトランザクション中で重複して呼び出した場合はエラーリターンします。

UAPで値を設定するデータ領域

●データ名A

トランザクションの開始を示す要求コードを「VALUE 'BEGIN△△△'」と設定します。トランザクションを開始したあとの処理でも,この内容は変化しません。

OpenTP1から値が返されるデータ領域

●データ名B

ステータスコードが,5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。グローバルトランザクションが開始して,CBLDCTRN('BEGIN ')を呼び出したプロセスはその範囲に含まれています。

00905

サービスプログラムは正しくないコンテクスト(例えば,すでにトランザクション内にいる)からサービス要求されました。または,実行環境がジャーナルファイルレスモードのため,トランザクションは開始できませんでした。

00906

リソースマネジャ(RM)でエラーが起こりました。トランザクションは開始できませんでした。

00907

トランザクションサービスでエラーが起こったので,トランザクションは開始できませんでした。トランザクションサービス定義のtrn_tran_process_countオペランドの指定値が不足している可能性があります。

このステータスコードが戻った場合は,再び実行すれば成功する可能性が高いので,再実行してください。

00908

要求コード(データ名A)が間違っています。

指定例

01 MISC.
    02 CMD-CODE     PIC X(8).
    02 STATUS-CODE  PIC X(5).
      :
      :
MOVE 'BEGIN' TO CMD-CODE OF MISC.
CALL 'CBLDCTRN' USING MISC.
IF STATUS-CODE OF MISC NOT EQUAL TO '00000' THEN
    MOVE 'CANNOT BEGIN TRANSACTION' TO ERRMSG OF OUT-ERROR-REC
    WRITE OUT-ERROR-REC
END IF.