Hitachi

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


dc_dam_open

〈このページの構成〉

名称

論理ファイルのオープン

形式

ANSI C ,C++の形式

#include <dcdam.h>
int  dc_dam_open(char *lfname,DCLONG flags)

K&R版 C の形式

#include <dcdam.h>
int  dc_dam_open(lfname,flags)
char     *lfname;
DCLONG   flags;

機能

論理ファイルをオープンします。

UAPで値を設定する引数

●lfname

オープンするファイルの論理ファイル名を,1〜8バイトの名称で設定します。

●flags

ファイル排他をするかブロック排他をするか,排他エラー時に排他解除待ちをするかどうかを設定します。次の形式で設定します。

{DCDAM_FILE_EXCLUSIVE|DCDAM_BLOCK_EXCLUSIVE
                                〔|{DCDAM_WAIT|DCDAM_NOWAIT}〕}
  • フラグ1

    ファイル排他をするかブロック排他をするかを設定します。

    DCDAM_FILE_EXCLUSIVE…ファイル排他

    DCDAM_BLOCK_EXCLUSIVE…ブロック排他

  • フラグ2

    排他エラーが起こったとき,排他解除待ちをするかどうかを設定します。

    DCDAM_WAIT……排他解除待ちをします。

    DCDAM_NOWAIT…待たないで,エラーリターンします。

どちらも設定しなかった場合は,DCDAM_NOWAITが仮定されます。

flagsの設定方法

flagsに設定できる値は,使うDAMファイルが回復対象かどうかで異なります。

回復対象か回復対象外かに関係なく,フラグ1にファイル排他を設定するとファイル全体に排他を掛けるため,dc_dam_read関数,dc_dam_write関数で排他エラーは起こりません。そのため,排他解除待ちをするかどうかを設定できません。dc_dam_read関数,dc_dam_write関数の引数に設定した排他解除待ち種別は無視されます。

リターン値

リターン値

リターン値(数値)

意味

0または正の整数

0または正の整数は,ファイル記述子を示します。

DCDAMER_PROTO

-1600

dc_rpc_open関数を呼び出していません。

ユーザサービス定義のatomic_updateオペランドの指定が'N'になっています(回復対象のDAMファイルにアクセスした場合だけリターンされます)。

ユーザサービス定義のatomic_updateオペランドの指定が'N'の場合に,dc_dam_start関数を呼び出していません(回復対象外のDAMファイルにアクセスした場合だけリターンされます)。

次に示すように,UAPを正しくリンケージしていません。

  • DAMサービスの関数でTAMファイルにアクセスする場合に使うライブラリ(-ltdam)を,不当にリンケージしています。

  • トランザクション制御用オブジェクトファイルのリソースマネジャ登録が間違っています。

DAMファイルの排他を,トランザクションの範囲外から指定しています(回復対象のDAMファイルにアクセスした場合だけリターンされます)。

グローバルトランザクション単位の排他制御で,DAMファイルにファイル排他を設定しています(回復対象のDAMファイルにアクセスした場合だけリターンされます)。

DCDAMER_UNDEF

-1601

lfnameに設定した論理ファイル名は定義されていません。

DCDAMER_EXCER

-1602

排他エラーが起こりました。

DCDAMER_SEQER

-1605

ユーザサービス定義のatomic_updateオペランドの指定が'Y'の場合に,dc_dam_start関数を呼び出していません(回復対象外のDAMファイルにアクセスした場合だけリターンされます)。

DCDAMER_NOMEM

-1607

メモリが不足しました。

DCDAMER_OPENED

-1608

lfnameに設定した論理ファイルはオープン済みです。

DCDAMER_PARAM_LFNAME

-1610

論理ファイル名に設定した値が間違っています。

DCDAMER_PARAM_FLAGS

-1611

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

DCDAMER_LHOLD

-1621

lfnameに設定したファイルは論理閉塞されています。

DCDAMER_OHOLD

-1622

lfnameに設定したファイルは障害閉塞されています。

DCDAMER_OPENNUM

-1627

キャラクタ型スペシャルファイルのオープン数が最大値を超えました。

DCDAMER_ACCESS

-1628

キャラクタ型スペシャルファイルにはアクセス権がありません。

DCDAMER_TMERR

-1629

トランザクションサービスでエラーが起こりました(回復対象のDAMファイルにアクセスした場合だけリターンされます)。

DCDAMER_DLOCK

-1642

デッドロックが起こりました(回復対象外のDAMファイルにアクセスした場合だけリターンされます)。

DCDAMER_TIMOUT

-1643

ロックサービス定義で指定した待ち時間のタイムアウトのため資源を確保できませんでした(回復対象外のDAMファイルにアクセスした場合だけリターンされます)。

DCDAMER_LCKOV

-1645

最大同時排他要求数を超えて,排他を要求しています。

DCDAMER_NO_ACL

-1646

オープンしようとしたDAMファイルは,セキュリティ機能で保護されています。該当するファイルに対するACLがありません。