cen_rpt.ec
来自「在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便」· EC 代码 · 共 132 行
EC
132 行
/****************************************************
* 中心对帐错帐报表
*
* 最后修改: 周国祥 2001/08/19
****************************************************/
#include <stdio.h>
#include <math.h>
#include "all.h"
$include "db_struct.h"
$include sqlca;
extern char G_cen_bankid[12];
extern char G_bankid[12];
EXEC SQL WHENEVER SQLERROR CALL error_handler;
EXEC SQL WHENEVER SQLWARNING CALL warning_handler;
EXEC SQL WHENEVER NOT FOUND CALL notfound_handler;
int cen_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 */
}
FileHead_CR(fp, sys, logic_date);
$declare cen_cur cursor for
select * from err_center_ls
where tran_flag in ('0', '4') /* 正常,已退货 */
and saf_flag = '0'
and snd_settle_date = :logic_date;
$open cen_cur;
if (SQLCODE) {
daylog(ERROR, "Open cen_cur error!");
fclose(fp);
return(-2); /* Database operate error */
}
while (1) {
$fetch cen_cur into :ls;
if (SQLCODE == 100) break;
if (SQLCODE) {
daylog(ERROR, "Fetch cen_cur error![%d]", SQLCODE);
$close cen_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_CR(fp, &ls);
}
$close cen_cur;
FileTail_CR(fp);
fclose(fp);
return(0);
}
int FileHead_CR(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, "%58s中国银行BTS系统借记卡\n", " ");
fprintf(fp, "%58s中心对帐错帐报表\n", " ");
str2date(logic_date1, logic_date, "/");
fprintf(fp, "BTS-802%110s对帐逻辑日: %s\n", " ", logic_date1);
#ifdef wyz020429_mod
get_bank_name(sys.bank_id, sys.host_id, bank_name);
fprintf(fp, "%-5.5s%-115s%s %s\n", sys.bank_id, bank_name, date, time);
#else
get_bank_name(G_bankid, "00", bank_name);
fprintf(fp, "%-5.5s%-115s%s %s\n", G_bankid, bank_name, date, time);
#endif
fprintf(fp, "-------------------------------------------------------------------------------------------------------------------------------------------\n");
fprintf(fp, "%-21s %-8s %-8s %14s %6s %-15s %-8s %-6s %-6s %-15s %-8s %-10s %-12s\n", "卡 号", "交易类型", "原类型", "交易金额", "授权号", "商户号", "EDC 号", "收单行", "发卡行", "交易日期", "交易时间", "逻辑日期", "备 注");
fprintf(fp, "-------------------------------------------------------------------------------------------------------------------------------------------\n");
return(0);
}
int FileDetail_CR(FILE *fp, S_tran_ls *pls)
{
char tran_name[9], old_name[9];
char logic_date[11]; /* YYYY/MM/DD */
char tmp_date[11]; /* YYYY/MM/DD */
char tmp_time[9]; /* hh:mm:ss */
str2date(logic_date, pls->snd_settle_date, "/");
str2date(tmp_date, pls->local_sys_date, "/");
str2time(tmp_time, pls->local_sys_time, ":");
type2buf(pls->tran_type, tran_name);
if (pls->void_tran_type)
type2buf(pls->void_tran_type, old_name);
else
old_name[0] = 0;
fprintf(fp, "%-6.6s-%-4.4s-%-9.9s %-8s -8s %14.2lf %6s %-15.15s %-8.8s %-6.6s %-6.6s %-10s %-8s %-10s %-12s\n", pls->card_no, pls->card_no + 6, pls->card_no + 10, tran_name, old_name, pls->tran_amt, pls->auth_no, pls->merchant_id, pls->terminal_id, pls->acq_bank_id, pls->iss_bank_id, tmp_date, tmp_time, logic_date, (pls->edc_err_flag[0] == '1') ? "中心多此交易" : "本地多此交易");
return(0);
}
int FileTail_CR(FILE *fp)
{
fprintf(fp, "-------------------------------------------------------------------------------------------------------------------------------------------\n");
return(0);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?