⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quest.ec

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 EC
字号:
/****************************************************
 *	请求交易明细 request()
 *
 * 最后修改:	周国祥 2001/08/25
 ****************************************************/
#include <stdio.h>
#include <unistd.h>
#include <math.h>
#include <curses.h>
#include "all.h"
#include "tool.h"
#include "macro_def.h"

#define SRV_PORT 6264
#define SRV_ID 11

$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;

int request()
{
	WINDOW *my_win;
	char filename[128], today[11], obj[128];
	unsigned char items;
	$S_sys_param sys;
	$S_net_settle net;
	$char ip[21];

	$select * into :sys from sys_param;
	if (SQLCODE) {
		daylog(ERROR, "Unable select sys_param table!");
		return(-1);
	}
	del_st_space("sys_param", &sys);
	if (!strcmp(sys.bank_id, sys.adm_bank_id))
		return(0);

	sprintf(filename, "/tmp/.request.%d", getpid());
	scr_dump(filename);

	disp_below("请求交易明细");
	clear_wline(stdscr, LINES-1);
	h_prompt(LINES-1, 1, "                                                                 < ESC 退出 > ", 0, 0);
	h_prompt(LINES-1, 1, "请求交易明细", 0, 0);
	my_win = newwin(19, 80, 3, 0);
	mvwprintw(my_win, 0, 0, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");

	mvwprintw(my_win, 2, 4, "处理中, 请稍候 ...");
	wrefresh(my_win);

	$declare net_cur cursor for
	select * from net_settle
	where snd_bank_id = :sys.adm_bank_id
	order by check_date DESC, check_time DESC;

	$open net_cur;
	if (SQLCODE) {
		daylog(ERROR, "Open net_cur error!");
		h_winprompt(my_win, 17, 4, "数据库操作错误!", 1, 0);
		goto end;
	}

	$fetch net_cur into :net;
	if (SQLCODE) {
		$close net_cur;
		daylog(ERROR, "Fetch net_cur error!");
		h_winprompt(my_win, 17, 4, "数据库操作错误!", 1, 0);
		goto end;
	}
	del_st_space("net_settle", &net);

	$close net_cur;

	$select settle_ip_addr into :ip from bank_base
	where bank_id = :sys.adm_bank_id
	and   host_id = :sys.adm_host_id;
	if (SQLCODE) {
		daylog(ERROR, "Fetch ip error!");
		h_winprompt(my_win, 17, 4, "数据库操作错误!", 1, 0);
		goto end;
	}

	items = 0;
	if ((net.n_cre_cnt != net.l_cre_cnt) ||
	     fabs(net.n_cre_amt - net.l_cre_amt) >= 0.005)
		items |= 0x80;
	if ((net.n_void_cre_cnt != net.l_void_cre_cnt) ||
	     fabs(net.n_void_cre_amt - net.l_void_cre_amt) >= 0.005)
		items |= 0x40;
	if ((net.n_deb_cnt != net.l_deb_cnt) ||
	     fabs(net.n_deb_amt - net.l_deb_amt) >= 0.005)
		items |= 0x20;
	if ((net.n_void_deb_cnt != net.l_void_deb_cnt) ||
	     fabs(net.n_void_deb_amt - net.l_void_deb_amt) >= 0.005)
		items |= 0x10;
	if (net.n_trans_cnt != net.l_trans_cnt)
		items |= 0x08;
	if (net.n_void_trans_cnt != net.l_void_trans_cnt)
		items |= 0x04;
	if (net.n_auth_cnt != net.l_auth_cnt)
		items |= 0x02;

	getdatef(today, "");
	sprintf(obj, "%s/box/mx/R/Debit%4.4s.%2.2s%2.2s%2.2s",
		getenv("WORKDIR"), sys.adm_bank_id,
		today + 2, today + 4, today + 6);

	if (quest(ip, sys.bank_id, net.logic_date, items, obj)) {
		daylog(ERROR, "Send request error!");
		h_winprompt(my_win, 17, 4,
			    "无法发送请求, 请联系系统管理员!", 1, 0);
		goto end;
	}

	mvwprintw(my_win, 4, 4, "请求已交由中心处理!");
	mvwprintw(my_win, 6, 4, "即将送到的交易明细文件名为 %s", obj);
	wgetch(my_win);
end:
	delwin(my_win);
	scr_restore(filename);
	unlink(filename);
	return(0);
}

int quest(ip, bankid, logic_date, items, obj)
	char *ip;
	char *bankid;
	$parameter char *logic_date;
	unsigned char items;
	$parameter char *obj;
{
	struct _pkg {
		char flag;
		char bankid[12];
		char logic_date[11];
		unsigned char items;
		char obj[128];
	} pkg;
	char ret;
	$int sock, count;
	$short indi;

	$select count(*) into :count:indi from debit_mx
	where filename = :obj;

	if (SQLCODE < 0) {
		daylog(ERROR, "Select debit_mx error!");
		return(-1);
	}

	sock = items;
	if (count == 0 || indi == -1)
		$insert into debit_mx
		values (:obj, :logic_date, :sock, "0");
	else
		$update debit_mx
		set logic_date = :logic_date, items = :sock, flag = "0"
		where filename = :obj;

	if (SQLCODE < 0) {
		daylog(ERROR, "Insert/Update debit_mx error!");
		return(-1);
	}

	pkg.flag = '0';
	strcpy(pkg.bankid, bankid);
	strcpy(pkg.logic_date, logic_date);
	pkg.items = items;
	strcpy(pkg.obj, obj);

	if (init_lnk_to_srv(&sock, ip, SRV_PORT, SRV_ID) < 0) {
		daylog(ERROR, "Connect %s error!", ip);
		hangup_lnk(sock);
		return(-1);
	}
	if (snd_str(sock, (char *)&pkg, sizeof(struct _pkg)) < 0) {
		daylog(ERROR, "Write sock error!");
		hangup_lnk(sock);
		return(-1);
	}
	if (read(sock, &ret, 1) < 0 || ret != '1') {
		daylog(ERROR, "Get commit error!");
		hangup_lnk(sock);
		return(-1);
	}
	hangup_lnk(sock);
	return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -