Hitachi

HiRDB データ連動機能 HiRDB Datareplicator Version 10


8.3.4 送信データUOCで使う関数の文法

送信データUOCは,C言語でプログラミングします。抽出側Datareplicatorには,送信データUOCを作成するときに使う関数を備えています。

送信データUOCで使える関数名と機能の概要を次の表に示します。

表8‒34 送信データUOCで使える関数と機能の概要

関数名

機能

hde_usendcheck ()

(送信データの判定)

送信データ(更新情報)を受け取って,チェック結果を格納します。ユーザは,チェックする内容を指定して,結果を返します。

〈この項の構成〉

(1) hde_usendcheck(送信データの判定)

送信データUOCで使う関数は,hde_usendcheck()です。一つの抽出側Datareplicatorシステム内に1個のUOC関数を作成できます。

(a) 関数の形式

#include<hde_usend.h>
 int  hde_usendcheck(
 HDE_EXT_ENVINFO  *envinfo,  /*(IN) 送信環境情報ブロック*/
 HDE_EXT_TBLINFO  *tblinfo,    /*(IN) 抽出表情報ブロック  */
 HDE_EXT_COLINFO  *colinfo,   /*(IN) 抽出データ情報ブロック*/
 int                   *status ); /*(OUT) 送信UOCステータス */

(b) パラメタの説明

パラメタの内容を次に示します。

