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

📄 testcheck.c

📁 电力与银行通讯的源码 1.应用tuxedo中间件. 2.与银行的前置机通讯. 3.proc*c 的应用
💻 C
字号:
/*	日对帐:Check	输入参数:		BANK_CODE  请求对帐的银行代码,即给银行代收的工号		END_FLAG	发送的对帐数据是否结束的标志 0-没有结束;1-结束		CHECK_DATE	请求对帐的日期(yyyymmdd)		ROW_COUNT	对帐的记录数		CHECK_DATA 按一定格式的对帐数据(全是字符串的方式转送)			测试格式如下:KHBH(10)SERIAL(10)AMOUNT(20)OPE_DATE(8yyyymmdd)	将数据分解成如下格式	 BANK_CODE char(10) not null,	 KHBH char(10) not null,	 PAY_SERIAL_NBR int not null,	 PAY_AMOUNT numeric(14,4) not null,	 PAY_DATE char(8) not null	插入到GJL_BANK_SERIAL中,当END_FLAG = 1的执行up_c_gjl_test_check()进行对帐*/#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  42	char szMsg[255];	void *ppVar[5];	long  nVarLen[5];	char szTemp[100] = "";	char szSql[512];	BOOL bRet;	int nStatus = 0;	unsigned char pParam[] = TYPE_CHAR TYPE_CHAR;	int nCheckCount = 0;	int i =0;	char szKHBH[11] = "";	int  nPaySerialNbr = 0;	double  dPayAmount = 0;	char szOperDate[9] = "";	CMiddleWare mwMidWare;	char szBankCode[11] = "";	char szEndFlag[2] = "";	char szCheckDate[9] = "";	char szCheckData[CHECK_REC_COUNT * CHECK_REC_SIZE + 1];	MW_Init(&mwMidWare,transb);	MW_Allocate(&mwMidWare,1024); 	/*取输入的对帐数据*/	memset(szBankCode,32,sizeof(szBankCode));	MW_GetValue(&mwMidWare,BANK_CODE,"BANK_CODE",szBankCode,sizeof(szBankCode));	szBankCode[strlen(szBankCode)] = 32;	szBankCode[10] = '\0';	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",&nCheckCount);	MW_GetValue(&mwMidWare,CHECK_DATA,"CHECK_DATA",szCheckData,sizeof(szCheckData));	sprintf(szMsg,"OK1 RowCount = %d,CheckDate = %s,EndFlag = %s,BankCode = %s,DataSize = %d",nCheckCount,szCheckDate,szEndFlag,szBankCode,strlen(szCheckData));	MW_Trace(szMsg);//	MW_Trace(szCheckData);	if (strlen(szCheckData) < nCheckCount * CHECK_REC_SIZE)	{		gf_Return(&mwMidWare,-2,"数据传送失败!");		return;	}	if(!DB_BlkCopyInPrepare(&theDatabase, "GJL_SERIAL_BANK", 5))	{		gf_Return(&mwMidWare,-1,"批量入库Prepare失败!");		return;	}	ppVar[0] = szBankCode;	ppVar[1] = szKHBH;	ppVar[2] = &nPaySerialNbr;	ppVar[3] = &dPayAmount;	ppVar[4] = szOperDate;	nVarLen[0] = 10;	nVarLen[1] = 10;	nVarLen[2] = 10;	nVarLen[3] = CS_UNUSED;	nVarLen[4] = 8;	MW_Trace("OK2");	for (i=0;i < nCheckCount;i++)	{		//取一行数据;		memcpy(szKHBH,szCheckData + i * CHECK_REC_SIZE,10);		szKHBH[10] = '\0';		memcpy(szTemp,szCheckData + i * CHECK_REC_SIZE + 10,10);		szTemp[10] = '\0';		nPaySerialNbr = atoi(szTemp);		memcpy(szTemp,szCheckData + i * CHECK_REC_SIZE + 20,14);		szTemp[14] = '\0';		dPayAmount = atof(szTemp);		memcpy(szOperDate,szCheckData + i * CHECK_REC_SIZE + 34,8);		szOperDate[8] = '\0';		//将流水插入表中//		sprintf(szMsg,"%10s %10d %20.4f %s",szKHBH,nPaySerialNbr,dPayAmount,szOperDate);		DB_BlkCopyInExecute(&theDatabase, ppVar, nVarLen);	}	MW_Trace("OK3");	DB_BlkCopyInDone(&theDatabase);	MW_Trace("OK4");	//调用存储过程进行核对,可以考虑按日对帐的方式,每次对帐都是一天的所有流水全部核对,	//这样可以核对在电力有而在银行没有的流水。	if (szEndFlag[0] == '1')	{		bRet = DB_ExecuteStoredProcedure(&theDatabase, "up_c_gjl_test_check", &nStatus, pParam,			szCheckDate,szBankCode);		if(!bRet || nStatus)	//失败		{			gf_Return(&mwMidWare,-1,"执行up_c_gjl_test_check失败");			return;		}	}	MW_Trace("OK5");	//提交,返回	gf_Return(&mwMidWare,0,"");	return;}

⌨️ 快捷键说明

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