📄 quest.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 + -