8.1.7 反映情報編集UOCのサンプル
反映側Datareplicatorに格納してあるUOCのサンプルについて説明します。
- 〈この項の構成〉
(1) 格納ディレクトリとファイル名
反映側Datareplicatorをインストールすると,サンプルファイルが次のディレクトリに格納されます。
- ディレクトリ
-
UNIX版の場合:/opt/hirdbds/lib/sample/
Windows版の場合:Datareplicatorをインストールしたディレクトリ\sample\
- ファイル名
-
hds_redit.ec
(2) 抽出環境
(a) 抽出対象表
抽出対象表の構成を次の図に示します。
注 更新処理の対象は,「在庫量」だけと想定しています。
(b) 抽出処理の内容
サンプルで抽出する処理の内容を次に示します。
-
更新情報名:ZAIKO
-
抽出対象列:すべての列
-
抽出順序:列の構成順
-
マッピングキー:「商品コード」の列
(3) 反映環境
(a) 反映対象表の内容
反映対象表の構成を次の図に示します。反映対象表名は,「在庫表」としています。
(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」のときだけ実行します。