/*******************************************************************************
*
* システム名:受発注後処理システム
* ファイル名:ins_KTNTORI.pc
* 機能概要 :開店前取引先DB作成
*
* % xxxx.exe
* 引数1: 業務日付
*
* Copyright(c) 2009 FamilyMart Co., Ltd. All Rights Reserved.
*
* 履歴:
* 日付 更新者 内容
* 2009/05/20 SQL/MX, ANSI-C 移植
* 旧kaiten/fnsk_ins_KTNTORI.sp(PL/SQL) を移植
* 2010/06/17 kodama 発注地区追加対応 15,16地区追加
* 2010/10/15 nomura 配信区分7or7以外による配信先コード分岐を削除
*
*******************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include "fvs.h" /* 受発注後処理共通ヘッダ */
/*
#define DEBUG
*/
#ifdef DEBUG
#define DEBUGF(args) (void)printf args
#else
#define DEBUGF(args)
#endif /*DEBUG*/
#define PROGID "B_BJ_KTM02_030_Z1"
#define BATCH_USERID "B_BJ_KTM02_030_Z1"
/*#define USERID "user1"*/
EXEC SQL INCLUDE SQLCA;
/* ホスト変数の宣言 */
EXEC SQL BEGIN DECLARE SECTION;
/* SQLSTATE宣言 */
char SQLSTATE[6];
long SQLCODE;
struct BJ_M_VIVID_TRI_st{
char hchiku[2+1];
char tri_cd[8+1];
VARCHAR tri_jname[16+1];
short tri_jname_i;
char start_date[8+1];
char end_date[8+1];
char hsn_kbn[1+1];
short hsn_kbn_i;
char kata_kbn[1+1];
short kata_kbn_i;
}h_vtri;
struct BJ_T_KTM_TRI_st{
char hchiku[2+1];
char tri_cd[8+1];
VARCHAR tri_jname[16+1];
char start_date[8+1];
char end_date[8+1];
char hsn_kbn[1+1];
char kata_kbn[1+1];
char ktm_proc_kbn[1+1];
char den24_dat_kbn[1+1];
char den24_prnt_cntr_kbn[1+1];
}h_ktmtri;
struct BJ_T_KTM_TRI31_st{
char data_syu[2+1];
char hsnsk_cd[8+1];
char out_area_kbn[2+1];
}h_ktmtri31;
struct BJ_T_KTM_TRI32_st{
char data_syu[2+1];
char ktm_hsn_kbn[1+1];
char hsnsk_cd[8+1];
char den24_prnt_kbn[1+1];
char ktm_proc_kbn[1+1];
char out_area_kbn[2+1];
}h_ktmtri32;
struct BJ_T_KTM_TRI33_st{
char den24_prnt_kbn[1+1];
char den24_dat_kbn[1+1];
char den24_prnt_cntr_kbn[1+1];
char out_area_kbn[2+1];
char data_syu[2+1];
char ktm_hsn_kbn[1+1];
char hsnsk_cd[8+1];
}h_ktmtri33;
struct BJ_M_JCA_KTM_TRI_st{
char set_kbn[1+1];
short set_kbn_i;
}h_mktm;
struct BJ_P_KTM_SORT_st{
char tri6_cd[6+1];
}h_psort;
/* アプリで使用するホスト変数 */
char h_gyomu_date[16];
char h_tri_cd[8+1];
char h_sql1[1024];
char h_sql2[1024];
char h_userId[17+1]; /* ユーザID */
char h_progId[17+1]; /* プログラムID */
/**/
EXEC SQL END DECLARE SECTION;
char SQLSTATE_OK[6] = "00000";
char SQLSTATE_NODATA[6] = "02000";
char SQLSTATE_XXX[6] = "24000";
static int insertDat();
/*
* メイン関数
*
*/
int main(int argc, char* argv[])
{
int i, arg_cnt, status;
char *gyomu_date;
// DB接続
int ret = fvs_z_sql_connect(NULL,NULL,NULL);
if (ret != (int)NORMAL)
{
return 1;
}
/* 起動引数解析 */
gyomu_date = NULL;
arg_cnt = 0;
for (i=1; i<argc; ) {
switch (argv[i][0]) {
case '-':
break;
default:
arg_cnt++;
if (arg_cnt == 1) { /* 第1引数: 業務日付 */
gyomu_date = argv[i];
}
break;
}
i++;
}
if (gyomu_date == NULL) {
fprintf(stderr, "Usage: %s gyomu_date\n", argv[0]);
return(1);
}
DEBUGF(("ins_KTNTORI start... gyomu_date = [%s]\n", gyomu_date));
strcpy(SQLSTATE, SQLSTATE_OK);
strcpy(h_gyomu_date, gyomu_date);
strcpy(h_userId, BATCH_USERID);
strcpy(h_progId, PROGID);
status = 0;
/* トランザクション開始 */
status = insertDat();
if (status == 0) {
EXEC SQL COMMIT WORK;
}
else {
EXEC SQL ROLLBACK WORK;
}
DEBUGF(("ins_KTNTORI end. status=\n", status));
if (status != 0) return 1;
return 0;
}
/*
* 開店前取引先DB登録処理
*
*/
static int insertDat()
{
int i, status, rcnt, wcnt, notfound, notfound2, warn_flg;
DEBUGF(("insertDat start..."));
status = 0;
/* SELECTカーソル宣言 */
EXEC SQL DECLARE cur_tri CURSOR FOR
select /*+ FULL(BJ_M_VIVID_TRI) ins_KTNTORI_001 */ HCHIKU, TRI_CD, TRI_JNAME, START_DATE, END_DATE, HSN_KBN, KATA_KBN
from BJ_M_VIVID_TRI
where UP_KBN <> '03';
/* 桁数は条件からはずす */
sprintf(h_sql1,
"select /*+ INDEX(BJ_M_JCA_KTM_TRI PK_BJ_M_JCA_KTM_TRI) ins_KTNTORI_002 */ SET_KBN from BJ_M_JCA_KTM_TRI"
" where "
" (TRI7_CD = SUBSTR(:tri_cd , 1 , 7))"
" and START_DATE <= '%s'"
" and '%s' <= END_DATE"
,h_gyomu_date,h_gyomu_date);
sprintf(h_sql2,
"select /*+ FULL(BJ_P_KTM_SORT) ins_KTNTORI_003 */ TRI6_CD from BJ_P_KTM_SORT"
" where TRI6_CD = SUBSTR(:tri_cd , 1 , 6)"
);
//fprintf(stdout,"SQL1=[%s]\n\n",h_sql1);
//fprintf(stdout,"SQL2=[%s]\n\n",h_sql2);
EXEC SQL PREPARE sql_pktm FROM :h_sql1;
EXEC SQL DECLARE cur_pktm CURSOR FOR sql_pktm;
if (check_dberror()) {
DEBUGF(("Error: prepare/declare error. (cur_pktm)\n"));
return -1;
}
EXEC SQL PREPARE sql_psort FROM :h_sql2;
EXEC SQL DECLARE cur_psort CURSOR FOR sql_psort;
if (check_dberror()) {
DEBUGF(("Error: prepare/declare error. (cur_psort)\n"));
return -1;
}
/* 開店前取引マスタ全件削除 */
EXEC SQL
delete from BJ_T_KTM_TRI;
if (strcmp(SQLSTATE, SQLSTATE_NODATA) != 0) {
if (check_dberror()) {
return -1;
}
}
/* 取引先マスタ取得カーソルOPEN */
EXEC SQL OPEN cur_tri;
warn_flg = fvs_z_sql_warning(SQLSTATE);
if (check_dberror() && warn_flg == 0) {
return -1;
}
DEBUGF(("FETCH loop start..."));
rcnt = wcnt = 0;
for(i=0; ; i++) {
memset(&h_vtri, 0x00, sizeof(h_vtri));
EXEC SQL FETCH cur_tri INTO
:h_vtri.hchiku
,:h_vtri.tri_cd
,:h_vtri.tri_jname :h_vtri.tri_jname_i
,:h_vtri.start_date
,:h_vtri.end_date
,:h_vtri.hsn_kbn :h_vtri.hsn_kbn_i
,:h_vtri.kata_kbn :h_vtri.kata_kbn_i
;
if (!strcmp(SQLSTATE, SQLSTATE_NODATA)) break;
if (check_dberror()) {
DEBUGF(("Error: fetch error. (cur_tri) row = %d\n", i+1));
status = -1;
break;
}
/*
printf("row[%d]: hchiku=[%s] depo=[%s] tenban=[%s] shohin_cd=[%s]\n",
(i+1), h_dat1.hchiku, h_dat1.depo, h_dat1.tenban, h_dat1.shohin_cd);
*/
rcnt++;
memset(&h_ktmtri, 0x00, sizeof(h_ktmtri));
memset(&h_mktm, 0x00, sizeof(h_mktm));
memset(&h_psort, 0x00, sizeof(h_psort));
memset(&h_ktmtri31, 0x00, sizeof(h_ktmtri31));
memset(&h_ktmtri32, 0x00, sizeof(h_ktmtri32));
memset(&h_ktmtri33, 0x00, sizeof(h_ktmtri33));
strcpy(h_ktmtri.hchiku, h_vtri.hchiku);
strcpy(h_ktmtri.tri_cd, h_vtri.tri_cd);
strcpy((char *)h_ktmtri.tri_jname.arr, (char *)h_vtri.tri_jname.arr);
h_ktmtri.tri_jname.len = h_vtri.tri_jname.len;
strcpy(h_ktmtri.start_date, h_vtri.start_date);
strcpy(h_ktmtri.end_date, h_vtri.end_date);
strcpy(h_ktmtri.hsn_kbn, h_vtri.hsn_kbn);
strcpy(h_ktmtri.kata_kbn, h_vtri.kata_kbn);
strcpy(h_ktmtri.ktm_proc_kbn, "0");
strcpy(h_ktmtri.den24_dat_kbn, "0");
strcpy(h_ktmtri.den24_prnt_cntr_kbn,"0");
/* データ種31配信先コード設定 */
strcpy(h_ktmtri31.data_syu, "31");
if (!strcmp(h_vtri.hchiku, "03")) {
strcpy(h_ktmtri31.hsnsk_cd, "00100022");
strcpy(h_ktmtri31.out_area_kbn, "03");
}
else if (!strcmp(h_vtri.hchiku, "04")) {
strcpy(h_ktmtri31.hsnsk_cd, "00100022");
strcpy(h_ktmtri31.out_area_kbn, "03");
}
else if (!strcmp(h_vtri.hchiku, "05")) {
strcpy(h_ktmtri31.hsnsk_cd, "00500022");
strcpy(h_ktmtri31.out_area_kbn, "05");
}
else if (!strcmp(h_vtri.hchiku, "07")) {
strcpy(h_ktmtri31.hsnsk_cd, "00700022");
strcpy(h_ktmtri31.out_area_kbn, "07");
}
else if (!strcmp(h_vtri.hchiku, "08")) {
strcpy(h_ktmtri31.hsnsk_cd, "00650022");
strcpy(h_ktmtri31.out_area_kbn, "08");
}
else if (!strcmp(h_vtri.hchiku, "09")) {
strcpy(h_ktmtri31.hsnsk_cd, "00750022");
strcpy(h_ktmtri31.out_area_kbn, "08");
}
else if (!strcmp(h_vtri.hchiku, "02")) {
strcpy(h_ktmtri31.hsnsk_cd, "00000022");
strcpy(h_ktmtri31.out_area_kbn, "02");
}
else if (!strcmp(h_vtri.hchiku, "11")) {
strcpy(h_ktmtri31.hsnsk_cd, "00000022");
strcpy(h_ktmtri31.out_area_kbn, "11");
}
else if (!strcmp(h_vtri.hchiku, "13")) {
strcpy(h_ktmtri31.hsnsk_cd, "00000022");
strcpy(h_ktmtri31.out_area_kbn, "13");
}
/* 2010/06/17 kodama 発注地区追加対応 15,16地区追加 */
else if (!strcmp(h_vtri.hchiku, "15")) {
strcpy(h_ktmtri31.hsnsk_cd, "00000022");
strcpy(h_ktmtri31.out_area_kbn, "15");
}
else if (!strcmp(h_vtri.hchiku, "16")) {
strcpy(h_ktmtri31.hsnsk_cd, "00000022");
strcpy(h_ktmtri31.out_area_kbn, "16");
}
else {
strcpy(h_ktmtri31.hsnsk_cd, "00000022");
strcpy(h_ktmtri31.out_area_kbn, "00");
}
/* 開店前パラメータ検索 */
strcpy(h_tri_cd, h_vtri.tri_cd);
EXEC SQL OPEN cur_pktm USING :h_vtri.tri_cd;
if (check_dberror()) {
DEBUGF(("Error: open cur_pktm error. row = %d\n", i+1));
status = -1;
break;
}
EXEC SQL FETCH cur_pktm INTO
:h_mktm.set_kbn :h_mktm.set_kbn_i
;
notfound = 0;
if (!strcmp(SQLSTATE, SQLSTATE_NODATA)) {
notfound = 1;
}
else if (check_dberror()) {
DEBUGF(("Error: fetch cur_pktm error. row = %d\n", i+1));
status = -1;
break;
}
if (notfound == 0) { /* 開店前パラメータ該当データあり */
strcpy(h_ktmtri33.data_syu, "33");
strcpy(h_ktmtri33.den24_dat_kbn, "1");
strcpy(h_ktmtri33.ktm_hsn_kbn, "1");
strcpy(h_ktmtri33.den24_prnt_cntr_kbn, "0");
strcpy(h_ktmtri33.out_area_kbn, h_ktmtri31.out_area_kbn);
/* 振分区分チェック(データ種33配信先コード設定) */
char buf_tri[16];
memset(buf_tri, 0x00, sizeof(buf_tri));
memcpy(buf_tri, h_ktmtri.tri_cd, 6);
strcat(buf_tri,"0");
buf_tri[7] = h_ktmtri.tri_cd[6];
strcpy(h_ktmtri33.hsnsk_cd, buf_tri);
/* セット区分チェック */
if (h_mktm.set_kbn[0] == '1') {
/* データ種32情報取得 */
strcpy(h_ktmtri32.data_syu, "32");
/*strcpy(h_ktmtri32.ktm_hsn_kbn, "H"); HICS処理削除*/
strcpy(h_ktmtri32.ktm_hsn_kbn, "1");
strcpy(h_ktmtri32.hsnsk_cd, h_ktmtri31.hsnsk_cd);
strcpy(h_ktmtri33.den24_prnt_kbn, "1");
strcpy(h_ktmtri33.den24_dat_kbn, "1");
/* 配送区分チェック */
if (h_ktmtri.kata_kbn[0] != '0') {
strcpy(h_ktmtri33.den24_prnt_cntr_kbn, "1");
}
/* データ種32データ追加 */
EXEC SQL INSERT INTO BJ_T_KTM_TRI (
HCHIKU
,TRI_CD
,DEN24_PRNT_KBN
,DEN24_DAT_KBN
,DEN24_PRNT_CNTR_KBN
,DATA_SYU
,KTM_PROC_KBN
,KTM_HSN_KBN
,HSNSK_CD
,TRI_JNAME
,START_DATE
,END_DATE
,HSN_KBN
,KATA_KBN
,OUT_AREA_KBN
,REC_RGST_DT ,REC_RGST_ID ,REC_RGST_PG_ID
,REC_UPDT_DT ,REC_UPDT_USR_ID,REC_UPDT_PG_ID
) values (
:h_ktmtri.hchiku
,:h_ktmtri.tri_cd
,:h_ktmtri33.den24_prnt_kbn
,:h_ktmtri33.den24_dat_kbn
,:h_ktmtri33.den24_prnt_cntr_kbn
,:h_ktmtri32.data_syu
,:h_ktmtri.ktm_proc_kbn
,:h_ktmtri32.ktm_hsn_kbn
,:h_ktmtri32.hsnsk_cd
,:h_ktmtri.tri_jname
,:h_ktmtri.start_date
,:h_ktmtri.end_date
,:h_ktmtri.hsn_kbn
,:h_ktmtri.kata_kbn
,:h_ktmtri33.out_area_kbn
,SYSTIMESTAMP,:h_userId,:h_progId
,SYSTIMESTAMP,:h_userId,:h_progId
);
if (check_dberror()) {
DEBUGF(("Error: insert error. (32a) row = %d\n", i+1));
status = -1;
break;
}
wcnt++;
}
else {
strcpy(h_ktmtri33.den24_prnt_kbn, "0");
strcpy(h_ktmtri33.den24_dat_kbn, "0");
}
/* データ種33データ追加 */
EXEC SQL INSERT INTO BJ_T_KTM_TRI (
HCHIKU
,TRI_CD
,DEN24_PRNT_KBN
,DEN24_DAT_KBN
,DEN24_PRNT_CNTR_KBN
,DATA_SYU
,KTM_PROC_KBN
,KTM_HSN_KBN
,HSNSK_CD
,TRI_JNAME
,START_DATE
,END_DATE
,HSN_KBN
,KATA_KBN
,OUT_AREA_KBN
,REC_RGST_DT ,REC_RGST_ID ,REC_RGST_PG_ID
,REC_UPDT_DT ,REC_UPDT_USR_ID,REC_UPDT_PG_ID
) values (
:h_ktmtri.hchiku
,:h_ktmtri.tri_cd
,:h_ktmtri33.den24_prnt_kbn
,:h_ktmtri33.den24_dat_kbn
,:h_ktmtri33.den24_prnt_cntr_kbn
,:h_ktmtri33.data_syu
,:h_ktmtri.ktm_proc_kbn
,:h_ktmtri33.ktm_hsn_kbn
,:h_ktmtri33.hsnsk_cd
,:h_ktmtri.tri_jname
,:h_ktmtri.start_date
,:h_ktmtri.end_date
,:h_ktmtri.hsn_kbn
,:h_ktmtri.kata_kbn
,:h_ktmtri33.out_area_kbn
,SYSTIMESTAMP,:h_userId,:h_progId
,SYSTIMESTAMP,:h_userId,:h_progId
);
if (check_dberror()) {
DEBUGF(("Error: insert error. (33a) row = %d\n", i+1));
status = -1;
break;
}
wcnt++;
/* データ種31データ追加 */
EXEC SQL INSERT INTO BJ_T_KTM_TRI (
HCHIKU
,TRI_CD
,DEN24_PRNT_KBN
,DEN24_DAT_KBN
,DEN24_PRNT_CNTR_KBN
,DATA_SYU
,KTM_PROC_KBN
,KTM_HSN_KBN
,HSNSK_CD
,TRI_JNAME
,START_DATE
,END_DATE
,HSN_KBN
,KATA_KBN
,OUT_AREA_KBN
,REC_RGST_DT ,REC_RGST_ID ,REC_RGST_PG_ID
,REC_UPDT_DT ,REC_UPDT_USR_ID,REC_UPDT_PG_ID
) values (
:h_ktmtri.hchiku
,:h_ktmtri.tri_cd
,:h_ktmtri33.den24_prnt_kbn
,:h_ktmtri33.den24_dat_kbn
,:h_ktmtri33.den24_prnt_cntr_kbn
,:h_ktmtri31.data_syu
,:h_ktmtri.ktm_proc_kbn
,:h_ktmtri33.ktm_hsn_kbn
,:h_ktmtri31.hsnsk_cd
,:h_ktmtri.tri_jname
,:h_ktmtri.start_date
,:h_ktmtri.end_date
,:h_ktmtri.hsn_kbn
,:h_ktmtri.kata_kbn
,:h_ktmtri31.out_area_kbn
,SYSTIMESTAMP,:h_userId,:h_progId
,SYSTIMESTAMP,:h_userId,:h_progId
);
if (check_dberror()) {
DEBUGF(("Error: insert error. (31a) row = %d\n", i+1));
status = -1;
break;
}
wcnt++;
}
else { /* 開店前パラメータ該当データなし */
/* データ種32情報設定 */
strcpy(h_ktmtri32.data_syu, "32");
strcpy(h_ktmtri32.den24_prnt_kbn, "1");
/*strcpy(h_ktmtri32.ktm_hsn_kbn, "H"); HICS処理削除*/
strcpy(h_ktmtri32.ktm_hsn_kbn, "1");
strcpy(h_ktmtri32.hsnsk_cd, h_ktmtri31.hsnsk_cd);
strcpy(h_ktmtri32.out_area_kbn, h_ktmtri31.out_area_kbn);
/* 開店前ソートパラメータ検索 */
EXEC SQL OPEN cur_psort USING :h_vtri.tri_cd;
warn_flg = fvs_z_sql_warning(SQLSTATE);
if (check_dberror() && warn_flg == 0) {
DEBUGF(("Error: open cur_psort error. row = %d\n", i+1));
status = -1;
break;
}
EXEC SQL FETCH cur_psort INTO
:h_psort.tri6_cd;
notfound2 = 0;
if (!strcmp(SQLSTATE, SQLSTATE_NODATA)) {
notfound2 = 1;
}
else if (check_dberror()) {
DEBUGF(("Error: fetch cur_psort error. row = %d\n", i+1));
status = -1;
break;
}
if (notfound2 == 0) { /* 開店前ソートパラメータ該当データあり */
strcpy(h_ktmtri32.ktm_proc_kbn, "1");
}
else {
strcpy(h_ktmtri32.ktm_proc_kbn, "0");
}
EXEC SQL CLOSE cur_psort;
/* データ種32データ追加 */
EXEC SQL INSERT INTO BJ_T_KTM_TRI (
HCHIKU
,TRI_CD
,DEN24_PRNT_KBN
,DEN24_DAT_KBN
,DEN24_PRNT_CNTR_KBN
,DATA_SYU
,KTM_PROC_KBN
,KTM_HSN_KBN
,HSNSK_CD
,TRI_JNAME
,START_DATE
,END_DATE
,HSN_KBN
,KATA_KBN
,OUT_AREA_KBN
,REC_RGST_DT ,REC_RGST_ID ,REC_RGST_PG_ID
,REC_UPDT_DT ,REC_UPDT_USR_ID,REC_UPDT_PG_ID
) values (
:h_ktmtri.hchiku
,:h_ktmtri.tri_cd
,:h_ktmtri32.den24_prnt_kbn
,:h_ktmtri.den24_dat_kbn
,:h_ktmtri.den24_prnt_cntr_kbn
,:h_ktmtri32.data_syu
,:h_ktmtri32.ktm_proc_kbn
,:h_ktmtri32.ktm_hsn_kbn
,:h_ktmtri32.hsnsk_cd
,:h_ktmtri.tri_jname
,:h_ktmtri.start_date
,:h_ktmtri.end_date
,:h_ktmtri.hsn_kbn
,:h_ktmtri.kata_kbn
,:h_ktmtri32.out_area_kbn
,SYSTIMESTAMP,:h_userId,:h_progId
,SYSTIMESTAMP,:h_userId,:h_progId
);
if (check_dberror()) {
DEBUGF(("Error: insert error. (32b) row = %d\n", i+1));
status = -1;
break;
}
wcnt++;
/* データ種31データ追加 */
EXEC SQL INSERT INTO BJ_T_KTM_TRI (
HCHIKU
,TRI_CD
,DEN24_PRNT_KBN
,DEN24_DAT_KBN
,DEN24_PRNT_CNTR_KBN
,DATA_SYU
,KTM_PROC_KBN
,KTM_HSN_KBN
,HSNSK_CD
,TRI_JNAME
,START_DATE
,END_DATE
,HSN_KBN
,KATA_KBN
,OUT_AREA_KBN
,REC_RGST_DT, REC_RGST_ID, REC_RGST_PG_ID
,REC_UPDT_DT, REC_UPDT_USR_ID, REC_UPDT_PG_ID
) values (
:h_ktmtri.hchiku
,:h_ktmtri.tri_cd
,:h_ktmtri32.den24_prnt_kbn
,:h_ktmtri.den24_dat_kbn
,:h_ktmtri.den24_prnt_cntr_kbn
,:h_ktmtri31.data_syu
,:h_ktmtri32.ktm_proc_kbn
,:h_ktmtri32.ktm_hsn_kbn
,:h_ktmtri31.hsnsk_cd
,:h_ktmtri.tri_jname
,:h_ktmtri.start_date
,:h_ktmtri.end_date
,:h_ktmtri.hsn_kbn
,:h_ktmtri.kata_kbn
,:h_ktmtri31.out_area_kbn
,SYSTIMESTAMP,:h_userId,:h_progId
,SYSTIMESTAMP,:h_userId,:h_progId
);
if (check_dberror()) {
DEBUGF(("Error: insert error. (31b) row = %d\n", i+1));
status = -1;
break;
}
wcnt++;
}
EXEC SQL CLOSE cur_pktm;
}
DEBUGF((buf, "Loop end. read = %d, write = %d\n", rcnt, wcnt));
EXEC SQL CLOSE cur_tri;
fprintf(stdout, "開店前取引先DB 登録件数 = %d件\n", wcnt);
return status;
}
oracle转postgre这个.pc文件转成.pgc文件需要改哪