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

[目次][用語][索引][前へ][次へ]

8.1.5 反映情報編集UOCでの抽象データ型の扱い

反映情報編集UOCに抽象データ型を渡す場合,抽象データ型のコンストラクタ関数の入力データは,抽象データ型の属性データとして渡されます。

抽象データ型の属性データは,抽象データ型固有の情報を含んでいるため,反映情報編集UOCでも,抽象データ型のコンストラクタ関数にそのまま反映してください(抽象データ型の更新データを編集及び加工して反映することはできません)。

<この項の構成>
(1) 抽象データ型のニモニックと列データ構造
(2) 抽象データ型を扱うときの注意事項
(3) 抽象データ型を扱う反映情報編集UOCのサンプル

(1) 抽象データ型のニモニックと列データ構造

抽象データ型のニモニックと列データ構造について説明します。

(a) 抽象データ型のニモニック

抽象データ型のニモニックを「表8-16 列データ型のニモニック(UCOLUMN_BLK.coltype)」と「表8-17 データアドレスのニモニック(UCOLUMN_BLK.dataptr)」に示します。抽象データ型以外のニモニックについては,「表8-10 列データ型のニモニック」と「表8-11データアドレスのニモニック」を参照してください。

表8-16 列データ型のニモニック(UCOLUMN_BLK.coltype)

列データ型 ニモニック データコード
ADT(抽象データ型) HDS_T_ADT (0x83)

表8-17 データアドレスのニモニック(UCOLUMN_BLK.dataptr)

データ型 ニモニック アドレスタイプ
ADT(抽象データ型) HDS_A_ADT UTYPE_BLK *
(b) 抽象データ型の列データ構造

抽象データ型の列データ構造を次の図に示します。抽象データ型以外の列データ構造については,「図8-4 UDATA_BLKとその関連構造」を参照してください。

図8-5 抽象データ型の列データ構造

[図データ]

注※1
UDATA_BLKの内容については,「表8-7 UDATA_BLKの内容」を参照してください。

注※2
UCOLUMN_BLKの内容については,「表8-8 UCOLUMN_BLKの内容」を参照してください。

 

UTYPE_BLK(抽象データ型情報)の内容を次の表に示します。

表8-18 UTYPE_BLK(抽象データ型情報)の内容

メンバ名 長さ(バイト) 属性 領域名 設定者 内容
schema_name 31 char 認可識別子 呼出元 抽象データ型の認可識別子(終端記号を含む)
type_name 31 char 抽象データ型名 呼出元 抽象データ型の型名(終端記号を含む)
reserve1 2 char 予備領域1 呼出元 予備
def_attrnum 4 int 定義属性数 呼出元 抽象データ型の定義属性数
set_attrnum 4 int 属性データ数 呼出元 データ型中に格納されている属性データ数
data_addr 4 UATTR_BLK * UATTR_BLK*アドレス 呼出元 属性管理テーブル(UATTR_BLK)のアドレス
reserve2 8 char 予備領域2 呼出元 予備

 

UATTR_BLK(属性データ情報)の内容を次の表に示します。

表8-19 UATTR_BLK(属性データ情報)の内容

メンバ名 長さ(バイト) 属性 領域名 設定者 内容
attr_name 31 char 属性名 呼出元 属性名(終端記号を含む)
attr_type 1 unsignedchar 属性のデータ型 呼出元 属性のデータ型
データ型のニモニックについては,「表8-10 列データ型のニモニック」を参照してください。
null_flag 1 unsignedchar 属性のNULLフラグ 呼出元 属性のNULLフラグ
  • 0x01:NULL値
  • 0x00:非NULL値
adtfunc 1 unsignedchar 抽象データ型の反映方式 呼出元 属性抽象データ型反映方式
  • 0x01:コンストラクタ関数反映方式
  • 0x00:属性のデータ型が抽象データ型(0x83)以外の場合
reserve1 3 char 予備領域1 呼出元 予備
attr_len 4 int 属性データ長 呼出元 属性データ長
次の場合は0になります。
  • 属性のデータ型が抽象データ型の場合
  • 属性のNULLフラグがNULL値の場合
adtelnum 4 int 抽象データ型継承数 呼出元 属性のデータ型が抽象データ型の場合に,継承関係にあるデータ型数
  • 1:継承なしの場合
  • 0:属性のデータ型が抽象データ型(0x83)以外の場合
data_addr 4 UNION * 属性データのアドレス 呼出元 属性データのアドレス(抽出側で入力した抽象データ型のコンストラクタ関数の入力データ)
  • UTYPE_BLKのアドレス:属性のデータ型が抽象データ型の場合
  • NULL:属性のNULLフラグがNULL値の場合
データアドレスのニモニックについては,「表8-11データアドレスのニモニック」を参照してください。
reserve2 8 char 予備領域2 呼出元 予備
(c) 各抽象データ型のUTYPE_BLKとUATTR_BLKの設定内容

各抽象データ型のUTYPE_BLKの設定内容を「表8-20 各抽象データ型のUTYPE_BLKの設定内容」に,UATTR_BLKの設定内容を「表8-21 各抽象データ型のUATTR_BLKの設定内容」に示します。

表8-20 各抽象データ型のUTYPE_BLKの設定内容

メンバ名 抽象データ型
SGMLTEXT FREEWORD XML
schema_name MASTER MASTER MASTER
type_name SGMLTEXT FREEWORD XML
reserve1 予備 予備 予備
def_attrnum 0 0 0
set_attrnum 1 1 1
data_addr UATTR_BLKのアドレス UATTR_BLKのアドレス UATTR_BLKのアドレス
reserve2 予備 予備 予備

表8-21 各抽象データ型のUATTR_BLKの設定内容

メンバ名 抽象データ型
SGMLTEXT FREEWORD XML
attr_name 未設定 未設定 未設定
attr_type HDS_T_BLOB(0x93) HDS_T_VCHAR(0xC1) HDS_T_BINARY(0x91)
null_flag 0x00 0x00 0x00
adtfunc 0x00 0x00 0x00
reserve1 予備 予備 予備
attr_len 実際の属性データ長
(最大2,147,483,647)
実際の属性データ長
(最大32,000)
実際の属性データ長
(最大2,147,483,647)
adtelnum 0 0 0
data_addr 属性データのアドレス 属性データのアドレス 属性データのアドレス
reserve2 予備 予備 予備

注※
反映情報編集UOCに渡した抽象データ型の属性データを参照する場合は,通常の列データ型と同じようにC言語のキャストをしてください。属性データのアドレスが指すデータ構造を属性データ型にキャストするときは,「表8-15 UOCの列データ型,データ長とC言語での表記の関係」を参照してください。

(2) 抽象データ型を扱うときの注意事項

抽象データ型の場合,反映情報編集UOCに渡すUCOLUMN_BLKのcollenメンバ(列データ長)には値を設定しません。そのため,抽象データ型を扱うときは,UCOLUMN_BLKのcollenメンバの値を参照しないでください。

(3) 抽象データ型を扱う反映情報編集UOCのサンプル

抽出対象表及び反映対象表の構成
抽出対象表の構成を次の図に示します。反映対象表も同じ構成になります。
[図データ]

コーディング例
SGMLTEXT型,FREEWORD型,及びXML型の列を含む表に対してINSERTを実行するコーディング例を次の図に示します。

図8-6 抽象データ型の列を含む表に対してINSERTを実行するコーディング例

[図データ]
[図データ]