列データ編集UOCは,C言語でプログラミングします。反映側Datareplicatorには,列データ編集UOCを作成するときに使う関数を備えています。
列データ編集UOCで使える関数名と機能の概要を次の表に示します。
表8-26 列データ編集UOCで使える関数と機能の概要
関数名 | 機能 |
---|---|
hds_ucoleditX() (列データの編集) | 列データの編集前のデータを受け取って,編集後のデータを格納します。ユーザは,編集前のデータを編集して,編集後のデータを格納します。 |
列データ編集UOCで使う関数は,hds_ucoleditX(Xは1~8)です。一つのDatareplicatorシステム内に8個のUOC関数を作成できます。
#include<hds_ucommon.h> #include<hds_ureflect.h> int hds_ucoleditX(UCOLENV_BLK *列データ編集インタフェース環境ブロック, UCOLUMN_BLK *編集前反映列情報, UCOLUMN_BLK *編集後反映列情報, long *ステータス); |
パラメタの内容を次に示します。
関数の構造体は,列データ編集UOCのヘッダファイルで定義しています。構造体の設定者が呼び出し元の領域は,更新しないでください。ヘッダファイルについては,「表8-33 列データ編集UOCで使うヘッダファイルの一覧」を参照してください。
表8-27 UCOLENV_BLKの内容
メンバ名 | 長さ(バイト) | 属性 | 領域名 | 設定者 | 内容 |
---|---|---|---|---|---|
interface_blk | 56 | UINTERFACE_BLK | インタフェースブロック | 呼び出し元 | 反映システム定義の情報 |
reflect_blk | 96 | UREFLECT_BLK | 反映制御ブロック | 呼び出し元 | 反映データの抽出側DB更新情報 |
auth_id | 8 | char | 認可識別子 | 呼び出し元 | 反映側DB反映時の認可識別子 |
tbl_id | 30 | char | 表識別子 | 呼び出し元 | 反映側DB反映時の表識別子 |
reserve | 2 | char | 予備 | 呼び出し元 | - |
表8-28 UINTERFACE_BLKの内容
メンバ名 | 長さ(バイト) | 属性 | 領域名 | 設定者 | 内容 |
---|---|---|---|---|---|
auth_id | 8 | char | 認可識別子 | 呼び出し元 | 反映システム定義で指定した接続認可識別子 |
password | 30 | char | パスワード | 呼び出し元 | 反映システム定義で指定したパスワード |
exsysid | 2 | char | 抽出側Datareplicator識別子 | 呼び出し元 | 抽出側Datareplicatorの抽出システム定義で指定した抽出側Datareplicator識別子。小文字の16進数字が文字列として設定されます。 XDM/DSとの連動時は,'00'が設定されます。 |
repid1 | 2 | char | 識別子1 | 呼び出し元 | 反映システム定義で指定したデータ連動識別子 |
repid2 | 2 | char | 識別子2 | 呼び出し元 | 反映システム定義で指定した反映側Datareplicator識別子 |
*inherinf1 | 4 | char * | - | - | 列データ編集UOCでは使いません。 |
inherinf2 | 4 | long | - | - | 列データ編集UOCでは使いません。 |
stopinf | 4 | long | - | - | 列データ編集UOCでは使いません。 |
表8-29 UREFLECT_BLKの内容
メンバ名 | 長さ(バイト) | 属性 | 領域名 | 設定者 | 内容 |
---|---|---|---|---|---|
updkind | 8 | char | 更新種別 | 呼び出し元 | 抽出側DBを更新するときの種別。次に種別を示します。
|
auth_id | 30 | char | 認可識別子 | 呼び出し元 | 抽出側DBを更新するときの認可識別子 |
tbl_id | 30 | char | 表識別子 | 呼び出し元 | 抽出側DBを更新するときの表識別子 |
upd_date | 4 | char | 更新日付 | 呼び出し元 | 抽出側DBを更新するときの日付(更新情報をジャーナルに出力した日付)。日付は10進符号なしパック形式(YYYYMMDD)で出力します。
|
upd_time | 4 | char | 更新時刻 | 呼び出し元 | 抽出側DB更新時の時刻(更新情報をジャーナルに出力した時刻)時刻は10進符号なしパック形式(HHMMSSTT)で出力します。
|
uapname | 8 | char | 抽出側のUAP名 | 呼び出し元 | 抽出側DBを更新するときのユーザアプリケーションプログラム名 |
extsysid | 4 | char | 抽出側DBのシステムID | 呼び出し元 |
|
infflag1 | 1 | unsigned char | フラグ1 | 呼び出し元 | 未使用
|
infflag2 | 1 | unsigned char | フラグ2 | 呼び出し元 | 未使用
|
infflag3 | 1 | unsigned char | フラグ3 | 呼び出し元 | 未使用
|
reserve1 | 1 | char | - | - | (境界調整用) |
infflag4 | 4 | long | フラグ4 | 呼び出し元 | 未使用
|
表8-30 UCOLUMN_BLKの内容
メンバ名 | 長さ(バイト) | 属性 | 領域名 | 編集前 設定者 | 編集後 設定者 | 内容 |
---|---|---|---|---|---|---|
colname | 30 | char | 列名 | 呼び出し元 | 呼び出し元 |
|
coltype | 1 | unsigned char | 列タイプ | 呼び出し元 | 呼び出し先 | 編集前反映列情報として,抽出列の列データ型が設定されます。 編集後反映列情報として,編集後の列データ型を設定してください。 反映情報編集インタフェースと同じニモニックを使ってください(ただし,編集後反映列情報には,BLOB,BINARY,UNPACK,及びADT(SGMLTEXT,FREEWORD,XML)データ型は指定できません)。 |
coloption | 1 | unsigned char | 列オプション | 呼び出し元 | 呼び出し先 | 編集前反映列情報として,抽出列の列オプションが設定されます。 編集後反映列情報として,編集後の列オプションを設定してください。 設定される列オプションを次に示します。
|
elementnum | 4 | union | 配列列の有効要素番号 | 呼び出し元 | - | 編集前反映列情報として,列オプションに配列が指定されている場合,配列列の有効要素番号を設定します(編集後反映列情報には設定できません)。 |
mltcolkind | 1 | unsigned char | - | - | - | 列データ編集UOCでは使いません。 |
adtfunc | 1 | unsigned char | ADT列反映方式 | 呼び出し元 | - | 抽象データ型連動方式として,次に示す値が設定されます。
|
charset | 1 | char | 文字集合種別 | 呼び出し元 | - | UOCに渡す列データの文字集合種別が設定されます。 編集前と編集後の文字集合種別は変更しないでください。変更すると,編集後の文字集合種別を無視し,編集前の文字集合として以降の処理を続行します。
|
reserve1 | 1 | char | - | - | - | (境界調整用) |
collen | 4 | long | 列データ長 | 呼び出し元 | 呼び出し先 | 列のデータ長。内容については,「表8-31 列データ長の設定規則」を参照してください。 ただし,列オプションがNULLデータのときは,編集前反映列情報には0を設定します。編集後反映列情報に列オプションとしてNULLデータを設定する場合,データ型に関係なく列データ長を設定する必要はありません。 |
dataptr | 4 | union | データアドレス | 呼び出し元 | - |
|
表8-31 列データ長の設定規則
変換前/変換後 列データ型 | 編集前反映列情報 | 編集後反映列情報 | 備 考 | ||
---|---|---|---|---|---|
設定有無 | 設定内容 | 設定要否 | 設定内容 | ||
NCHAR | 有 | 編集前データ長[文字数] | 要 | 編集後データ長[文字数] | - |
CHAR MCHAR UNPACK | 有 | 編集前データ長[バイト数] | 要 | 編集後データ長[バイト数] | 編集後反映列データ型にUNPACK型は指定できません。 |
NVARCHAR VARCHAR MVARCHAR | 無 | - | 不要 | - | 編集前データは,データエリア内の先頭2バイトに格納されている実長を参照して編集してください。また,編集後データにはデータエリアの先頭2バイトに,編集後データの実長を設定してください。 列データ型がNVARCHARのときは,文字数を設定,VARCHAR,MVARCHARのときは,バイト数を設定してください。 |
DECIMAL | 有 |
| 要 |
| 次の場合,精度の最大値は38となります。
|
TIMESTAMP | 有 |
| 要 |
| pは,位取り(小数部けた数)を表す数値です。 |
上記以外 | 無 | - | 不要 | - | データ長は,HiRDBのデータ形式を参照してください。 |
列データ編集UOC関数をエラーリターンする場合に設定できます。
設定したステータス値は,Datareplicatorに制御が戻った後に,エラーメッセージとともに出力されます。
列データ編集UOC関数では,呼び出し元にリターンするときに戻り値を設定してください。
設定できる列データ編集UOCからの戻り値を次の表に示します。
表8-32 hds_ucoleditX()からの戻り値
状態 | コード | ニモニック | リターン後の処置 |
---|---|---|---|
正常終了 | 0 | HDS_RET_NORM | 反映処理を続行します。 |
エラー検知(継続できるレベル) | 4 | HDS_RET_WARN | 呼び出し元でメッセージを出力し,反映処理を続行します。 |
エラー検知(継続できないレベル) | 0,4以外 | HDS_RET_ERR | 呼び出し元でメッセージを出力し,その後,反映処理は中止します。 |
列データ編集UOCで使うヘッダファイルは,次に示すディレクトリに格納してあります。
UNIX版: /opt/hirdbds/include/
Windows版の場合:Datareplicatorをインストールしたディレクトリ¥include
列データ編集UOCで使うヘッダファイルの一覧を次の表に示します。
表8-33 列データ編集UOCで使うヘッダファイルの一覧
ファイル名 | 内容 | 列データ編集UOCに関連するメンバ |
---|---|---|
hds_ucommon.h | 列データ編集UOCの共通の構造体及びニモニックコード | ・UINTERFACE_BLK ・戻り値のニモニック |
hds_ureflect.h | 列データ編集UOCの構造体及びニモニックコード | ・UCOLENV_BLK ・UREFLECT_BLK ・UREFLECT_BLKで使うニモニック ・UCOLUMN_BLK ・データ型のニモニック ・データアドレスのニモニック |