Hitachi

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


CBLDCLCK('GET ')

〈このページの構成〉

名称

資源の排他

形式

PROCEDURE DIVISIONの指定

CALL  'CBLDCLCK' USING 一意名1 一意名2

DATA DIVISIONの指定

01 一意名1.
   02 データ名A  PIC X(8) VALUE 'GET     '.
   02 データ名B  PIC X(5).
   02 FILLER    PIC X(3).
   02 データ名Z  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
   02 データ名C  PIC X(16).
   02 データ名D  PIC X(2).
   02 FILLER    PIC X(6).
   02 データ名E  PIC X(6).
   02 FILLER    PIC X(2).
   02 データ名F  PIC X(6).
   02 FILLER    PIC X(2).
   02 データ名G  PIC X(7) VALUE 'MIGRATE'.
   02 FILLER    PIC X(1).

機能

UAPで使う資源の排他を指定します。データ名Cで示す資源を排他します。排他の管理は,OpenTP1のトランザクションマネジャで管理するグローバルトランザクション単位で処理されます。

ここで指定した排他は,排他を解除するCOBOL-UAP作成用プログラム(全資源の排他を解除,または資源名称を指定して排他を解除)を呼び出すか,CBLDCLCK('GET ')を呼び出したグローバルトランザクションの同期点取得後に解除されます。

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

●データ名A

資源の排他を示す要求コードを「VALUE 'GET△△△△△'」と設定します。

●データ名Z

0を設定します。

●データ名C

排他する資源の名称を16バイトの英数字文字列で設定します。OpenTP1のロックサービスはここで設定した資源名称を基に排他制御します。

ロックサービスでは,文字列の内容についてはチェックしません。論理的に正しい名称を設定してください。資源名称に英数字以外の値を使った場合は,デッドロック情報,タイムアウト情報,およびlcklsコマンドの表示が乱れることがあります。

●データ名D

排他制御モードを,次に示すどちらかで設定します。

VALUE 'PR'…参照します。ほかのUAPからの参照だけを許可し,更新は禁止します。

VALUE 'EX'…更新します。ほかのUAPからの参照・更新を禁止します。

●データ名E

ほかのUAPと資源を競合した場合に,エラーリターンするか,資源の解放待ちとするかを設定します。次に示すどちらかで設定します。

VALUE 'WAIT△△'…資源が競合した場合,資源の解放待ちにします。

VALUE 'NOWAIT'…資源が競合した場合,エラーリターンします。

●データ名F

ここで指定する排他をテストとするかどうかを設定します。次に示すどちらかを設定します。

VALUE 'TEST△△'…この排他はテストです。

VALUE 'NOTEST'…この排他はテストではありません。

テストを指定した場合は,CBLDCLCK('GET ')が正常に終了しても,データ名Cに設定した資源は確保されていないので注意してください。

●データ名G

「VALUE 'MIGRATE'」を設定します。

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

●データ名B

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

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00401

データ名に設定した値が間違っています。

要求コード(データ名A)が間違っている場合も含みます。

00450

ほかのUAPが,指定した資源を使っています。

00452

デッドロックが起こりました。

00453

OpenTP1のロックサービス定義で指定した待ち時間のタイムアウトで,資源を確保できませんでした。

00454

排他制御用のテーブルが不足しています。

00455

トランザクション処理でないUAPから呼び出しています。

00457

OpenTP1のライブラリとロックサービスのバージョンが一致していません。