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 + -
显示快捷键?