dc_lck_get

名称

資源の排他

形式

ANSI C ,C++の形式

#include <dclck.h>
int  dc_lck_get(char *name,DCLONG lockmode,DCLONG ownerflag,
               DCLONG flags)

K&R版 C の形式

#include <dclck.h>
int  dc_lck_get(name,lockmode,ownerflag,flags)
char      *name;
DCLONG    lockmode;
DCLONG    ownerflag;
DCLONG    flags;

機能

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

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

UAPで値を設定する引数

●name

排他する資源の名称を,16バイトの英数字文字列で設定します。ここで設定した資源名称を基に,ロックサービスで排他を管理します。16バイト未満で,ヌル文字が出た場合は,そこまでの値を資源名称と見なします。16バイトを超えた値が設定された場合は,16バイト目までを資源名称と見なして,超えた部分を切り捨てます。

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

●lockmode

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

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

●ownerflag

DCLCK_OWNER_MIGRATEを設定します。

●flags

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

DCLCK_WAIT
ほかのUAPとの資源を競合した場合に,資源の解放待ちにします。競合した場合にこのフラグが設定されてないときは,エラーリターンします。
DCLCK_TEST
資源が使えるかどうかをテストするときに設定します。このフラグを設定したときは,dc_lck_get関数が正常終了しても,nameに設定した資源は確保されていないので注意してください。
DCNOFLAGS
フラグを設定しません。

リターン値

リターン値リターン値(数値)意味
DC_OK0正常に終了しました。
DCLCKER_PARAM-401引数に設定した値が間違っています。
DCLCKER_WAIT-450ほかのUAPが,nameに名称を設定した資源を使っています。
DCLCKER_DLOCK-452デッドロックが起こりました。
DCLCKER_TIMOUT-453OpenTP1のロックサービス定義で指定した待ち時間のタイムアウトで,資源を確保できませんでした。
DCLCKER_MEMORY-454排他制御用のテーブルが不足しています。
DCLCKER_OUTOFTRN-455トランザクション処理でないUAPから指定しています。
DCLCKER_VERSION-457OpenTP1のライブラリとロックサービスのバージョンが一致していません。