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