8.11.5 UOCの使用例
ここでは,UOCを使用した表の再編成の例について説明します。
なお,使用例中のUOCコーディング例は,サンプルデータべースとして提供されています。格納ディレクトリは,%PDDIR%\sample\sampleUOCです。
- 〈この項の構成〉
(1) UOCを使用した表の再編成の例
表の再編成をするときに,データベースに登録された日時が2001年以前のデータを削除します。
(a) データべースの表定義
CREATE TABLE 会員名簿 (会員番号 INTEGER, 会員名 NCHAR(20), 会員住所 NVARCHAR(100), 入会日時 DATE NOT NULL WITH DEFAULT);
(b) コマンド形式
pdrorg -k rorg -t 会員名簿 制御情報ファイル
(c) 制御情報ファイルの内容
unload アンロードデータファイル名 uoc_lib=ライブラリ名 unlduoc entry=old_data_delete
(d) UOCコーディング例
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <errno.h> #include <pdutluoc.h> ..........................................................1 void old_data_delete ( UTL_UOC_INF *uocinf /* A(UOC interface area) */ ...2 ) { UTL_UOC_DATA_BUF *addr_list; /* A(data address list) */ unsigned char *date_adr; /* A(DATE) */ static unsigned char cyear[2]; /* compare year */ switch(uocinf->req_cd){ ....................................................3 case UTL_UOC_START: /*------------------------------------------------------------------------*/ /* START */ /*------------------------------------------------------------------------*/ cyear[0] = 0x20; /* The 21th century */ cyear[1] = 0x01; /* (2001) */ uocinf->rtn_code = UTL_UOC_NML; break; case UTL_UOC_EDIT: /*------------------------------------------------------------------------*/ /* EDIT */ /*------------------------------------------------------------------------*/ addr_list = uocinf->data_adr; date_adr = addr_list->data[3]; if (memcmp(date_adr,cyear,sizeof(cyear)) < 0){ uocinf->unload_flg = UTL_UOC_ROWNOPUT; }else{ uocinf->unload_flg = UTL_UOC_ROWPUT; } ......................................................................4 uocinf->rtn_code = UTL_UOC_NML; break; case UTL_UOC_END: case UTL_UOC_TERM: /*----------------------------------------------------------------------*/ /* END */ /*----------------------------------------------------------------------*/ uocinf->rtn_code = UTL_UOC_NML; break; default: strcpy(uocinf->err_msg,"Invalid request code"); uocinf->rtn_code = UTL_UOC_ERR; } return; }
- [説明]
-
-
HiRDBが提供する,UOC作成用のヘッダを引き込みます。
-
UOCインタフェース領域のアドレスを引数として受け取ります。
-
呼び出し種別を判定して,それぞれの処理をします。
-
データ(日付)を判定して,格納フラグを設定します。
-