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

📄 batch_in.ec

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 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 + -