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

📄 mcommitys.c

📁 电力与银行通讯的源码 1.应用tuxedo中间件. 2.与银行的前置机通讯. 3.proc*c 的应用
💻 C
字号:
/*	MCOMMIT:销帐	Input : 	1	银行序号	2	电力系统为每一个联网的银行一个编号,以使同一系统可以与多个银行进行联网。	2	客户编号	10		3	销帐流水	20	该流水由银行方生成,并作为对帐主要标识。	4	本次缴费的总金额	13	格式:##########.##	5	是否打印发票标志	1	1-打印;0-不打印		6	缴费时的电费笔数n	4	由该项决定ITEM_DATA的行数	7   对帐标志            20	8	缴费的项目数组	41 * n	交几笔产生几行数据,如果全部交纳,则将取费用的所有结果全部列出7的数据格式:	电费流水	CHAR(15)		电费总额	CHAR(13)	##########.##	违约金额	CHAR(13)	##########.##	Output: 	1	返回状态(可以转换成int型)	8					 0--成功					-11--外部凭证未建立或金额不足					-21--流水帐中累计和不相符					-31--无法记入预收余额					-41--无法记入调尾余额					-51--无法记入电费表,可能是应收有变化,或金额超出					-61--记流水帐出错					-1--操作失败*/#include "public.h"#define  SIZE_OF_DATA	41   /*每一明细记录的大小*/#ifdef __cplusplusextern "C"#endifvoid#ifdef MW_CICSmain(MW_SVCINFO * transb)h#endif#ifdef MW_TUXEDOMCOMMITYS(MW_SVCINFO * transb)#endif{	/*定义输入参数*/	int  iBankSerial = 0;	/*银行编号*/	char szKHBH[11] = "";	/*客户编号*/	char szPaySum[14];		/*销帐总金额*/	char szPaySerialNbr[21] = "";	/*销帐的流水号*/	int  iItemCount = 0;	/*销帐的明细记录数*/	char *szItemData;		/*销帐明细*/	char szPrintFlag[2];	/*是否打印发票的标志*/	char szdzFlag[21];        /*对帐标志*/	/*定义输出参数*/	int  iReturn = 0;	/*定义数据库变量*/	char sz_DFID[16] = "";	char sz_BD_SUM[14] = "";	char sz_LATE_FEE[14] = "";	/*定义临时变量*/	char szMsg[255];	void *ppVar[2];	char szSql[1000];	//char szDropSql[100] = "drop table #tmp_bank_pay";	char szDelSql[100] = "delete from I_TMP_BANK_PAY where ID=@@spid";	char szTemp[1000]= "";	char *szInBuf;	BOOL bRet;	int i = 0;	int nStatus = 0;	unsigned char pParam[] = TYPE_INT TYPE_CHAR TYPE_CHAR TYPE_CHAR TYPE_INT TYPE_CHAR TYPE_CHAR TYPE_INT;	CMiddleWare mwMidWare;	MW_Init(&mwMidWare,transb);	MW_AllocateString(&mwMidWare,1024); 	szInBuf = MW_GetInBuf(&mwMidWare);	if (szInBuf == NULL)	{		gf_Return(&mwMidWare,-1,"没有输入参数!");		return;	}	/*取输入参数,格式:	BANK_SERIAL(2)KHBH(10)PAY_SERIAL_NBR(20)PAY_SUM(13.2)PRINT_FLAG(1)ITEM_COUNT(4) 41 * n	*/	MW_Trace(szInBuf);	strncpy(szTemp,szInBuf,2);	szTemp[2] = '\0';	iBankSerial = atoi(szTemp);	strncpy(szKHBH,szInBuf + 2,10);	szKHBH[10] = '\0';	strncpy(szPaySerialNbr,szInBuf + 12,20);	szPaySerialNbr[20] = '\0';	strncpy(szPaySum,szInBuf + 32,13);	szPaySum[13] = '\0';	strncpy(szPrintFlag ,szInBuf + 32 + 13,1);	szPrintFlag[1] = '\0';	strncpy(szTemp,szInBuf + 32 + 14,4);	szTemp[4] = '\0';	iItemCount = atoi(szTemp);    strncpy(szdzFlag,szInBuf + 32 + 18,20);    szdzFlag[20]= '\0';	//MW_Trace(szdzFlag);//	strncpy(szdzFlag,szInBuF + 32 + 18,20);//	szdzFlag[20]= '\0';    szItemData = (char*)(szInBuf + 32 + 18 +20);/*	MW_GetValueInt(&mwMidWare,BANK_SERIAL,"BANK_SERIAL",&iBankSerial);	MW_GetValue(&mwMidWare,KHBH,"KHBH",szKHBH,sizeof(szKHBH));	MW_GetValue(&mwMidWare,PAY_SERIAL_NBR,"PAY_SERIAL_NBR",szPaySerialNbr,sizeof(szPaySerialNbr));	MW_GetValueDouble(&mwMidWare,PAY_SUM,"PAY_SUM",&dPaySum);	MW_GetValueInt(&mwMidWare,PRINT_FLAG,"PRINT_FLAG",&iPrintFlag);	MW_GetValueInt(&mwMidWare,ITEM_COUNT,"ITEM_COUNT",&iItemCount);*/	/*根据ItemCount的值分配ItemData的大小*//*	szItemData = (char *)malloc(SIZE_OF_DATA * iItemCount + 10);	if (szItemData == NULL)	{		gf_Return(&mwMidWare,-1,"分配内存失败");		return;	}	MW_GetValue(&mwMidWare,ITEM_DATA,"ITEM_DATA",szItemData,sizeof(SIZE_OF_DATA * iItemCount + 10));*/	/*创建临时表#tmp,用于存放本次销帐的明细记录*/	/*strcpy(szSql,"create table #tmp_bank_pay (DFID numeric(15,0) not null,POWER_FEE numeric(13,2) not null,LATE_FEE numeric(13,2) not null)");	if (!DB_ExecuteSQL(&theDatabase,szSql))	{		gf_Return(&mwMidWare,-1,"创建费用临时表失败!");		return;	}	*/	/*将ItemData中的数据入到临时表中*/	for (i =0 ;i < iItemCount;i++)	{		strncpy(sz_DFID,szItemData + i * SIZE_OF_DATA,15);		sz_DFID[15] = '\0';		strncpy(sz_BD_SUM,szItemData + i * SIZE_OF_DATA + 15,13);		sz_BD_SUM[13] = '\0';		strncpy(sz_LATE_FEE,szItemData + i * SIZE_OF_DATA + 15 + 13,13);		sz_LATE_FEE[13] = '\0';		if (atof(sz_DFID) !=0 && atof(sz_BD_SUM) + atof(sz_LATE_FEE) != 0)		{			sprintf(szSql,"insert into I_TMP_BANK_PAY values(@@spid,%15s,%13s,%13s)",sz_DFID,sz_BD_SUM,sz_LATE_FEE);			//sprintf(szSql,"insert into #tmp_bank_pay values(%15s,%13s,%13s)",sz_DFID,sz_BD_SUM,sz_LATE_FEE);			if (!DB_ExecuteSQL(&theDatabase,szSql))			{				sprintf(szMsg,"%s  执行失败!",szSql);				DB_ExecuteSQL(&theDatabase,szDelSql);				gf_Return(&mwMidWare,-1,szMsg);				return;			}		}	}/*	strcpy(szSql,"insert into gjl_temp select * from #tmp_bank_pay");	DB_ExecuteSQL(&theDatabase,szSql);	DB_CommitTransaction(&theDatabase);*//*@BANK_SERIAL INT, 		--银行序号,电力系统为每一个联网的银行一个编号,以使同一系统可以与多个银行进行联网。1--GH 工商银行2--NH 农业银行3--ZH 中国银行4--JH 建设银行5--JT 交通银行6--ZS 招商银行7--SH 商业银行8--GD 光大银行9--MS 民生银行0--YC 邮政局@KHBH CHAR(10),			--客户编号@PAY_SERIAL_NBR	CHAR(20),	--销帐流水,该流水由银行方生成,并作为对帐主要标识。@PAY_AMOUNT CHAR(13),		--本次缴费的总金额格式:##########.##@ITEM_COUNT INT,		--缴费时的电费笔数@PRINT_FLAG CHAR(1),		--是否打印发票标志 1-打印;0-不打印@I_RETURN INT output		--返回状态,销帐结果*/	/*调用销帐存储过程进行销帐*///	MW_Trace("before procedure");	iReturn = 0;	ppVar[0] = &iReturn;	bRet = DB_ExecuteStoredProcedureWithResult(&theDatabase, "Up_c_bank_commit_ys", &nStatus, 		ppVar,1,		pParam,iBankSerial,szKHBH,szPaySerialNbr,szPaySum,iItemCount,szPrintFlag,szdzFlag,0);	DB_ExecuteSQL(&theDatabase,szDelSql);	if(!bRet || nStatus)	//失败	{		if (iReturn >= 0) iReturn = -1;		gf_Return(&mwMidWare,iReturn,"执行Up_c_bank_commit_ys失败");		return;	}	/*返回*/	gf_Return(&mwMidWare,iReturn,"");	return;}

⌨️ 快捷键说明

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