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

📄 public.ec

📁 界面库
💻 EC
字号:
/**************************************************************
 * 功能: 		数据库处理公共函数 public.ec
 * 最后修改日期:	
 *
 * 周国祥	2002/04/09 从dbprg/public.ec中分离过来
 **************************************************************/

#include <stdio.h>
#include <curses.h>
#include "mytools.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;

$char sqlstring[2000];

$include "db_struct.h";

int sql_run(str)
char *str;
{
	strcpy(sqlstring,str);
	EXEC SQL PREPARE s_comm FROM :sqlstring;
	if (sqlca.sqlcode) {
		errcall(ERROR, "%d", sqlca.sqlcode);
		return (sqlca.sqlcode);
	}
	EXEC SQL EXECUTE s_comm;
	return(sqlca.sqlcode);
}

int query_count(str)
char *str;
{
	$int counts;
	$short indi;

	strcpy(sqlstring,str);
	EXEC SQL PREPARE q_comm_1 FROM :sqlstring;
	if (sqlca.sqlcode) {
		errcall(ERROR, "PREPARE [%s] failed (%d)",
			sqlstring, sqlca.sqlcode);
		return -1;
	}

	EXEC SQL DECLARE query_cur CURSOR FOR q_comm_1;
	if (sqlca.sqlcode) {
		errcall(ERROR, "DECLARE [%s] failed (%d)",
			sqlstring, sqlca.sqlcode);
		return -1;
	}
	EXEC SQL OPEN query_cur;
	if (sqlca.sqlcode) {
		errcall(ERROR, "OPEN [%s] failed (%d)",
			sqlstring, sqlca.sqlcode);
		return -1;
	}
	EXEC SQL FETCH query_cur INTO :counts:indi;
	if (sqlca.sqlcode && sqlca.sqlcode == 100) {
		errcall(ERROR, "FETCH failed (%d)",
			sqlca.sqlcode);
		return -1;
	}
	if ((indi == -1) || sqlca.sqlcode) counts = 0;
	EXEC SQL CLOSE query_cur;

	return(counts);
}

long calc_long(str)
char *str;
{
	$long total;
	$short indi;

	strcpy(sqlstring,str);
	EXEC SQL PREPARE q_comm_2 FROM :sqlstring;
	EXEC SQL DECLARE calcl_cur CURSOR FOR q_comm_2;
	EXEC SQL OPEN calcl_cur;
	EXEC SQL FETCH calcl_cur INTO :total:indi;
	if ((indi == -1) || sqlca.sqlcode) total = 0;
	EXEC SQL CLOSE calcl_cur;
	return(total);
}

double calc_double(str)
char *str;
{
	$double total;
	$short indi;

	strcpy(sqlstring,str);
	EXEC SQL PREPARE q_comm_3 FROM :sqlstring;
	EXEC SQL DECLARE calcd_cur CURSOR FOR q_comm_3;
	EXEC SQL OPEN calcd_cur;
	EXEC SQL FETCH calcd_cur INTO :total:indi;
	if ((indi == -1) || sqlca.sqlcode) total = 0;
	EXEC SQL CLOSE calcd_cur;
	return(total);
}

int get_title(char *title_name)
{
	$char center_name[41];
	$short indi;
	$char	bankid[12], hostid[3];

	title_name[0] = 0;
	EXEC SQL SELECT bank_id, host_id
		INTO :bankid, :hostid
		FROM sys_param;
	if (sqlca.sqlcode)
		return(sqlca.sqlcode);
	DelSpace(bankid);
	DelSpace(hostid);

	EXEC SQL SELECT bank_name
		INTO :center_name
		FROM bank_info
		WHERE bank_id = :bankid and host_id = :hostid;
	if (!sqlca.sqlcode)
		strcpy(title_name, center_name);
	return(sqlca.sqlcode);
}

/*
 * 获取bankid之IP地址
 */
