Hitachi

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


dc_tam_open

〈このページの構成〉

名称

TAMテーブルのオープン

形式

ANSI C ,C++の形式

#include <dctam.h>
DCLONG  dc_tam_open(char *tblname,DCLONG flags)

K&R版 C の形式

#include <dctam.h>
DCLONG  dc_tam_open(tblname,flags)
char        *tblname;
DCLONG      flags;

機能

TAMテーブルをオープンします。dc_tam_open関数は,トランザクション内でもトランザクション外でも呼び出せます。

トランザクション内で呼び出して,排他種別にテーブル排他を設定した場合,更新排他でテーブル排他を確保します。

dc_tam_open関数がエラーリターンした場合は,この関数内で確保した資源はすべて解放して,関数を呼び出す前の状態に戻ります。

UAPで値を設定する引数

●tblname

オープンするTAMテーブル名を設定します。TAMテーブル名は32文字以内で設定して,文字列の最後にはヌル文字を付けてください。

●flags

テーブル排他を掛けるかレコード排他を掛けるかを,次の形式で設定します。

〔{DCTAM_TBL_EXCLUSIVE〔|{DCTAM_WAIT|DCTAM_NOWAIT}〕|DCTAM_REC_EXCLUSIVE}〕
  • フラグ1

    テーブル排他の場合は,更新排他で確保します。レコード排他の場合は,レコードのアクセス関数内で排他を確保します。

    排他解除待ち種別は重複して設定できません。dc_tam_open関数をトランザクション外で呼び出す場合は,テーブル排他は設定できません。

    このフラグの設定を省略した場合は,DCTAM_REC_EXCLUSIVEが仮定されます。

    DCTAM_TBL_EXCLUSIVE…テーブル排他

    DCTAM_REC_EXCLUSIVE…レコード排他

  • フラグ2

    テーブル排他の場合は,資源の競合が起こったときの排他解除待ち種別を設定します。排他解除種別は重複して設定できません。

    このフラグの設定を省略した場合は,DCTAM_NOWAITが仮定されます。

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

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

flagsに設定する値と,設定内容の関係について,次に示します。

フラグ1※1

フラグ2※2

flagsの設定内容

TBL_EXCLUSIVE

WAIT

テーブル排他,排他エラー時は解除待ち

NOWAIT

テーブル排他,排他エラー時はエラーリターン

REC_EXCLUSIVE

×

レコード排他

(凡例)

×:設定できません。

注※1

省略した場合は,REC_EXCLUSIVEが仮定されます。

注※2

省略した場合は,NOWAITが仮定されます。

リターン値

リターン値

リターン値(数値)

意味

正の整数

テーブル記述子を示します。

DCTAMER_PARAM_TBL

-1701

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

DCTAMER_PARAM_FLG

-1708

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

DCTAMER_NOTTAM

-1709

tblnameに設定したテーブルはTAMテーブルではありません。

DCTAMER_UNDEF

-1710

TAMテーブルが定義されていません。

DCTAMER_TAMEND

-1720

TAMサービスが終了中です。

DCTAMER_PROTO

-1721

TAMテーブルへアクセスする順序が間違っています。

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

または,UAPにトランザクション制御用オブジェクトファイルをリンケージしていません。

関数を呼び出したUAPのユーザサービス定義に,トランザクション属性なし(atomic_update=N)を指定しています。

DCTAMER_NOLOAD

-1724

TAMテーブルがロードされていません。

DCTAMER_OPENED

-1725

TAMテーブルがオープン済みです。

DCTAMER_LOGHLD

-1727

TAMテーブルが論理閉塞状態です。

DCTAMER_OBSHLD

-1728

TAMテーブルが障害閉塞状態です。

DCTAMER_LOCK

-1736

排他エラーが起こりました。flagsにDCTAM_WAITを設定した場合,ロックサービス定義で指定した待ち時間のタイムアウトのため,資源を確保できませんでした。

DCTAMER_DLOCK

-1737

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

DCTAMER_TBLVR

-1760

UAPが,現在稼働しているTAMテーブルでは動作できないバージョンのTAMライブラリと結合されています。

DCTAMER_FLSVR

-1761

UAPが,現在稼働しているOpenTP1ファイルサービスでは動作できないバージョンのTAMライブラリと結合されています。

DCTAMER_TAMVR

-1762

UAPが,現在稼働しているTAMサービスでは動作できないバージョンのTAMライブラリと結合されています。

DCTAMER_RECOBS

-1764

レコードが破壊されています。

DCTAMER_TRNNUM

-1765

TAMサービスで管理できるトランザクション数を超えています。

DCTAMER_OPENNUM

-1766

キャラクタ型スペシャルファイルのオープン数の制限値を超えています。

DCTAMER_ACCESSS

-1767

スペシャルファイルに対するアクセス権がありません。

DCTAMER_ACCESSF

-1768

TAMファイルに対するアクセス権がありません。

DCTAMER_MEMORY

-1769

メモリが不足しました。

DCTAMER_IO

-1770

入出力エラーが起こりました。

DCTAMER_TMERR

-1771

トランザクションサービスでエラーが起こりました。

DCTAMER_NO_ACL

-1772

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