表の再編成をするときに,データベースに登録された日時が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インタフェース領域のアドレスを引数として受け取ります。
- 呼び出し種別を判定して,それぞれの処理をします。
- データ(日付)を判定して,格納フラグを設定します。