int	get_ipaddr( id_in, hid_in, ip_in )
char	id_in[12], hid_in[3], ip_in[21];
{
	$char id[12], ip[21];
	int	len;

	memcpy(id, id_in, 12);
	memcpy(ip, ip_in, 21);

	EXEC SQL DECLARE addr_cur CURSOR FOR
	SELECT tran_ip_addr1
	FROM	bank_base
	WHERE	bank_id = :id;

	EXEC SQL OPEN addr_cur;
	EXEC SQL FETCH addr_cur INTO :ip;
	if (sqlca.sqlcode)
		return(sqlca.sqlcode);

	DelSpace(ip);
	strcpy(ip_in, ip);
	
	return (0);
}

int get_master(card, t)
char *card;
$parameter S_card_acct *t;
{
	$char m_card_no[19];
	
	sprintf(m_card_no,"%12.12s?00?",card);
/*================== WuBin 2001-4-9 21:02 ======Start==============
	EXEC SQL SELECT T41_card_no, T41_c_amt, T41_auth_cnt, T41_auth_amt,
			T41_auth_total, T41_balance, T41_deposit_cnt, 
			T41_deposit_amt
		 INTO :t->T41_master_card_no, :t->T41_c_amt, :t->T41_auth_cnt, 
		      :t->T41_auth_amt, :t->T41_auth_total, :t->T41_balance, 
		      :t->T41_deposit_cnt, :t->T41_deposit_amt
		 FROM card_acct 
		 WHERE T41_card_no MATCHES :m_card_no;
===========================2001-4-9 21:02=======End==============*/
	EXEC SQL SELECT card_no, card_amt, auth_cnt, auth_amt,
			auth_total, balance, deposit_cnt, 
			deposit_amt
		 INTO :t->card_no, :t->card_amt, :t->auth_cnt, 
		      :t->auth_amt, :t->auth_total, :t->balance, 
		      :t->deposit_cnt, :t->deposit_amt
		 FROM card_acct 
		 WHERE card_no MATCHES :m_card_no;


	return(sqlca.sqlcode);
}


int get_master_cardno(char *card, char *master)
{
	$char card_no[19],master_cardno[19],acc[13];
	
	strcpy(card_no,card);
	memcpy(acc,card_no,12);
	acc[12]='\0';

/*================== WuBin 2001-4-9 21:14 ======Start==============
	EXEC SQL SELECT MAX(T41_card_no) INTO :master_cardno 
		 FROM card_t 
		 WHERE T41_card_no[1,12] =:acc AND  
		       T41_card_no[14,15]="00";
===========================2001-4-9 21:14=======End==============*/
	EXEC SQL SELECT MAX(card_no) INTO :master_cardno 
		 FROM card_acct 
		 WHERE card_no[1,12] =:acc AND  
		       card_no[14,15]="00";

	memcpy(master,master_cardno,19);

	if(SQLCODE)  errcall(ERROR,"get_master_cardno error! [%d]",SQLCODE);

	return(sqlca.sqlcode);
}

/* 获取主卡帐户状态 */
int get_master_accstat(char *card, char *stat)
{
	$char a_stat[2],master[19];
	char card_no[19];
	int ret;
	
	strcpy(card_no,card);

	ret=get_master_cardno(card_no,master);
	if(ret) return(ret);

/*================== WuBin 2001-4-9 21:16 ======Start==============
	EXEC SQL SELECT T41_a_stat INTO :a_stat 
		 FROM card_acct 
		 WHERE T41_card_no = :master;
===========================2001-4-9 21:16=======End==============*/
	EXEC SQL SELECT master_stat INTO :a_stat 
		 FROM card_acct 
		 WHERE card_no = :master;

	memcpy(stat,a_stat,1);

	if(SQLCODE<0)  errcall(ERROR,"get_master_accstat error! [%d]",SQLCODE);
	return(sqlca.sqlcode);
}


