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

📄 mcheck.c

📁 电力与银行通讯的源码 1.应用tuxedo中间件. 2.与银行的前置机通讯. 3.proc*c 的应用
💻 C
字号:
/*	日对帐:Check	输入参数:	1	银行序号	2	参考确认销帐	2	截止对帐日期	8	截止的对帐的日期YYYYMMDD	3	结束标志	1	1=该数据包是最后一个,这时开始真实对帐,0=没有结束	4	记录数n	4	本次对帐的记录数,因对帐数据可能太多,故将对帐数据分批转送,用END_FLAG标志是否结束,每次最多2000条数据	5	对帐数据	76 * n	本次传送的数据包,格式如下:5的格式:	操作流水	CHAR(20)	销帐流水或返销流水	合计金额	CHAR(13)	##########.##	客户编号	CHAR(10)	用于简单校验	操作日期	CHAR(8)	YYYYMMDD	电费笔数    CHAR(4) 	打印标志    CHAR(1)     是否打印发票标志 1-打印;0-不打印	返销时的旧流水号	CHAR(20) 	--返销时的原销帐流水,缴费=空	输出参数:	1	返回状态(可以转换成int型)	8	0--成功;-1--失败*/#include "public.h"#ifdef __cplusplusextern "C"#endifvoid#ifdef MW_CICSmain(MW_SVCINFO * transb)#endif#ifdef MW_TUXEDOMCHECK(MW_SVCINFO * transb)#endif{/*一次转送的记录数*/#define CHECK_REC_COUNT 2000/*对帐的每条记录的字节数*/#define CHECK_REC_SIZE  76	/*定义输入参数*/	int  iBankSerial = 0;	char szCheckDate[9] = "";	int nRowCount = 0;	char szEndFlag[2] = "";	char *szCheckData;	/*定义数据库变量*/	char szKHBH[11] = "";	char szPaySerialNbr[21] = "";	double  dPayAmount = 0;	char szOperDate[9] = "";	int  iItemCount = 0;	char szPrintFlag[2] = "";	char szPaySerialOld[21] = "";	/*定义临时变量*/	char szMsg[255];	void *ppVar[10];	long  nVarLen[10];	char szTemp[100] = "";	char szSql[512];	BOOL bRet;	int nStatus = 0;	unsigned char pParam[] = TYPE_INT TYPE_CHAR TYPE_INT;	int i =0;	int iReturn = 0;	char *szInBuf;	CMiddleWare mwMidWare;	MW_Init(&mwMidWare,transb);	szInBuf = MW_GetInBuf(&mwMidWare);	if (szInBuf == NULL)	{		gf_Return(&mwMidWare,-1,"没有输入参数!");		return;	}/*	MW_Trace("OK1");*/	MW_AllocateString(&mwMidWare,1024); 	/*取输入的对帐数据:BANK_SERIAL(2)CHECK_DATE(8)END_FLAG(1)ROW_COUNT(4) 51 * n*/	strncpy(szTemp,szInBuf,2);	szTemp[2] = '\0';	iBankSerial = atoi(szTemp);	strncpy(szCheckDate,szInBuf + 2,8);	szCheckDate[8] = '\0';	strncpy(szEndFlag,szInBuf + 10,1);	szEndFlag[1] = '\0';	strncpy(szTemp,szInBuf + 11,4);	szTemp[4] = '\0';	nRowCount = atoi(szTemp);	szCheckData = (char *)(szInBuf + 15);	szCheckData[nRowCount * CHECK_REC_SIZE] = '\0';/*	MW_GetValue(&mwMidWare,BANK_CODE,"BANK_CODE",szBankCode,sizeof(szBankCode));	MW_GetValue(&mwMidWare,END_FLAG,"END_FLAG",szEndFlag,sizeof(szEndFlag));	MW_GetValue(&mwMidWare,CHECK_DATE,"CHECK_DATE",szCheckDate,sizeof(szCheckDate));	MW_GetValueInt(&mwMidWare,ROW_COUNT,"ROW_COUNT",&nRowCount);	MW_GetValue(&mwMidWare,CHECK_DATA,"CHECK_DATA",szCheckData,sizeof(szCheckData));*/	if (strlen(szCheckData) < nRowCount * CHECK_REC_SIZE)	{		gf_Return(&mwMidWare,-2,"数据传送失败!");		return;	}/*	MW_Trace("OK2");*/	if(!DB_BlkCopyInPrepare(&theDatabase, "BANK_CHECK_SERIAL", 8))	{		gf_Return(&mwMidWare,-1,"批量入库Prepare失败!");		return;	}/*	MW_Trace("OK2.1");*/	ppVar[0] = &iBankSerial;	ppVar[1] = szPaySerialNbr;	ppVar[2] = &dPayAmount;	ppVar[3] = &iItemCount;	ppVar[4] = szOperDate;	ppVar[5] = szKHBH;	ppVar[6] = szPrintFlag;	ppVar[7] = szPaySerialOld;	nVarLen[0] = 10;	nVarLen[1] = 20;	nVarLen[2] = CS_UNUSED;	nVarLen[3] = 10;	nVarLen[4] = 8;	nVarLen[5] = 10;	nVarLen[6] = 1;	nVarLen[7] = 20;/*	MW_Trace("OK2.5");*/	for (i=0;i < nRowCount;i++)	{		/*取一行数据;*/		memcpy(szPaySerialNbr,szCheckData + i * CHECK_REC_SIZE ,20);		szPaySerialNbr[20] = '\0';		memcpy(szTemp,szCheckData + i * CHECK_REC_SIZE + 20,13);		szTemp[13] = '\0';		dPayAmount = atof(szTemp);		memcpy(szKHBH,szCheckData + i * CHECK_REC_SIZE + 33,10);		szKHBH[10] = '\0';		memcpy(szOperDate,szCheckData + i * CHECK_REC_SIZE + 43,8);		szOperDate[8] = '\0';		strncpy(szTemp,szCheckData + i * CHECK_REC_SIZE + 51,4);		szTemp[4] = '\0';		iItemCount = atoi(szTemp);		strncpy(szPrintFlag,szCheckData + i * CHECK_REC_SIZE + 55,1);		szPrintFlag[1] = '\0';		strncpy(szPaySerialOld,szCheckData + i * CHECK_REC_SIZE + 56,20);		szPaySerialOld[20] = '\0';		//将流水插入表中		DB_BlkCopyInExecute(&theDatabase, ppVar, nVarLen);	}/*	MW_Trace("OK3");*/	DB_BlkCopyInDone(&theDatabase);/*	MW_Trace("OK4");*/	//调用存储过程进行核对,可以考虑按日对帐的方式,每次对帐都是一天的所有流水全部核对,	//这样可以核对在电力有而在银行没有的流水。	if (szEndFlag[0] == '1')	{		ppVar[0] = &iReturn;		bRet = DB_ExecuteStoredProcedureWithResult(&theDatabase, "Up_c_bank_check ", &nStatus, 			ppVar,1,			pParam,iBankSerial,szCheckDate,0);		if(!bRet || nStatus)	//失败		{			if (iReturn >=0) iReturn = -1;			gf_Return(&mwMidWare,iReturn,"执行Up_c_bank_check失败");			return;		}	}/*	MW_Trace("OK5");*//*	//提交,返回*/	gf_Return(&mwMidWare,iReturn,"");	return;}

⌨️ 快捷键说明

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