HiRDB データ連動機能 HiRDB Datareplicator Version 8
送信データ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からの戻り値を次の表に示します。
| 状態 | コード | ニモニック | リターン後の処置 |
|---|---|---|---|
| 更新情報を送信 | 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 ・データ型のニモニック ・データアドレスのニモニック |
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.