Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引


CBLEELCK('GET ')

〈このページの構成〉

名称

資源の排他

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEELCK' 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で使う資源の排他を指定します。排他の管理は,TP1/EEのトランザクションマネジャで管理するグローバルトランザクション単位で処理されます。

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

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

●データ名A

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

●データ名Z

0を設定します。

●データ名C

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

●データ名D

排他制御モードとして,次のどちらかを設定します。重複して指定することはできません。

VALUE 'PR'

資源を参照します。ほかのUAPには参照だけを許可し,更新を禁止します。

VALUE 'EX'

資源を更新します。ほかのUAPには参照と更新の両方を禁止します。

●データ名E

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

VALUE 'WAIT△△'

ほかのUAPで使用する資源と競合した場合,資源を排他できるまで待ちます。

VALUE 'NOWAIT'

ほかのUAPで使用する資源と競合した場合,エラーリターンします。

●データ名F

このプログラムで指定する排他をテストとするかどうかを設定します。次に示すどちらかの値を設定します。

VALUE 'TEST△△'

排他をテストとします。CBLEELCK('GET ')が正常に終了しても,データ名Cに設定した資源は確保されませんので注意してください。

VALUE 'NOTEST'

排他をテストとしません。CBLEELCK('GET ')が正常に終了した場合,データ名Cに設定した資源は確保されます。

●データ名G

VALUE 'MIGRATE'を設定します。

TP1/EEから値が返されるデータ領域

●データ名B

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

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため,この機能は使用できません。

00005

オフラインバッチプロセスから発行しているため,この機能は使用できません。

00401

データ名に設定した値が間違っています。要求コード(データ名A)が間違っている場合もこのステータスコードが返されます。

00402

この機能は使用できません。

00450

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

00453

排他待ち限界経過時間(トランザクション関連定義のlck_wait_timeoutオペランドの指定値)を超えたため,資源を確保できませんでした。

00454

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

00455

トランザクション処理ではないUAPから指定しています。