関数の構造体は,送信データUOCのヘッダファイルで定義しています。構造体の設定者が呼び出し元の領域は,更新しないでください。ヘッダファイルについては,「表8-42 送信データUOCのヘッダファイルの一覧」を参照してください。

  • HDE_EXT_ENVINFO

    送信データUOCの環境情報を格納するブロックです。

    HDE_EXT_ENVINFOの内容を次の表に示します。

    表8‒35  HDE_EXT_ENVINFOの内容

    メンバ名

    長さ(バイト)

    属性

    領域名

    設定者

    内容

    sendid

    9

    char

    送信先識別子

    呼び出し元

    該当する更新情報の送信先を示す識別子(NULLで終了)

    hdeid

    1

    unsigned char

    抽出側Datareplicator識別子

    呼び出し元

    抽出システム定義hdeidオペランドの指定値

    識別子2文字は,1バイトで表現しています。

    (例)c1 → 0xC1

    hdsid

    1

    unsigned char

    反映システム識別子

    呼び出し元

    送信環境定義sendhdsidオペランドの指定値

    識別子2文字は,1バイトで表現しています。

    (例)c1 → 0xC1

    dsid

    1

    unsigned char

    データ連動識別子

    呼び出し元

    送信環境定義dsidオペランド,又は抽出環境定義のdsidオペランドの指定値(送信環境定義dsidオペランドが優先)

    識別子2文字は,1バイトで表現しています。

    (例)c1 → 0xC1

    reserve1

    20

    char

    予備

    呼び出し元

    予備(0x00...00)

  • HDE_EXT_TBLINFO

    HDE_EXT_TBLINFOの内容を次の表に示します。

    表8‒36  HDE_EXT_TBLINFOの内容

    メンバ名

    長さ(バイト)

    属性

    領域名

    設定者

    内容

    tableid

    4

    int

    抽出表ID

    呼び出し元

    該当する更新情報の抽出表ID

    tablename

    31

    char

    抽出表名

    呼び出し元

    該当する更新情報の抽出表名(NULLで終了)

    schemaname

    9

    char

    認可識別子

    呼び出し元

    該当する更新情報の抽出表の認可識別子(NULLで終了)

    exttime

    8

    char

    抽出時間

    呼び出し元

    該当する更新情報の抽出時間

    10進符号なしパック形式(YYYYMMDDhhmmss00)で出力します。

    YYYY:西暦年

    MM:月

    DD:日

    hh:時

    mm:分

    ss:秒

    extkind

    1

    unsigned char

    更新種別

    呼び出し元

    更新したSQL種別

    INSERT:

    HDE_EXT_INSERT (0x01)

    UPDATE:

    HDE_EXT_UPDATE (0x02)

    DELETE:

    HDE_EXT_DELETE (0x03)

    PURGE:

    HDE_EXT_PURGE (0x04)

    apkind

    1

    unsigned char

    ループバック情報

    呼び出し元

    ループバック情報

    0x00:

    UAPからの更新情報

    0x01:

    反映側Datareplicator(hdesqleオペランド)からの更新情報

    reserve1

    11

    char

    予備

    呼び出し元

    予備(0x00...00)

  • HDE_EXT_COLINFO

    HDE_EXT_COLINFOの内容を「表8-37 HDE_EXT_COLINFOの内容」に,HDE_EXT_COLINFOから参照できるHDE_EXT_DATAINFOの内容を「表8-38 HDE_EXT_DATAINFOの内容」に示します。

    HDE_EXT_TBLINFOのextkindの値がHDE_EXT_PURGEのときは,HDE_EXT_COLINFOの内容はNULL値になって参照できません。

    表8‒37  HDE_EXT_COLINFOの内容

    メンバ名

    長さ(バイト)

    属性

    領域名

    設定者

    内容

    colnum

    4

    int

    列情報数

    呼び出し元

    該当する更新情報にある抽出列の数(HDE_EXT_DATAINFOのエントリ数)

    *datainfo

    4

    HDE_EXT_DATAINFO *

    抽出データ情報の先頭アドレス

    呼び出し元

    抽出データ情報(HDE_EXT_DATAINFO)の配列の先頭アドレス

    reserve

    8

    char

    予備

    呼び出し元

    予備

    表8‒38  HDE_EXT_DATAINFOの内容

    メンバ名

    長さ(バイト)

    属性

    領域名

    設定者

    内容

    colid

    4

    int

    抽出列ID

    呼び出し元

    抽出列ID

    colname

    31

    char

    抽出列名

    呼び出し元

    抽出列名(NULLで終了)

    coltype

    1

    unsigned char

    列データ型

    呼び出し元

    抽出列のデータ型

    列データ型の一覧については,「表8-40 列データ型の一覧」を参照してください。

    colopt

    1

    unsigned char

    列オプション

    呼び出し元

    抽出列のオプション

    マッピングキー:

    HDE_EXT_MAPPINGKEY (0x01)

    繰返し列:

    HDE_EXT_MCOL (0x02)

    charset

    1

    unsigned char

    文字集合種別

    呼び出し元

    該当する列の文字集合種別

    文字集合指定なし:

    HDE_CSET_DEFAULT 0x00

    文字集合指定あり(EBCDIK):

    HDE_CSET_EBCDIK 0x01

    reserve1

    2

    char

    予備

    呼び出し元

    予備(0x00...00)

    bf_datalen

    4

    int

    更新前の列データ長※1

    呼び出し元

    抽出列の更新前の列データ長

    0:

    0バイトデータ,又はNULL値を示します。

    −1:

    更新前の列データが未使用であることを示します。

    bf_dataptr

    4

    union※2

    更新前の列データ※1

    呼び出し元

    抽出列の更新前の列データへの先頭アドレス

    0:

    NULL値を示します。

    −1:

    更新前の列データが未使用であることを示します。

    af_datalen

    4

    int

    更新後の列データ長※1

    呼び出し元

    抽出列の更新後の列データ長

    0:

    0バイトデータ,又はNULL値を示します。

    −1:

    更新後の列データが未使用であることを示します。

    af_dataptr

    4

    union※2

    更新後の列データ※1

    呼び出し元

    抽出列の更新後の列データへの先頭アドレス

    0:

    NULL値を示します。

    −1:

    更新後の列データが未使用であることを示します。

    precision

    2

    short

    精度

    呼び出し元

    coltypeがHDE_T_DECの場合に精度(全体のけた数)が設定されます。それ以外の場合には0が設定されます。

    scale

    2

    short

    位取り

    呼び出し元

    coltypeがHDE_T_DECの場合に位取り(小数点以下のけた数)が設定されます。それ以外の場合には0が設定されます。

    sec_preci

    2

    short

    小数秒のけた数

    呼び出し元

    coltypeがHDE_T_TIMESTAMPの場合に小数秒のけた数が設定されます。それ以外の場合には0が設定されます。

    reserve2

    2

    char

    予備

    呼び出し元

    予備(0x00...00)

注※1

更新前データと更新後データの組み合わせの一覧を「表8-39 更新前データと更新後データの組み合わせ」に示します。DATAINFOの並び(配列)については,INSERTのときにはカラムIDでソート,UPDATE,DELETEのときには抽出順になります。

注※2

該当する抽出列の属性がCHAR,又はVARCHARの場合,渡されるデータは該当する抽出列の文字集合となります。

表8‒39 更新前データと更新後データの組み合わせ

データ種別

更新前

データ長

更新前

データ

更新後

データ長

更新後

データ

INSERT

nバイトデータ

−1

−1

n

addr

0バイトデータ

−1

−1

0

addr

NULLデータ

−1

−1

0

0

非マッピングキーのUPDATE

nバイト

データ

から

nバイトデータへ

−1

−1

n

addr

0バイトデータへ

