送信データUOCは,C言語でプログラミングします。抽出側Datareplicatorには,送信データUOCを作成するときに使う関数を備えています。
送信データUOCで使える関数名と機能の概要を次の表に示します。
表8-37 送信データUOCで使える関数と機能の概要
関数名 | 機能 |
---|---|
hde_usendcheck () (送信データの判定) | 送信データ(更新情報)を受け取って,チェック結果を格納します。ユーザは,チェックする内容を指定して,結果を返します。 |
送信データUOCで使う関数は,hde_usendcheck()です。一つの抽出側Datareplicatorシステム内に1個のUOC関数を作成できます。
#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ステータス */ |
パラメタの内容を次に示します。
関数の構造体は,送信データUOCのヘッダファイルで定義しています。構造体の設定者が呼び出し元の領域は,更新しないでください。ヘッダファイルについては,「表8-45 送信データUOCのヘッダファイルの一覧」を参照してください。
表8-38 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) |
表8-39 HDE_EXT_TBLINFOの内容
メンバ名 | 長さ(バイト) | 属性 | 領域名 | 設定者 | 内容 |
---|---|---|---|---|---|
tableid | 4 | long | 抽出表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種別
|
apkind | 1 | unsigned char | ループバック情報 | 呼び出し元 | ループバック情報
|
reserve1 | 11 | char | 予備 | 呼び出し元 | 予備(0x00...00) |
表8-40 HDE_EXT_COLINFOの内容
メンバ名 | 長さ(バイト) | 属性 | 領域名 | 設定者 | 内容 |
---|---|---|---|---|---|
colnum | 4 | long | 列情報数 | 呼び出し元 | 該当する更新情報にある抽出列の数(HDE_EXT_DATAINFOのエントリ数) |
*datainfo | 4 | HDE_EXT_DATAINFO * | 抽出データ情報の先頭アドレス | 呼び出し元 | 抽出データ情報(HDE_EXT_DATAINFO)の配列の先頭アドレス |
reserve | 8 | char | 予備 | 呼び出し元 | 予備 |
表8-41 HDE_EXT_DATAINFOの内容
メンバ名 | 長さ(バイト) | 属性 | 領域名 | 設定者 | 内容 |
---|---|---|---|---|---|
colid | 4 | long | 抽出列ID | 呼び出し元 | 抽出列ID |
colname | 31 | char | 抽出列名 | 呼び出し元 | 抽出列名(NULLで終了) |
coltype | 1 | unsigned char | 列データ型 | 呼び出し元 | 抽出列のデータ型 列データ型の一覧については,「表8-43 列データ型の一覧」を参照してください。 |
colopt | 1 | unsigned char | 列オプション | 呼び出し元 | 抽出列のオプション
|
charset | 1 | unsigned char | 文字集合種別 | 呼び出し元 | 該当する列の文字集合種別
|
reserve1 | 2 | char | 予備 | 呼び出し元 | 予備(0x00...00) |
bf_datalen | 4 | long | 更新前の列データ長※1 | 呼び出し元 | 抽出列の更新前の列データ長
|
bf_dataptr | 4 | union※2 | 更新前の列データ※1 | 呼び出し元 | 抽出列の更新前の列データへの先頭アドレス
|
af_datalen | 4 | long | 更新後の列データ長※1 | 呼び出し元 | 抽出列の更新後の列データ長
|
af_dataptr | 4 | union※2 | 更新後の列データ※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) |
表8-42 更新前データと更新後データの組み合わせ
データ種別 | 更新前 データ長 | 更新前 データ | 更新後 データ長 | 更新後 データ | ||
---|---|---|---|---|---|---|
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 |
列データ型の一覧を次の表に示します。
表8-43 列データ型の一覧
列データ型 | ニモニック | コード |
---|---|---|
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 |
送信データUOC関数では,呼び出し元にリターンするときに戻り値を設定してください。
設定できる送信データUOCからの戻り値を次の表に示します。
表8-44 hde_usendcheck()からの戻り値
状態 | コード | ニモニック | リターン後の処置 |
---|---|---|---|
更新情報を送信 | 1 | HDE_EXT_SEND | 該当する更新情報を反映システムに送信します。 |
更新情報を送信しない | 0 | HDE_EXT_NOSEND | 該当する更新情報は反映システムに送信しません。 |
送信処理を停止 | -1 | HDE_EXT_STOP | 反映システムへの送信処理を停止します。この値が返ったときは,送信プロセスからエラーメッセージKFRB02052-Eが出力されて,該当する送信先に対する処理を中止します。 送信処理を停止した理由は,hde_usendcheck()のstatusに返ります。 |
上記以外 |
送信データ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 ・データ型のニモニック ・データアドレスのニモニック |