Hitachi

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


dc_tam_read_cancel

〈このページの構成〉

名称

TAMテーブルのレコードの入力取り消し

形式

ANSI C ,C++の形式

#include <dctam.h>
int  dc_tam_read_cancel(DCLONG tblid,struct DC_TAMKEY *keyadr,
                        int keyno,DCLONG flags)

K&R版 C の形式

#include <dctam.h>
int dc_tam_read_cancel(tblid,keyadr,keyno,flags)
DCLONG           tblid;
struct DC_TAMKEY *keyadr;
int              keyno;
DCLONG           flags;

機能

トランザクション内で,dc_tam_read関数を使って排他を掛けた参照目的の入力,および更新目的の入力を取り消し,レコード排他を解除します。

更新,または追加済みのレコードには,排他を掛けた参照目的の入力を取り消すことはできません。また,dc_tam_rewrite関数で更新したレコードの,更新目的の入力の取り消しはできません。

更新,または追加済みのレコード,およびテーブル排他でオープンした,TAMテーブル上のレコードに対する更新目的の入力の取り消しでは,排他を解除しません。

dc_tam_read_cancel関数で入力を取り消したあとも,トランザクションが終了するまでは,入力したTAMテーブルに対して,ほかのトランザクションからレコードの追加,削除はできません。

dc_tam_read_cancel関数がエラーリターンした場合,この関数で解放した資源は再確保しないで,関数を呼び出す前の状態には戻しません。また,複数のレコードを設定してアクセスを要求した場合,それらのレコードのうち,一つでもエラーが発生したら処理を中断して,エラーリターンします。

UAPで値を設定する引数

●tblid

レコードの入力を取り消すTAMテーブルの,テーブル記述子を設定します。テーブル記述子はdc_tam_open関数で返された値です。

●keyadr

入力を取り消すレコードの,キー値のアドレスを持つ構造体のアドレスを設定します。構造体の形式は次のとおりです。

struct DC_TAMKEY {
                  char *keyname;
                  };
  • keyname

    キー値のアドレスを設定します。キー値は,入力を取り消すレコードのキー領域の長さで設定します。

●keyno

要求レコード数(keyadrで設定する構造体の数)を設定します。

●flag

DCNOFLAGSを設定します。

リターン値

リターン値

リターン値(数値)

意味

DC_OK

0

TAMテーブルのレコードの検索を取り消して,レコード排他を正常に解除しました。

DCTAMER_PARAM_TID

-1700

tblidに設定したテーブル記述子が間違っています。

DCTAMER_PARAM_KEY

-1702

keyadrに設定したキー値が間違っています。

DCTAMER_PARAM_KNO

-1703

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

DCTAMER_PARAM_FLG

-1708

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

DCTAMER_NOTTAM

-1709

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

DCTAMER_TAMEND

-1720

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

DCTAMER_PROTO

-1721

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

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

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

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

DCTAMER_RMTBL

-1723

TAMテーブルが削除されています。

DCTAMER_NOLOAD

-1724

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

DCTAMER_NOOPEN

-1726

TAMテーブルがオープン状態ではありません。

DCTAMER_LOGHLD

-1727

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

DCTAMER_OBSHLD

-1728

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

DCTAMER_NOREC

-1731

指定されたレコードは存在しません。

DCTAMER_SEQENCE

-1732

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

DCTAMER_EXWRITE

-1733

tblidに設定したテーブル記述子はdc_tam_write関数で更新または追加したレコードです。

DCTAMER_EXREWRT

-1734

tblidに設定したテーブル記述子は,すでにdc_tam_rewrite関数で更新済みです。

DCTAMER_TBLVR

-1760

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

DCTAMER_FLSVR

-1761

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

DCTAMER_TRNNUM

-1765

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

DCTAMER_OPENNUM

-1766

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

DCTAMER_ACCESSS

-1767

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

DCTAMER_ACCESSF

-1768

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

DCTAMER_MEMORY

-1769

メモリが不足しました。

DCTAMER_IO

-1770

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

DCTAMER_TMERR

-1771

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