Hitachi

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


8.1.7 反映情報編集UOCのサンプル

反映側Datareplicatorに格納してあるUOCのサンプルについて説明します。

〈この項の構成〉

(1) 格納ディレクトリとファイル名

反映側Datareplicatorをインストールすると,サンプルファイルが次のディレクトリに格納されます。

ディレクトリ

UNIX版の場合:/opt/hirdbds/lib/sample/

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

ファイル名

hds_redit.ec

(2) 抽出環境

(a) 抽出対象表

抽出対象表の構成を次の図に示します。

図8‒7 抽出対象表の構成

[図データ]

注 更新処理の対象は,「在庫量」だけと想定しています。

(b) 抽出処理の内容

サンプルで抽出する処理の内容を次に示します。

  • 更新情報名:ZAIKO

  • 抽出対象列:すべての列

  • 抽出順序:列の構成順

  • マッピングキー:「商品コード」の列

(3) 反映環境

(a) 反映対象表の内容

反映対象表の構成を次の図に示します。反映対象表名は,「在庫表」としています。

図8‒8 反映対象表(在庫表)の構成

[図データ]

(b) 反映定義

反映定義の内容を次に示します。反映定義は次の条件に従っています。

  • 抽出対象表の列「色」以外を反映対象とします。

  • UOC名は「/users/replicator/sampleuoc」とします。

    format ZAIKO
    NAME FCODE      /* 商品コード */
    NAME FNAME      /* 商品名   */
    NAME FCOLOR      /* 色     */
    NAME FTANKA      /* 単価    */
    NAME FZAIKO      /* 在庫量   */
    load FCODE,FNAME,FTANKA,FZAIKO from ZAIKO by '/users/replicator/sampleuoc';

(4) 処理の内容

編集開始指示関数(hds_ubegin)は,反映側HiRDBへのCONNECT処理を実行します。編集・加工指示関数(hds_uedit)は,更新種別に対応してINSERT,UPDATE,DELETE,PURGE,COMMITを実行します。

UPDATE,DELETEでは,反映対象表に更新対象の行がないエラー(SQLCODE 100)になると,エラーになった更新情報を無視して反映処理を継続します。そのほかのSQL実行エラーが発生した場合,編集終了指示関数(hds_uend)でROLLBACK処理を実行します。編集終了指示関数(hds_uend)は,必要に応じてROLLBACKし,DISCONNECTを実行します。

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

hds_ubegin関数のパラメタであるUINTERFACE_BLKから,認可識別子,パスワードを埋込み変数に設定して,その埋込み変数をパラメタとして反映側HiRDBにCONNECTを発行します。

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

  • SQL実行処理

    hds_uedit関数のパラメタであるUREFLECT_BLKの更新種別で指定されたSQLを,反映側HiRDBに発行します。

INSERT

hds_uedit関数のパラメタである反映データブロック(UDATA_BLK)を基に反映対象表の各列の更新データアドレスを導き,各データを埋込み変数に設定します。設定した埋込み変数をパラメタとしてINSERTを実行します。

UPDATE

マッピングキーの列である「商品コード」の更新データアドレスを,hds_uedit関数のパラメタであるキー情報ブロックを基に導き,その更新データを埋込み変数に設定します。

抽出対象表の更新対象列は,列「在庫量」だけのため,hds_uedit関数のパラメタである反映データブロックには,列「在庫量」の更新情報が設定されています。その列「在庫量」の更新データを埋込み変数に設定します。

列「商品コード」の埋込み変数をUPDATEの探索条件値とし,さらに列「在庫量」の埋込み変数を更新値としてUPDATEを実行します。

DELETE

マッピングキーの列「商品コード」の更新データアドレスをhds_uedit関数のパラメタであるキー情報ブロックを基に導き,更新データを埋込み変数に設定します。その埋込み変数をDELETE文の探索条件としてDELETEを実行します。

PURGE

反映対象表の名称「在庫表」を指定し,PURGE TABLEを実行します。

COMMIT

COMMIT WORKを実行します。

  • 関数終了処理

    SQLの実行結果であるSQLCODEによって,リターンコードとステータスコードを決定します。SQLCODEによるリターンコードとステータスコードを次の表に示します。

    表8‒22 SQLコードによるリターンコードとステータスコード

    SQLCODE

    SQLの状態

    リターンコード

    ステータスコード

    0

    正常終了

    HDS_RET_NORM

    (正常終了)

    100

    UPDATE,又はDELETEで反映対象表に,該当する行が存在しないエラー

    HDS_RET_WARN

    (軽度のエラー)

    SQLCODE

    0,100以外

    反映処理を中断するエラー

    HDS_RET_ERR

    (重度のエラー)

    SQLCODE

注※

hds_uend関数でROLLBACKを実行するフラグとして,hds_uedit関数のパラメタであるインタフェースブロック(UINTERFACE_BLK)の引き継ぎ情報2に「−1」を設定します。

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

ROLLBACK及びDISCONNECTを実行します。

ROLLBACKは,hds_uend関数のパラメタであるインタフェースブロック(UNITERFACE_BLK)の引き継ぎ情報2が「−1」のときだけ実行します。