反映情報編集UOCに抽象データ型を渡す場合,抽象データ型のコンストラクタ関数の入力データは,抽象データ型の属性データとして渡されます。
抽象データ型の属性データは,抽象データ型固有の情報を含んでいるため,反映情報編集UOCでも,抽象データ型のコンストラクタ関数にそのまま反映してください(抽象データ型の更新データを編集及び加工して反映することはできません)。
抽象データ型のニモニックと列データ構造について説明します。
抽象データ型のニモニックを「表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 * |
抽象データ型の列データ構造を次の図に示します。抽象データ型以外の列データ構造については,「図8-4 UDATA_BLKとその関連構造」を参照してください。
図8-5 抽象データ型の列データ構造
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フラグ
|
adtfunc | 1 | unsignedchar | 抽象データ型の反映方式 | 呼出元 | 属性抽象データ型反映方式
|
reserve1 | 3 | char | 予備領域1 | 呼出元 | 予備 |
attr_len | 4 | int | 属性データ長 | 呼出元 | 属性データ長 次の場合は0になります。
|
adtelnum | 4 | int | 抽象データ型継承数 | 呼出元 | 属性のデータ型が抽象データ型の場合に,継承関係にあるデータ型数
|
data_addr | 4 | UNION * | 属性データのアドレス | 呼出元 | 属性データのアドレス(抽出側で入力した抽象データ型のコンストラクタ関数の入力データ)
|
reserve2 | 8 | char | 予備領域2 | 呼出元 | 予備 |
各抽象データ型の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に渡すUCOLUMN_BLKのcollenメンバ(列データ長)には値を設定しません。そのため,抽象データ型を扱うときは,UCOLUMN_BLKのcollenメンバの値を参照しないでください。
図8-6 抽象データ型の列を含む表に対してINSERTを実行するコーディング例