Hitachi

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


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

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

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

〈この項の構成〉

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

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

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

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

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

列データ型

ニモニック

データコード

ADT(抽象データ型)

HDS_T_ADT

(0x83)

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

データ型

ニモニック

アドレスタイプ

ADT(抽象データ型)

HDS_A_ADT

UTYPE_BLK *

(b) 抽象データ型の列データ構造

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

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

[図データ]

注※1

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

注※2

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

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

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

メンバ名

長さ(バイト)

属性

領域名

設定者

内容

schema_name

31

char

認可識別子

呼出元

抽象データ型の認可識別子(終端記号を含む)

type_name

31

char

抽象データ型名

呼出元

抽象データ型の型名(終端記号を含む)

reserve1

2

char

予備領域1

呼出元

予備

def_attrnum

4

int

定義属性数

呼出元

抽象データ型の定義属性数

set_attrnum

4

int

属性データ数

呼出元

データ型中に格納されている属性データ数

data_addr

8

UATTR_BLK *

UATTR_BLK*アドレス

呼出元

属性管理テーブル(UATTR_BLK)のアドレス

reserve2

8

char

予備領域2

呼出元

予備

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

表8‒18 UATTR_BLK(属性データ情報)の内容

メンバ名

長さ(バイト)

属性

領域名

設定者

内容

attr_name

31

char

属性名

呼出元

属性名(終端記号を含む)

attr_type

1

unsignedchar

属性のデータ型

呼出元

属性のデータ型

データ型のニモニックについては,「表8-9 列データ型のニモニック」を参照してください。

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

8

UNION *

属性データのアドレス

呼出元

属性データのアドレス(抽出側で入力した抽象データ型のコンストラクタ関数の入力データ)

  • UTYPE_BLKのアドレス:属性のデータ型が抽象データ型の場合

  • NULL:属性のNULLフラグがNULL値の場合

データアドレスのニモニックについては,「表8-10データアドレスのニモニック」を参照してください。

reserve2

8

char

予備領域2

呼出元

予備

(c) 各抽象データ型のUTYPE_BLKとUATTR_BLKの設定内容

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

表8‒19 各抽象データ型の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‒20 各抽象データ型の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-14 UOCの列データ型,データ長とC言語での表記の関係」を参照してください。

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

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

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

抽出対象表及び反映対象表の構成

抽出対象表の構成を次の図に示します。反映対象表も同じ構成になります。

[図データ]

コーディング例

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

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

[図データ]

[図データ]