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_ADTUTYPE_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_name31char認可識別子呼出元抽象データ型の認可識別子(終端記号を含む)
type_name31char抽象データ型名呼出元抽象データ型の型名(終端記号を含む)
reserve12char予備領域1呼出元予備
def_attrnum4int定義属性数呼出元抽象データ型の定義属性数
set_attrnum4int属性データ数呼出元データ型中に格納されている属性データ数
data_addr4UATTR_BLK *UATTR_BLK*アドレス呼出元属性管理テーブル(UATTR_BLK)のアドレス
reserve28char予備領域2呼出元予備

 

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

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

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

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

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

メンバ名抽象データ型
SGMLTEXTFREEWORDXML
schema_nameMASTERMASTERMASTER
type_nameSGMLTEXTFREEWORDXML
reserve1予備予備予備
def_attrnum000
set_attrnum111
data_addrUATTR_BLKのアドレスUATTR_BLKのアドレスUATTR_BLKのアドレス
reserve2予備予備予備

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

メンバ名抽象データ型
SGMLTEXTFREEWORDXML
attr_name未設定未設定未設定
attr_typeHDS_T_BLOB(0x93)HDS_T_VCHAR(0xC1)HDS_T_BINARY(0x91)
null_flag0x000x000x00
adtfunc0x000x000x00
reserve1予備予備予備
attr_len実際の属性データ長
(最大2,147,483,647)
実際の属性データ長
(最大32,000)
実際の属性データ長
(最大2,147,483,647)
adtelnum000
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を実行するコーディング例

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