Hitachi

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


ee_lck_get

〈このページの構成〉

名称

資源の排他

形式

ANSI C,C++の形式

#include <eelck.h>
int ee_lck_get(char *name, EELONG lockmode, EELONG ownerflag,
               EELONG flags)

機能

UAPで使用する資源の排他を指定します。排他の管理は,TP1/EEのトランザクションマネジャで管理するグローバルトランザクション単位で処理されます。

ここで指定した排他は,排他を解除する関数(ee_lck_release_all関数またはee_lck_release_byname関数)を呼び出すか,またはee_lck_get関数を呼び出したグローバルトランザクションの同期点取得後に解除されます。

UAPで値を設定する引数

●name

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

●lockmode

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

EELCK_PR

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

EELCK_EX

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

●ownerflag

EELCK_OWNER_MIGRATEを設定します。

●flags

資源の排他に関するフラグを設定します。設定できる値を次に示します。

EELCK_WAIT

ほかのUAPと資源を競合した場合に,資源を排他できるまで待ちます。競合した場合にこのフラグが設定されていないときは,エラーリターンします。EELCK_TESTと同時に設定したときは,このフラグの設定は無効となります。

EELCK_TEST

資源が使えるかどうかをテストする場合に設定します。このフラグを設定したときは,ee_lck_get関数が正常終了しても,nameに設定した資源は確保されていないので注意してください。

EENOFLAGS

フラグを設定しません。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDBPP

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

EECOMER_CNDUOC

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

EECOMER_ENVIRON

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

EELCKER_CONDITION

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

EELCKER_MEMORY

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

EELCKER_OUTOFTRN

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

EELCKER_PARAM

引数に設定した値が間違っています。

EELCKER_TIMOUT

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

EELCKER_WAIT

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