📄 batch_in.ec
字号:
#include <stdio.h>
#include <curses.h>
#include <stdlib.h>
#include "mytools.h"
#include "tool.h"
EXEC SQL INCLUDE sqlca;
EXEC SQL WHENEVER SQLERROR CALL error_handler;
EXEC SQL WHENEVER SQLWARNING CALL warning_handler;
EXEC SQL WHENEVER NOT FOUND CALL notfound_handler;
void my_read(char *str, int len, FILE *fp)
{
fread(str, len, 1, fp);
str[len] = 0;
}
int new_batch_in(WINDOW *sql_win, char *src_file)
{
FILE *fp;
char tmp[80], nop[2];
int ret;
char s_card_amt[13];
char s_deposit_cnt[13];
char s_deposit_amt[13];
char s_auth_total[13];
char s_balance[13];
char s_auth_cnt[13];
char s_auth_amt[13];
$char card_no[20]; /* 卡号 */
$char expire[5]; /* 有效期 */
$char card_stat[2]; /* 卡状态 0.正常/1.冻结/2.止付 */
$char master_card_no[20]; /* Master卡号 */
$char master_stat[2]; /* 卡状态 0.正常/1.冻结/2.止付 */
$char attach_flag[2]; /* 附属标志 */
$char acct_no[23]; /* 卡帐号 */
$int deposit_cnt; /* 存款次数 */
$double deposit_amt; /* 存款金额 */
$double card_amt; /* 信用金额 */
$int auth_cnt; /* 当日已授权次数 */
$double auth_amt; /* 当日已授权金额 */
$double auth_total; /* 已授权金额 */
$double balance; /* 帐户余额 */
$char owner[21]; /* 持卡人 */
$char person_id[19]; /* 身份证 */
$char address[33]; /* 联系地址 */
$char job[33]; /* 工作单位 */
$char telephone[16]; /* 联系电话 */
$char update_oper[7]; /* 登记柜员 */
$char update_date[9]; /* 维护日期 */
$char update_time[7]; /* 维护时间 */
$int count;
$short indi;
fp = fopen(src_file, "r");
if (!fp) {
errcall(ERROR, "Open file %s error!", src_file);
return(-1);
}
mvwprintw(sql_win, 16, 1, "卡帐户转入中, 请稍候 ...");
wrefresh(sql_win);
begin_tran();
exec sql lock table card_acct in exclusive mode;
strcpy(update_oper, G_oper_no);
my_read(card_no, 19, fp);
while (!feof(fp)) {
my_read(expire, 4, fp);
my_read(card_stat, 1, fp);
my_read(master_card_no,19,fp);
my_read(master_stat,1,fp);
my_read(attach_flag,1,fp);
my_read(acct_no,22,fp);
my_read(s_deposit_cnt,12,fp);
deposit_cnt = 0;
my_read(s_deposit_amt,12,fp);
deposit_amt = atof(s_deposit_amt) / 100;
my_read(s_card_amt, 12, fp);
card_amt = atof(s_card_amt) / 100;
my_read(s_auth_cnt,12,fp);
auth_cnt = 0;
my_read(s_auth_amt,12,fp);
auth_amt = 0;
my_read(s_auth_total, 12, fp);
auth_total = atof(s_auth_total) / 100;
my_read(s_balance, 12, fp);
balance = atof(s_balance) / 100;
my_read(owner, 20, fp);
my_read(person_id, 18, fp);
my_read(address, 32, fp);
my_read(job, 32, fp);
my_read(telephone, 15, fp);
exec sql select count(*) into :count:indi
from card_acct
where card_no = :card_no;
if ((count == 0) || (indi == -1))
exec sql insert into card_acct
/*================== WuBin 2001-6-20 14:40 ======Start==============
values (:card_no, :expire, :c_stat, :c_amt, 0, 0,
:auth_total, :balance, :owner, :person_id,
:address, :job, :telephone, :oper);
===========================2001-6-20 14:40=======End==============*/
values (:card_no, :expire, :card_stat,
:master_stat, :attach_flag, :acct_no,
deposit_cnt, :deposit_amt, :card_amt,
auth_cnt, auth_amt, :auth_total,
:balance, :owner, :person_id,
:address, :job, :telephone,
:update_oper, :update_date, :update_time);
else
exec sql update card_acct set
expire = :expire, card_stat = :card_stat, master_stat = :master_stat,
attach_flag = :attach_flag, acct_no = :acct_no,
deposit_amt = :deposit_amt, card_amt = :card_amt,
auth_cnt = :auth_cnt, auth_amt = :auth_amt, deposit_cnt = :deposit_cnt,
auth_total = :auth_total, balance = :balance,
owner = :owner, person_id = :person_id, address = :address,
job = :job, telephone = :telephone,
update_oper = :update_oper, update_date = :update_date,
update_time = :update_time
where card_no = :card_no;
if (SQLCODE) {
rollback_tran();
errcall(ERROR, "card_acct batch_in error: SQLCODE[%d]",SQLCODE);
fclose(fp);
clear_wline(sql_win, 16);
return(-1);
}
fread(nop, 1, 1, fp);
my_read(card_no, 19, fp);
}
fclose(fp);
clear_wline(sql_win, 16);
sprintf(tmp, "由 %s 中转入卡帐户", src_file);
ret = misc_audit(tmp, sql_win, 16, 3);
if (ret) {
rollback_tran();
return(-1);
}
commit_tran();
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -