edc_rpt.ec
来自「在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便」· EC 代码 · 共 127 行
EC
127 行
/*************************************************
* EDC对帐错帐报表
*
* 最后修改: 周国祥 2001/08/16
*************************************************/
#include <stdio.h>
#include <math.h>
#include "all.h"
#include "macro_def.h"
$include "db_struct.h"
$include sqlca;
EXEC SQL WHENEVER SQLERROR CALL error_handler;
EXEC SQL WHENEVER SQLWARNING CALL warning_handler;
EXEC SQL WHENEVER NOT FOUND CALL notfound_handler;
extern void l_type2buf();
extern char G_cen_bankid[12];
extern char G_bankid[12];
int edc_rpt(filename, sys, logic_date)
char *filename;
S_sys_param sys;
$parameter char *logic_date;
{
$S_tran_ls ls;
FILE *fp;
char sign_bankid[12], sign_hostid[3];
if (!(fp = fopen(filename, "w"))) {
daylog(ERROR, "Open %s for write error!", filename);
return(-1); /* File operate error */
}
del_st_space("sys_param", &sys);
FileHead_ER(fp, sys, logic_date);
$declare edc_cur cursor for
select * from err_tran_ls
where snd_settle_date = :logic_date
order by merchant_id, terminal_id, trace_no, edc_err_flag;
if (SQLCODE){
daylog(ERROR, "Declare failed![%d]", SQLCODE);
fclose(fp);
return(-2);
}
$open edc_cur;
if (SQLCODE) {
daylog(ERROR, "Open edc_cur error![%d]", SQLCODE);
fclose(fp);
return(-2); /* Database operate error */
}
while (1) {
$fetch edc_cur into :ls;
if (SQLCODE == 100) break;
if (SQLCODE) {
daylog(ERROR, "Fetch edc_cur error![%d]", SQLCODE);
$close edc_cur;
fclose(fp);
return(-2); /* Database operate error */
}
del_st_space("tran_ls", &ls);
#ifdef wyz020514_mod
#else
if (strcmp(G_cen_bankid, G_bankid)) {
get_sign_bank(ls.merchant_id, sign_bankid, sign_hostid);
DelSpace(sign_bankid);
if (strcmp(G_bankid, sign_bankid))
continue;
}
#endif
FileDetail_ER(fp, &ls);
}
$close edc_cur;
FileTail_ER(fp);
fclose(fp);
return(0);
}
int FileHead_ER(FILE *fp, S_sys_param sys, char *logic_date)
{
char date[11], time[9];
char bank_name[128];
char logic_date1[11]; /* YYYY/MM/DD */
getdatef(date, "/");
gettimef(time, ":");
fprintf(fp, "%49s中国银行BTS系统\n", " ");
fprintf(fp, "%49sEDC对帐错帐报表\n", " ");
str2date(logic_date1, logic_date, "/");
fprintf(fp, "BTS-804%91s对帐日期: %s\n", " ", logic_date1);
get_bank_name(G_bankid, "00", bank_name);
fprintf(fp, "%-5.5s%-96s%s %s\n", G_bankid, bank_name, date, time);
fprintf(fp, "----------------------------------------------------------------------------------------------------------------------\n");
fprintf(fp, "%-19s %-8s %-8s %14s %6s %-15s %-8s %6s %7s %-10s %-12s\n", "卡 号", "交易类型", "原类型", "交易金额", "授权码", "商户号", "EDC 号", "流水号", "批次号", "逻辑日期", "备 注");
fprintf(fp, "----------------------------------------------------------------------------------------------------------------------\n");
return(0);
}
int FileDetail_ER(FILE *fp, S_tran_ls *pls)
{
char tran_name[9], old_name[9];
l_type2buf(pls->tran_type, pls->void_tran_type, pls->offline_flag, tran_name);
if (pls->tran_type == POS_VOID)
l_type2buf(pls->void_tran_type, 0, pls->offline_flag, old_name);
else
old_name[0] = 0;
fprintf(fp, "%-19.19s %-8s %-8s %14.2lf %6s %-15.15s %-8.8s %6ld %7ld %-10s %-12s\n", pls->card_no, tran_name, old_name, pls->tran_amt, pls->auth_no, pls->merchant_id, pls->terminal_id, pls->trace_no, pls->batch_no, pls->snd_settle_date, (pls->edc_err_flag[0] == '1') ? "EDC 多此交易" : "BTS 多此交易");
return(0);
}
int FileTail_ER(FILE *fp)
{
fprintf(fp, "----------------------------------------------------------------------------------------------------------------------\n");
return(0);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?