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

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

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

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

関数名機能
hde_usendcheck ()
(送信データの判定)
送信データ(更新情報)を受け取って,チェック結果を格納します。ユーザは,チェックする内容を指定して,結果を返します。
<この項の構成>
(1) hde_usendcheck(送信データの判定)
(2) 送信データUOCで使うヘッダファイル

(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-45 送信データUOCのヘッダファイルの一覧」を参照してください。

注※1
更新前データと更新後データの組み合わせの一覧を「表8-42 更新前データと更新後データの組み合わせ」に示します。DATAINFOの並び(配列)については,INSERTのときにはカラムIDでソート,UPDATE,DELETEのときには抽出順になります。
注※2
該当する抽出列の属性がCHAR,又はVARCHARの場合,渡されるデータは該当する抽出列の文字集合となります。

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

データ種別更新前
データ長
更新前
データ
更新後
データ長
更新後
データ
INSERTnバイトデータ-1-1naddr
0バイトデータ-1-10addr
NULLデータ-1-100
非マッピングキーのUPDATEnバイト
データ
から
nバイトデータへ-1-1naddr
0バイトデータへ-1-10addr
NULLデータへ-1-100
0バイト
データ
から
nバイトデータへ-1-1naddr
0バイトデータへ-1-10addr
NULLデータへ-1-100
NULL
データ
から
nバイトデータへ-1-1naddr
0バイトデータへ-1-10addr
NULLデータへ-1-100
マッピングキーのUPDATEnバイト
データ
から
nバイトデータへnaddrnaddr
0バイトデータへnaddr0addr
NULLデータへnaddr00
0バイト
データ
から
nバイトデータへ0addrnaddr
0バイトデータへ0addr0addr
NULLデータへ0addr00
NULL
データ
から
nバイトデータへ00naddr
0バイトデータへ000addr
NULLデータへ0000
DELETEnバイトデータnaddr-1-1
0バイトデータ0addr-1-1
NULLデータ00-1-1
注※
渡されるデータはマッピングキーのデータだけです。可変長データの同値更新,又は非更新の場合,変更前後のデータ情報はすべて「-1」になります。

 

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

表8-43 列データ型の一覧

列データ型ニモニックコード
INTEGERHDE_T_INT0xF1
SMALLINTHDE_T_SINT0xF5
LARGE DECIMALHDE_T_DEC0xE5
FLOATHDE_T_FLT0xE1
DOUBLE PRECISIONHDE_T_DBL0xE1
SMALL FLOATHDE_T_SFLT0xE3
REALHDE_T_REAL0xE3
CHARACTERHDE_T_CHAR0xC5
VARCHARHDE_T_VCHAR0xC1
NCHARHDE_T_NCHAR0xB5
NVARCHARHDE_T_NVCHAR0xB1
MCHARHDE_T_MCHAR0xA5
MVARCHARHDE_T_MVCHAR0xA1
DATEHDE_T_DATE0x71
TIMEHDE_T_TIME0x79
TIMESTAMPHDE_T_TIMESTAMP0x7D
INTERVAL YEAR TO DAYHDE_T_YTD0x65
INTERVAL HOUR TO SECONDHDE_T_HTS0x6F
ADT(抽象データ型)HDE_T_ADT0x83
BLOBHDE_T_BLOB0x93
BINARYHDE_T_BINARY0x91
(c) 戻り値

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

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

表8-44 hde_usendcheck()からの戻り値

状態コードニモニックリターン後の処置
更新情報を送信1HDE_EXT_SEND該当する更新情報を反映システムに送信します。
更新情報を送信しない0HDE_EXT_NOSEND該当する更新情報は反映システムに送信しません。
送信処理を停止-1HDE_EXT_STOP反映システムへの送信処理を停止します。この値が返ったときは,送信プロセスからエラーメッセージKFRB02052-Eが出力されて,該当する送信先に対する処理を中止します。
送信処理を停止した理由は,hde_usendcheck()のstatusに返ります。
上記以外

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

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

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

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

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

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

ファイル名内容送信データUOCに関連するメンバ
hde_usend.h送信データUOCの構造体及びニモニックコード・HDE_EXT_ENVINFO
・HDE_EXT_TBLINFO
・HDE_EXT_COLINFO
・HDE_EXT_DATAINFO
・データ型のニモニック
・データアドレスのニモニック