−1

−1

0

addr

NULLデータへ

−1

−1

0

0

0バイト

データ

から

nバイトデータへ

−1

−1

n

addr

0バイトデータへ

−1

−1

0

addr

NULLデータへ

−1

−1

0

0

NULL

データ

から

nバイトデータへ

−1

−1

n

addr

0バイトデータへ

−1

−1

0

addr

NULLデータへ

−1

−1

0

0

マッピングキーのUPDATE

nバイト

データ

から

nバイトデータへ

n

addr

n

addr

0バイトデータへ

n

addr

0

addr

NULLデータへ

n

addr

0

0

0バイト

データ

から

nバイトデータへ

0

addr

n

addr

0バイトデータへ

0

addr

0

addr

NULLデータへ

0

addr

0

0

NULL

データ

から

nバイトデータへ

0

0

n

addr

0バイトデータへ

0

0

0

addr

NULLデータへ

0

0

0

0

DELETE

nバイトデータ

n

addr

−1

−1

0バイトデータ

0

addr

−1

−1

NULLデータ

0

0

−1

−1

注※

渡されるデータはマッピングキーのデータだけです。可変長データの同値更新,又は非更新の場合,変更前後のデータ情報はすべて「−1」になります。

列データ型の一覧を次の表に示します。

表8‒40 列データ型の一覧

列データ型

ニモニック

コード

INTEGER

HDE_T_INT

0xF1

SMALLINT

HDE_T_SINT

0xF5

LARGE DECIMAL

HDE_T_DEC

0xE5

FLOAT

HDE_T_FLT

0xE1

DOUBLE PRECISION

HDE_T_DBL

0xE1

SMALL FLOAT

HDE_T_SFLT

0xE3

REAL

HDE_T_REAL

0xE3

CHARACTER

HDE_T_CHAR

0xC5

VARCHAR

HDE_T_VCHAR

0xC1

NCHAR

HDE_T_NCHAR

0xB5

NVARCHAR

HDE_T_NVCHAR

0xB1

MCHAR

HDE_T_MCHAR

0xA5

MVARCHAR

HDE_T_MVCHAR

0xA1

DATE

HDE_T_DATE

0x71

TIME

HDE_T_TIME

0x79

TIMESTAMP

HDE_T_TIMESTAMP

0x7D

INTERVAL YEAR TO DAY

HDE_T_YTD

0x65

INTERVAL HOUR TO SECOND

HDE_T_HTS

0x6F

ADT(抽象データ型)

HDE_T_ADT

0x83

BLOB

HDE_T_BLOB

0x93

BINARY

HDE_T_BINARY

0x91

  • int *status

    UOCの状態コードを示します。UOC内でエラーが起こったときの状態を表示するために使います。関数の呼び出し時は,0で初期化して渡されます。

    ここに設定されたコードは,戻り値がHDE_EXT_SEND(1),HDE_EXT_NOSEND(0)以外のときに出力されるエラーメッセージKFRB02052-Eの埋字として表示されますが,設定された値は送信プロセスの動作には影響しません。

(c) 戻り値

送信データUOC関数では,呼び出し元にリターンするときに戻り値を設定してください。

設定できる送信データUOCからの戻り値を次の表に示します。

表8‒41 hde_usendcheck()からの戻り値

状態

コード

ニモニック

リターン後の処置

更新情報を送信

1

HDE_EXT_SEND

該当する更新情報を反映システムに送信します。

更新情報を送信しない

0

HDE_EXT_NOSEND

該当する更新情報は反映システムに送信しません。

送信処理を停止

−1

HDE_EXT_STOP

反映システムへの送信処理を停止します。この値が返ったときは,送信プロセスからエラーメッセージKFRB02052-Eが出力されて,該当する送信先に対する処理を中止します。

送信処理を停止した理由は,hde_usendcheck()のstatusに返ります。

上記以外

(2) 送信データUOCで使うヘッダファイル

送信データUOCで使うヘッダファイルは,次に示すディレクトリに格納してあります。

UNIX版の場合:/opt/hirdbds/include/

Windows版の場合:Datareplicatorをインストールしたディレクトリ\include\

送信データUOCのヘッダファイルを次の表に示します。

表8‒42 送信データUOCのヘッダファイルの一覧

ファイル名

内容

送信データUOCに関連するメンバ

hde_usend.h

送信データUOCの構造体及びニモニックコード

・HDE_EXT_ENVINFO

・HDE_EXT_TBLINFO

・HDE_EXT_COLINFO

・HDE_EXT_DATAINFO

・データ型のニモニック

・データアドレスのニモニック