int get_master_accno(char *card, char *no)
{
	$char acc_no[22],master[19];
	char card_no[19];
	int ret;
	
	strcpy(card_no,card);

	ret=get_master_cardno(card_no,master);
	if(ret) return(ret);

/*================== WuBin 2001-4-9 21:17 ======Start==============
	EXEC SQL SELECT T41_acc_no INTO :acc_no 
		 FROM card_acct 
		 WHERE T41_card_no = :master;
===========================2001-4-9 21:17=======End==============*/
	EXEC SQL SELECT acct_no INTO :acc_no 
		 FROM card_acct 
		 WHERE card_no = :master;

	memcpy(no,acc_no,12); /* 帐户号现只用12位 */

	if(SQLCODE)  errcall(ERROR,"get_master_accno error! [%d]",SQLCODE);
	return(sqlca.sqlcode);
}

/*
 * 根据商户号获取签约行行号及主机号
 */
int get_sign_bank(merchantid, bankid, hostid)
char	*merchantid, *bankid, *hostid;
{
	$char	merchant_id[16], bank_id[12], host_id[3];

	strcpy(merchant_id, merchantid);
	DelSpace(merchant_id);
	$select sign_bank_id, sign_host_id
	into $bank_id, $host_id
	from merchant_base
	where merchant_id = $merchant_id;

	if (SQLCODE) {
		errcall(ERROR, "get_sign_bank(%s) select eerror(%d)!", merchant_id, SQLCODE);
		bankid[0] = '\0';
		hostid[0] = '\0';
		return(-1);
	}
	DelSpace(bank_id);
	DelSpace(host_id);
	strcpy(bankid, bank_id);
	strcpy(hostid, host_id);
	return(0);
}

/*
 *	根据货币代码获取货币的中文名称 ADD Wubin
 */

int get_ccy_name(char *id, char *name)
{
	$char ccy_id[16], cn_name[31];

	cn_name[0] = 0;

	strcpy(ccy_id, id);

	EXEC SQL SELECT ccy_name INTO :cn_name FROM ccy_type WHERE ccy_type = :ccy_id;

	if (sqlca.sqlcode == 0) {
		rm_tail_space(cn_name);
		strcpy(name, cn_name);
	}

	return(sqlca.sqlcode);
}

$ifdef wyz020509_mod;
$else;
/*
int creat_prt_dir(bankid)
char	bankid[12];
{
	$char	sqlstr[512];
	$char	tmp_bankid[12];
	char	filename[128];

	sprintf(sqlstr, "SELECT bank_id from bank_info	\
		where adm_bank_id = \'%s\'		\
		or bank_id = \'%s\'",
		bankid, bankid);

	EXEC SQL PREPARE sel_bank_id FROM :sqlstr;
	if( SQLCODE<0 ) {
		errcall(ERROR, "PREPARE FAILED[%ld][%s]", SQLCODE, sqlstr);
		return -1;
	}

	EXEC SQL DECLARE cur_sel_bank CURSOR WITH HOLD FOR sel_bank_id;
	if( SQLCODE<0 ) {
		errcall(ERROR, "DECLARE FAILED[%ld][%s]", SQLCODE, sqlstr);
		return -1;
	}

	EXEC SQL OPEN cur_sel_bank;
	if( SQLCODE<0 ) {
		errcall(ERROR, "OPEN FAILED[%ld]", SQLCODE);
		return -1;
	}

	while(1) {
		EXEC SQL FETCH cur_sel_bank INTO :tmp_bankid;
		if (SQLCODE < 0) {
			errcall(ERROR, "FETCH FAILED(%d)", SQLCODE);
			return -1;
		}
		else if (SQLCODE == 100) 
			break;

		DelSpace(tmp_bankid);
		sprintf(filename, "prt/%s", tmp_bankid);
		if (create_tmp_file(filename) < 0) {
			errcall(ERROR, "create_tmp_file(%s) failed", filename);
		}
	}

	return 0;
}
*/
$endif;

⌨️ 快捷键说明

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