Hitachi

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


8.1.4 反映情報編集UOCで使う関数の文法

反映情報編集UOCは,C言語を使ってプログラミングします。反映側Datareplicatorには,反映情報編集UOCを作成するときに使う関数を備えています。

反映情報編集UOCで使える関数名と機能の概要を次の表に示します。

表8‒2 反映情報編集UOCで使える関数と機能の概要

関数名

機能

hds_ubegin()

(編集開始指示)

反映情報の編集を開始することを指示します。ユーザは,反映側HiRDBへの接続処理又は環境の初期設定の処理を実行します。

hds_uedit()

(編集・加工指示)

反映情報の編集・加工及び同期点処理を指示します。ユーザは,反映情報を編集・加工してSQLを発行したり一般ファイルへ出力したりします。

hds_uend()

(編集終了指示)

反映情報の編集を終了することを指示します。ユーザは,反映側HiRDBからの切り離し処理又は環境の終了処理を実行します。

〈この項の構成〉

(1) hds_ubegin()(編集開始指示関数)

(a) 関数の形式

#include<hds_ucommon.h>
#include<hds_ureflect.h>
 int hds_ubegin(UINTERFACE_BLK *インタフェースブロック名,
 int *ステータス);

(b) パラメタの説明

  • UINTERFACE_BLK *インタフェースブロック名

    hds_uedit()関数又はhds_uend()関数に情報を引き継ぎたい場合に設定する情報を格納するための領域の名称を指定します。UINTERFACE_BLKは呼び出し元が確保します。インタフェースブロックの内容を次の表に示します。

    表8‒3 インタフェースブロック(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

    8

    char*

    引き継ぎ情報1

    呼び出し先

    hds_uedit()関数とhds_uend()関数に引き継ぐ領域のアドレス

    inherinf2

    4

    int

    引き継ぎ情報2

    呼び出し先

    hds_uedit()関数とhds_uend()関数に引き継ぐ情報

    stopinf

    4

    int

    終了モード

    呼び出し元

    UOC終了時の終了モード

    この領域は,hds_uend()関数の呼び出し時だけ有効です。

    HDS_FLG_NORMAL

    正常終了

    HDS_FLG_FORCE

    強制停止

注1

反映側Datareplicatorでは,UINTERFACE_BLKのヘッダファイルを用意しているので,それを使ってください。ヘッダファイルについては,「表8-13 反映情報編集UOCのヘッダファイルの一覧」を参照してください。

注2

ユーザは,設定者が呼び出し元になっている領域を書き換えないでください。

  • int *ステータス

    編集開始指示関数の中でエラーを検知した場合,ステータスに値を設定できます。ステータスに値を設定すると,呼び出し元であるDatareplicatorからメッセージが出力され,その中にこのステータス値が表示されます。

(c) 戻り値

呼び出し元に戻るときに戻り値を設定します。設定できる戻り値を次の表に示します。

表8‒4 hds_ubegin()からの戻り値

コード

状態

ニモニック

呼ぴ出し元の処置

0

正常終了

HDS_RET_NORM

処理を続行します。

4

軽度(継続できるレベル)のエラー検知

HDS_RET_WARN

メッセージを出力します。処理は続行します。

0,4以外

重度(継続できないレベル)のエラー検知

HDS_RET_ERR

メッセージを出力します。処理は中止し,プロセスを終了します。

(d) 抽出側Datareplicatorを使うときの注意

抽出側Datareplicatorの送信環境定義のnsndidxxxオペランド(xxxは001〜256の整数)に,送信抑止受信元識別子を指定している場合,HiRDBのCONNECT処理の直前に,HiRDBの環境変数である$PDCLTAPNAMEに,hdssqleで始まり抽出側Datareplicator識別子で終わる20バイト以内の文字列を設定してください。

抽出側Datareplicator識別子として設定される文字列は,インタフェースブロック内に設定される文字列と同じです(2バイトの16進数字の文字列)。

(2) hds_uedit()(編集・加工指示関数)

(a) 関数の形式

#include<hds_ucommon.h>
#include<hds_ureflect.h>
 int hds_uedit(UINTERFACE_BLK *インタフェースブロック名,
      UREFLECT_BLK *反映制御ブロック名,
      UDATA_BLK *キー情報ブロック名,
      UDATA_BLK *反映データブロック名,
      int *ステータス);

(b) パラメタの説明

  • UINTERFACE_BLK *インタフェースブロック名

    hds_begin()関数からの情報を引き継ぎたい場合に設定する情報を格納するための領域の名称を指定します。インタフェースブロック名については,「表8-3 インタフェースブロック(UINTERFACE_BLK)の内容」を参照してください。

  • UREFLECT_BLK *反映制御ブロック名

    反映情報の共通情報を格納するための領域の名称を指定します。反映制御ブロックは呼び出し元が確保します。反映制御ブロックの内容を次の表に示します。

    表8‒5 反映制御ブロック(UREFLECT_BLK)の内容

    メンバ名

    長さ(バイト)

    属性

    領域名

    設定者

    内容

    updkind

    8

    char

    更新種別

    呼び出し元

    抽出側DBを更新するときの種別。次に種別を示します。種別を示す文字列は,8バイト固定です。8バイトに満たない部分は,空白で埋められます。

    INSERT

    INSERTを示します。

    UPDATE

    UPDATEを示します。

    DELETE

    DELETEを示します。

    PURGE

    PURGEを示します。

    COMMIT

    COMMITを示します。

    注※

    この値の格納時は,認可識別子以降の項目の値は意味がありません。

    auth_id

    30

    char

    認可識別子

    呼び出し元

    抽出側DBを更新するときの認可識別子

    tbl_id

    30

    char

    表識別子

    呼び出し元

    抽出側DBを更新するときの表識別子

    upd_date

    4

    char

    更新日付

    呼び出し元

    抽出側DBを更新するときの日付(更新情報をジャーナルに出力した日付)。日付は10進符号なしパック形式(YYYYMMDD)で出力します。

    YYYY:西暦年

    MM:月

    DD:日

    upd_time

    4

    char

    更新時刻

    呼び出し元

    抽出側DB更新時の時刻(更新情報をジャーナルに出力した時刻)時刻は10進符号なしパック形式(HHMMSSTT)で出力します。

    HH:時

    MM:分

    SS:秒

    TT:1/100秒

    uapname

    8

    char

    抽出側のUAP名

    呼び出し元

    抽出側DBを更新するときのユーザアプリケーションプログラムの名称

    extsysid

    4

    char

    抽出側DBのシステムID

    呼び出し元

    抽出側DBがHiRDBの場合

    抽出側DBのHiRDB識別子

    抽出側DBがメインフレーム(XDM/DS,PDMII E2,RDB1 E2)の場合

    抽出側DBのサブシステムID

    infflag1

    1

    unsigned char

    予備領域1

    予備

    infflag2

    1

    unsigned char

    予備領域2

    予備

    infflag3

    1

    unsigned char

    予備領域3

    予備

    reserve1

    1

    char

    予備領域4

    予備

    infflag4

    4

    int

    予備領域5

    予備

注1

反映側Datareplicatorでは,UREFLECT_BLKのヘッダファイルを用意しているので,それを使ってください。ヘッダファイルについては,「表8-13 反映情報編集UOCのヘッダファイルの一覧」を参照してください。

注2

ユーザは,設定者が呼び出し元になっている領域を書き換えないでください。

  • UDATA_BLK *キー情報ブロック名

  • UDATA_BLK *反映データブロック名

    反映情報を格納するための領域の名称を指定します。hds_uedit()の第3パラメタのキー情報ブロックと第4パラメタの反映データブロックの両方でこの構造体を使います。

    キー情報ブロックでは,UDATA_BLKにマッピングキーの情報を格納します。反映データブロックでは,UDATA_BLKに反映データの情報を格納します。

    キー情報ブロックは,INSERT,PURGE及びCOMMITの場合には列数に0が設定されます。また,キー値が変更された場合には,キー情報ブロックには更新前のキー値が設定されます。更新後のキー値及びINSERT時のキー値は,反映データブロックの中に設定されます。

    DELETE,PURGE,COMMITの場合は,反映データブロックの列数に0が設定されます。

    キー情報及び反映データ情報は,UDATA_BLKとUDATA_BLKからポイントされる構造体(これをUCOLUMN_BLKといいます)とスカラデータから構成されます。UDATA_BLKの列数に0が設定されている場合,UCOLUMN_BLKは参照しないでください。UDATA_BLKとその関連構造を次の図に示します。

    図8‒4 UDATA_BLKとその関連構造

    [図データ]

注※1

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

注※2

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

注※3

BLOB型又はBINARY型の後方削除更新をしている場合のデータ構造です。USUBSTR_BLKの内容については,「表8-8 USUBSTR_BLKの内容」を参照してください。

表8‒6 UDATA_BLKの内容

メンバ名

長さ(バイト)

属性

領域名

設定者

内容

colnum

4

int

列数

呼び出し元

マッピングキーの列数又は反映データの列数が設定されます。

*colinfptr

8

UCOLUMN_BLK*

UCOLUMN_BLK*アドレス

呼び出し元

UCOLUMN_BLKのアドレスが設定されます。

Datareplicatorでは,UDATA_BLKのヘッダファイルを用意しているので,それを使ってください。ヘッダファイルについては,「表8-13 反映情報編集UOCのヘッダファイルの一覧」を参照してください。

表8‒7 UCOLUMN_BLKの内容

メンバ名

長さ(バイト)

属性

領域名

設定者

内容

colname

30

char

列名

呼び出し元

列の名前が設定されます。

coltype

1

unsigned char

列データ型

呼び出し元

列のデータ型が設定されます。設定内容については,「表8-9 列データ型のニモニック」を参照してください。

coloption

1

unsigned char

列オプション

呼び出し元

列のオプションが設定されます。オプションの種類を次に示します。

HDS_COL_NOOPT(0x00):

オプションなし

HDS_COL_NULL(0x01):

NULLデータ

HDS_COL_MAPK(0x02):

マッピングキー

反映データブロックだけ設定されます。キー情報ブロックには設定されません。

HDS_COL_ARRAY(0x04):

配列列

HDS_COL_REPET(0x08):

繰返し列

HDS_COL_ELMNL(0x10):

繰返し列の要素の値がNULL

HDS_COL_REPTCOL(0x20):

繰返し構造指定

HDS_COL_BLOBSUB(0x40):

連結演算データ

HDS_COL_SUBSTR(0x80):

SUBSTR演算後方削除更新ログ

elementnum

4

union

繰返し列の有効要素番号

又は抽象データ型の数

呼び出し元

繰返し列のとき:

前2バイト(short)には有効要素番号が設定されます。*指定のときは−2が設定されます。

後2バイト(short)には該当する列の要素データの数が設定されます。

抽象データ型の列のとき:

継承関係を含めたデータ型の数が設定されます。継承がないときは1が設定されます。

配列列のとき:

前2バイトには抽出側配列列の要素番号が設定されます。

後2バイトには0が設定されます。

mltcolkind

1

unsigned char

繰返し列の更新種別

呼び出し元

繰返し列の場合の更新種別を次に示します。更新種別がUPDATEのときだけ有効になります。

HDS_COL_ADDV(0x01):ADD

HDS_COL_DELV(0x02):DELETE

HDS_COL_SETV(0x04):SET

adtfunc

1

char

抽象データ型の反映方式

呼び出し元

「0x01」で固定です。

charset

1

char

文字集合種別

呼び出し元

UOCに渡す列データの文字集合種別が設定されます。

文字集合指定なし:

X'00'(HDS_CSET_DEFAULT)

文字集合指定あり(EBCDIK):

X'01'(HDS_CSET_EBCDIK)

reserve1

2

char

予備領域

予備

collen

4

int

列データ長

呼び出し元

列のデータ長が設定されます。列オプションがNULLデータの場合,0が設定されます。

dataptr

4

union

データアドレス

呼び出し元

列データのアドレスが設定されます。列オプションがNULLデータの場合,NULLポインタが設定されます。設定内容については,「表8-10 データアドレスのニモニック」を参照してください。

反映側Datareplicatorでは,UCOLUMN_BLKのヘッダファイルを用意しているので,それを使ってください。ヘッダファイルについては,「表8-13 反映情報編集UOCのヘッダファイルの一覧」を参照してください。

表8‒8 USUBSTR_BLKの内容

メンバ名

長さ(バイト)

属性

領域名

設定者

内容

reserve1

4

int

内部情報1

呼び出し元

内部情報

data_len

4

int

内部情報2

呼び出し元

内部情報

reserve2

4

int

予備領域1

呼び出し元

予備

substr_spos

4

unsigned int

SUBSTR開始位置

呼び出し元

スカラ関数SUBSTR使用時の,切り出すデータ列の開始位置

reserve3

4

int

予備領域2

呼び出し元

予備

substr_len

4

unsigned int

SUBSTRデータ長

呼び出し元

スカラ関数SUBSTR使用時の,切り出すデータ列の長さ

reserve4

16

char

予備領域3

呼び出し元

予備

列データ型のニモニックを「表8-9 列データ型のニモニック」に,データアドレスのニモニックを「表8-10 データアドレスのニモニック」に示します。

表8‒9 列データ型のニモニック

列データ型

ニモニック

データコード

INTEGER

HDS_T_INT

(0xF1)

SMALLINT

HDS_T_SINT

(0xF5)

LARGE DECIMAL

HDS_T_DEC

(0xE5)

FLOAT

HDS_T_FLT

(0xE1)

DOUBLE PRECISION

HDS_T_DBL

(0xE1)

SMALL FLOAT

HDS_T_SFLT

(0xE3)

REAL

HDS_T_REAL

(0xE3)

CHARACTER

HDS_T_CHAR

(0xC5)

VARCHAR

HDS_T_VCHAR

(0xC1)

NCHAR

HDS_T_NCHAR

(0xB5)

NVARCHAR

HDS_T_NVCHAR

(0xB1)

MCHAR

HDS_T_MCHAR

(0xA5)

MVCHAR

HDS_T_MVCHAR

(0xA1)

DATE

HDS_T_DATE

(0x71)

TIME

HDS_T_TIME

(0x79)

TIMESTAMP

HDS_T_TIMESTAMP

(0x7D)

INTERVAL YEAR TO DAY

HDS_T_YTD

(0x65)

INTERVAL HOUR TO SECOND

HDS_T_HTS

(0x6F)

BLOB

HDS_T_BLOB

(0x93)

BINARY

HDS_T_BINARY

(0x91)

UNPACK

HDS_T_UNPACK

(0xFF)

表8‒10 データアドレスのニモニック

データ型

ニモニック

アドレスタイプ

INTEGER

HDS_A_INT

int*

SMALLINT

HDS_A_SINT

short*

LARGE DECIMAL

HDS_A_DEC

char*

FLOAT

HDS_A_FLT

double*

DOUBLE PRECISION

HDS_A_DBL

double*

SMALL FLOAT

HDS_A_SFLT

float*

REAL

HDS_A_REAL

float*

CHARACTER

HDS_A_CHAR

char*

VARCHAR

HDS_A_VCHAR

char*

NCHAR

HDS_A_NCHAR

char*

NVARCHAR

HDS_A_NVCHAR

char*

MCHAR

HDS_A_MCHAR

char*

MVCHAR

HDS_A_MVCHAR

char*

DATE

HDS_A_DATE

char*

TIME

HDS_A_TIME

char*

INTERVAL YEAR TO DAY

HDS_A_YTD

char*

INTERVAL HOUR TO SECOND

HDS_A_HTS

char*

BLOB

HDS_A_BLOB

char*

UNPACK

HDS_A_UNPACK

char*

TIMESTAMP

HDS_A_TIMESTAMP

char*

BINARY

HDS_A_BINARY

char*

SUBSTR演算後方削除更新ログ

HDS_A_SUBSTR

USUBSTR_BLK*

  • int *ステータス

    編集・加工指示関数の中でエラーを検知した場合,ステータスに値を設定できます。ステータスに値を設定すると,関数から戻った後に呼び出し元であるインタフェースプロセスからメッセージを出力し,その中にステータス値を表示します。

(c) 戻り値

呼び出し元に戻るときに戻り値を設定します。設定できる戻り値を次の表に示します。

表8‒11 hds_uedit()からの戻り値

コード

状態

ニモニック

呼び出し元の処置

0

正常終了

HDS_RET_NORM

処理を続行します。

4

軽度(継続できるレベル)のエラー検知

HDS_RET_WARN

メッセージを出力します。処理は続行されます。

0,4以外

重度(継続できないレベル)のエラー検知

HDS_RET_ERR

メッセージを出力します。処理は中止して,プロセスを終了します。

(3) hds_uend()(編集終了指示関数)

(a) 関数の形式

#include<hds_ucommon.h>
#include<hds_ureflect.h>
 int hds_uend(UINTERFACE_BLK *インタフェースブロック名,
    int *ステータス);

(b) パラメタの説明

  • UINTERFACE_BLK *インタフェースブロック名

    hds_begin()関数又はhds_edit()関数からの情報を引き継ぎたい場合に設定する情報を格納するための領域の名称を指定します。インタフェースブロック名については,「表8-3 インタフェースブロック(UINTERFACE_BLK)の内容」を参照してください。

    hds_ubegin()関数で動的に領域を割り当てた場合には,hds_uend()関数の中で解放してください。また,オープンしたファイルがある場合にはクローズしてください。hds_uend()関数から戻った後では,UINTERFACE_BLKで設定されているユーザ設定項目に対しては何もしないで,構造体の領域を解放してください。

    データベースアクセスしているUOCで終了モードが強制停止のときは,DBMSにROLLBACKを実行してからDISCONNECTを実行してください。

  • int *ステータス

    編集終了指示関数の中でエラーを検知した場合,ステータスに値を設定できます。ステータスに値を設定すると,関数から戻った後に呼び出し元であるインタフェースプロセスからメッセージを出力し,その中にこのステータス値を表示します。

(c) 戻り値

呼び出し元に戻るときに戻り値を設定します。設定できる戻り値を次の表に示します。

表8‒12 hds_uend()関数からの戻り値

コード

状態

ニモニック

呼び出し元の処置

0

正常終了

HDS_RET_NORM

正常にプロセスを終了させます。

4

軽度(継続できるレベル)のエラー検知

HDS_RET_WARN

メッセージを出力します。プロセスは正常に終了させます。

0,4以外

重度(継続できないレベル)のエラー検知

HDS_RET_ERR

メッセージを出力します。プロセスは正常に終了させます。

(4) 反映情報編集UOCで使うヘッダファイル

反映側Datareplicatorでは,hds_ubegin(),hds_uedit(),hds_uend()の関数のインタフェースになる構造体及びニモニックコードをヘッダファイルで用意しています。

反映情報編集UOCで使うヘッダファイルは,次に示すディレクトリに格納してあります。

UNIX版の場合: /opt/hirdbds/include/

Windows版の場合:Datareplicatorをインストールしたディレクトリ\include\

反映情報編集UOCのヘッダファイルの一覧を次の表に示します。

表8‒13 反映情報編集UOCのヘッダファイルの一覧

ファイル名

内容

反映情報編集UOCに関連するメンバ

hds_ucommon.h

反映情報編集UOCの共通の構造体及びニモニックコード

  • UINTERFACE_BLK

  • 戻り値のニモニック

hds_ureflect.h

反映情報編集UOCの構造体及びニモニックコード

  • UREFLECT_BLK

  • UREFLECT_BLKのニモニック

  • UDATA_BLK

  • UCOLUMN_BLK

  • データ型のニモニック

  • データアドレスのニモニック

(5) 規則

(a) ファイル

反映情報編集UOCの関数の中で,操作できるファイルはユーザ独自のファイル(オープンしたファイル)だけです。ファイルの規則を次に示します。

  • 標準入力,標準出力,標準エラー出力は,使わないでください。

    ただし,反映側Datareplicatorの環境変数HDS_MST_STDCLOSEに「FALSE」を指定した場合は,標準入力,標準出力,標準エラー出力を使用できます。

  • 自身でオープンしたファイル以外を書き込んだり読み込んだりしないでください。

  • 反映側Datareplicatorのファイルを操作しないでください。

(b) 定義との関連

  • UOCを実行する場合,反映方式は表単位反映方式となります。このため,Datareplicatorは次のように動作します。

    • 反映環境定義のstartmodeパラメタは無効になります。

    • hdsstateコマンドの表示内容の<REFLECTION INFORMATION>中のreflection modeは"tbl"となります。

  • UOCに対しては,control_trigger指示をしません。このため,UOCで実行する場合には,反映環境定義のcontrol_triggerパラメタは無効になります。

  • UOCに対しては,disconnect指示をしません。このため,UOCで実行する反映の場合には,反映システム定義のdiscintvlオペランドの指定は無効になります。

  • UOC内部で使う表の存在チェックをしません。このため,UOCで実行する反映の場合には,反映環境定義のtblcheckオペランドの指定は無効になります。

  • UOCで反映処理を実行する場合には,反映定義でユーザが作成したUOCの名称を設定します。反映処理の実行時には,指定した名称のUOCが自動的に起動されます。

(c) SQL記述領域への設定

SQL記述領域を使って反映側DBを更新する場合,必要な内容をUOCインタフェーステーブルからSQL記述領域に設定して,UOCを作成します。

UOCで直接,UOCインタフェーステーブルの列データを参照する場合は,データ型によってはC言語のキャストをし,参照する必要があります。UOCインタフェーステーブルの列データアドレスが指すデータのデータ形式,実データ長とC言語での表記の関係を次の表に示します。

表8‒14 UOCの列データ型,データ長とC言語での表記の関係

UOCインタフェーステーブル

データ領域長

(バイト)

C言語での表記

ニモニック

列データ長

HDS_T_INT

4

4

int

HDS_T_SINT

2

2

short

HDS_T_DEC

先頭2バイト:精度

後ろ2バイト:位取り

精度÷2+1

char データエリア〔実データ長〕

HDS_T_FLT

8

8

double

HDS_T_DBL

HDS_T_SFLT

4

4

float

HDS_T_REAL

HDS_T_CHAR

文字列長(バイト数)

UOCの列データ長

char データエリア〔実データ長〕

HDS_T_MCHAR

HDS_T_VCHAR

データ部文字列長(バイト数)

UOCの列データ長+2

struct{

 unsigned short 実データ長

 char データエリア〔実データ長〕

HDS_T_NCHAR

文字列長(文字数)

UOCの列データ長*2

char データエリア〔実データ長〕

HDS_T_NVCHAR

データ部文字列長(文字数)

UOCの列データ長*2+2

struct{

 unsigned short 実データ長

 char データエリア〔実データ長〕

HDS_T_DATE

4

4

char データエリア〔実データ長〕

HDS_T_TIME

3

3

char データエリア〔実データ長〕

HDS_T_YTD

先頭2バイト:精度(8)

後ろ2バイト:位取り(0)

5

char データエリア〔実データ長〕

HDS_T_HTS

先頭2バイト:精度(6)

後ろ2バイト:位取り(0)

4

char データエリア〔実データ長〕

HDS_T_BLOB

(列オプションが0x80以外の場合)

データ部データ長(バイト数)

UOCの列データ長+8

struct{

 int 予備領域

 unsigned int 実データ長

 char データエリア〔実データ長〕

HDS_T_BLOB

(列オプションが0x80の場合)

32

UOCの列データ長+8

表8-8 USUBSTR_BLKの内容」を参照してください。

HDS_T_UNPACK

UNPACKデータ長(バイト数)

整数部けた数+小数部けた数

char データエリア〔実データ長〕

HDS_T_TIMESTAMP

7+↑p÷2↑(バイト数)

p:小数部のけた数

UOC列データ長

char データエリア〔実データ長〕

HDS_T_BINARY

(列オプションが0x80以外の場合)

データ部データ長(バイト数)

UOCの列データ長+4

struct{

 int 実データ長

 char データエリア〔実データ長〕

HDS_T_BINARY

(列オプションが0x80の場合)

32

UOCの列データ長+8

表8-8 USUBSTR_BLKの内容」を参照してください。

繰返し列のデータは,一つの要素のデータ情報が一つのUCOLUMN_BLKに格納されます。

注※

連結演算のときも受け渡し方法は同じです。

(d) データ型

  • 抽出側DBがメインフレーム側DBの場合,データ変換が必要なときには,データ変換をしたデータがUOCに渡されます。データ変換については,「4.3.4 データ型の対応の設計」を参照してください。

  • DATE型,TIME型のデータ形式は,符号なしパック形式で格納されています。SQL記述領域を使ったUAPを作成する場合には,データが格納されているエリアのアドレスを,直接SQL記述領域に設定して処理できます。SQL記述領域を使わないUAPを作成する場合,DATE型,TIME型のデータを文字列の日付データ,時刻データに変換した後,埋込み変数に設定して処理する必要があります。

  • SMALLFLOAT型のデータは,表現範囲の相違によるオーバフローを回避するため,FLOAT型のデータとして渡されます。

  • 抽出列型がUNPACK型の場合,DECIMAL型へデータ変換した後にDECIMALデータ形式でUOCに渡します。UNPACKデータがDECIMAL型に変換できない場合は,UNPACKデータ形式でUOCに渡します。UOCに渡されるUNPACK型のニモニックについては,「表8-9 列データ型のニモニック」又は「表8-10 データアドレスのニモニック」を参照してください。