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

📄 midware.c

📁 电力与银行通讯的源码 1.应用tuxedo中间件. 2.与银行的前置机通讯. 3.proc*c 的应用
💻 C
字号:
#include <stdio.h>#include <string.h>#include "midware.h" #include "sybasedb.h"#include "public.h"void MW_Init(CMiddleWare *pmw,MW_SVCINFO * tran){	pmw->m_pInBuffer = (FBFR32*)tran->data;	pmw->m_pOutBuffer = NULL;	pmw->m_cbInBuffer = 0;	pmw->m_cbOutBuffer = 0;	pmw->m_nRows = 0;	pmw->m_nColumns = 0;	#ifdef MW_CICS			if(InitEasyCics())	{		ExitEasyCics();		return;	}	#endif		return;}BOOLEAN MW_Allocate(CMiddleWare *pmw, int nBufferSize){#ifdef MW_TUXEDO	char szMsg[100] = "";	pmw->m_nOutBufferAddUnit = nBufferSize / 4; /*每次增加1/4的原大小*/	pmw->m_pOutBuffer = (char *)tpalloc("FML32",NULL,nBufferSize);//	sprintf(szMsg,"Errno = %d",tperrno);//	userlog(szMsg);	if(pmw->m_pOutBuffer != NULL)	{		pmw->m_cbOutBuffer = nBufferSize;		return TRUE;	}	else	{		MW_Trace("Allocate Memory Fail!");		return FALSE;	}#endif#ifdef MW_CICS		pmw->m_pOutBuffer = NULL;		pmw->m_cbOutBuffer = 0; #endif}BOOLEAN MW_AllocateString(CMiddleWare *pmw, int nBufferSize){#ifdef MW_TUXEDO	char szMsg[100] = "";	pmw->m_nOutBufferAddUnit = nBufferSize / 4; /*每次增加1/4的原大小*/	pmw->m_pOutBuffer = (char *)tpalloc("STRING",NULL,nBufferSize);//	sprintf(szMsg,"Errno = %d",tperrno);//	userlog(szMsg);	if(pmw->m_pOutBuffer != NULL)	{		pmw->m_cbOutBuffer = nBufferSize;		memset(pmw->m_pOutBuffer,0,nBufferSize);		return TRUE;	}	else	{		MW_Trace("Allocate Memory Fail!");		return FALSE;	}#endif#ifdef MW_CICS		pmw->m_pOutBuffer = NULL;		pmw->m_cbOutBuffer = 0; #endif}BOOLEAN MW_GetValue(CMiddleWare *pmw, int nFieldId, char * pFieldName, char * pValue, int nLen){	#ifdef MW_TUXEDO	int nRet;	char szTemp[4000] = "";	FLDLEN32  fldLen;		fldLen = sizeof(szTemp);	if (fldLen < nLen)	{		fldLen = nLen;		nRet = Fget32((FBFR32 *)pmw->m_pInBuffer,nFieldId,0,pValue,&fldLen);				if(nRet == -1)		{			pValue = NULL;			return FALSE;			}		else		{			return TRUE;		}	}	nRet = Fget32((FBFR32 *)pmw->m_pInBuffer,nFieldId,0,szTemp,&fldLen);		if(nRet == -1)	{		pValue = NULL;		return FALSE;		}	else	{		strncpy(pValue,szTemp,nLen);		pValue[nLen-1]='\0';		return TRUE;	}#endif	#ifdef MW_CICS		char szTemp[4000];	memset(szTemp,0x0,sizeof(szTemp));	GetValue(pFieldName,szTemp);	strncpy(pValue,szTemp,nLen);	pValue[nLen-1]='\0';		return TRUE;#endif}/*取int型变量*/BOOLEAN MW_GetValueInt(CMiddleWare *pmw, int nFieldId, char * pFieldName, int * pValue){	char szTemp[11] = "";		if (MW_GetValue(pmw,nFieldId,pFieldName,szTemp,sizeof(szTemp)))	{		*pValue = atoi(szTemp);		return TRUE;	}	else	{		*pValue = 0;		return FALSE;	}}/*取Long型变量*/BOOLEAN MW_GetValueLong(CMiddleWare *pmw, int nFieldId, char * pFieldName, long * pValue){	char szTemp[11] = "";	if (MW_GetValue(pmw,nFieldId,pFieldName,szTemp,sizeof(szTemp)))	{		*pValue = atol(szTemp);		return TRUE;	}	else	{		*pValue = 0;		return FALSE;	}}BOOLEAN MW_GetValueDouble(CMiddleWare *pmw, int nFieldId, char * pFieldName, double * pValue){	char szTemp[40] = "";	if (MW_GetValue(pmw,nFieldId,pFieldName,szTemp,sizeof(szTemp)))	{		*pValue = atof(szTemp);		return TRUE;	}	else	{		*pValue = 0;		return FALSE;	}}BOOLEAN MW_GetColValue(CMiddleWare *pmw, int nFieldId, int nCol, char * pValue, int nLen){#ifdef MW_TUXEDO		int nRet;	char szTemp[4000] = "";	FLDLEN32  fldLen;		fldLen = sizeof(szTemp);		nRet = Fget32((FBFR32 *)pmw->m_pInBuffer,nFieldId, pmw->m_nRows ,szTemp,&fldLen);		if(nRet == -1)	{		pValue = NULL;		return FALSE;		}	else	{		strncpy(pValue,szTemp,nLen);		pValue[nLen-1]='\0';		return TRUE;	}#endif#ifdef MW_CICS	char szTemp[4000] = "";		memset(szTemp,0x0,sizeof(szTemp));	RsGetCol(nCol,szTemp);	strncpy(pValue,szTemp,nLen);	pValue[nLen-1]='\0';		return TRUE;#endif}/*Get Value for Int */BOOLEAN MW_GetColValueInt(CMiddleWare *pmw, int nFieldId,  int nCol, int * pValue){	char szTemp[11] = "";	if (MW_GetColValue(pmw,nFieldId,nCol,szTemp,sizeof(szTemp)))	{		*pValue = atoi(szTemp);		return TRUE;	}	else	{		*pValue = 0;		return FALSE;	}}/*Get Value for Long */BOOLEAN MW_GetColValueLong(CMiddleWare *pmw, int nFieldId,  int nCol, long * pValue){	char szTemp[11] = "";	if (MW_GetColValue(pmw,nFieldId,nCol,szTemp,sizeof(szTemp)))	{		*pValue = atol(szTemp);		return TRUE;	}	else	{		*pValue = 0;		return FALSE;	}}/*Get Value for Double */BOOLEAN MW_GetColValueDouble(CMiddleWare *pmw, int nFieldId,  int nCol, double * pValue){	char szTemp[20] = "";	if (MW_GetColValue(pmw,nFieldId,nCol,szTemp,sizeof(szTemp)))	{		*pValue = atof(szTemp);		return TRUE;	}	else	{		*pValue = 0;		return FALSE;	}}BOOLEAN MW_SetColCount(CMiddleWare *pmw, int nCols){	pmw->m_nColumns = nCols;	pmw->m_nRows = 0;	#ifdef MW_CICS		RsCreate(nCols);	#endif		return TRUE;}/*SetColValue*/BOOLEAN MW_SetColValue(CMiddleWare *pmw, int nFieldId,int nCol, char * pValue, int nLen){#ifdef MW_TUXEDO		int nRet;	FLDLEN32  fldLen;		fldLen = nLen;	nRet = Fchg32((FBFR32 *)pmw->m_pOutBuffer,nFieldId,pmw->m_nRows,pValue,fldLen);		if(nRet == -1)	{		pValue = NULL;		return FALSE;		}	else	{		return TRUE;	}	#endif	#ifdef MW_CICS		if(nCol>pmw->m_nColumns)		return FALSE;		RsSetCol(nCol,pValue);#endif}BOOLEAN MW_SetColValueInt(CMiddleWare *pmw, int nFieldId,  int nCol, int nValue){	char szTemp[11] = "";	sprintf(szTemp,"%d",nValue);	return MW_SetColValue(pmw,nFieldId,nCol,szTemp,sizeof(szTemp));}BOOLEAN MW_SetColValueLong(CMiddleWare *pmw, int nFieldId,  int nCol, long nValue){	char szTemp[11] = "";	sprintf(szTemp,"%d",nValue);	return MW_SetColValue(pmw,nFieldId,nCol,szTemp,sizeof(szTemp));}BOOLEAN MW_SetColValueDouble(CMiddleWare *pmw, int nFieldId,  int nCol, double dValue,int nPrecision){	char szTemp[20] = "";	sprintf(szTemp,"%.*f",nPrecision,dValue);	return MW_SetColValue(pmw,nFieldId,nCol,szTemp,sizeof(szTemp));}BOOLEAN MW_SetValue(CMiddleWare *pmw, int nFieldId, char * pFieldName, char * pValue, int nLen){	#ifdef MW_TUXEDO		int nRet;	char * szTemp;		FLDLEN32  fldLen;		fldLen = nLen;		nRet = Fchg32((FBFR32 *)pmw->m_pOutBuffer,nFieldId,0,pValue,fldLen);	if(nRet == -1)	{		if (tperrno == FNOSPACE)	/*空间不够,则重新分配大一点的空间,如果还失败,则返回失败*/		{			szTemp = tprealloc((char *)pmw->m_pOutBuffer,pmw->m_cbOutBuffer + pmw->m_nOutBufferAddUnit);			if (szTemp == NULL)			{				return FALSE;			}			else			{				pmw->m_pOutBuffer = szTemp;				pmw->m_cbOutBuffer += pmw->m_nOutBufferAddUnit;				nRet = Fchg32((FBFR32 *)pmw->m_pOutBuffer,nFieldId,0,pValue,fldLen);				if(nRet == -1)	/*如再次失败,则失败*/					return FALSE;				else					return TRUE;			}		}		return FALSE;		}	else	{		return TRUE;	}#endif	#ifdef MW_CICS	SetValue(pFieldName,pValue);	return TRUE;#endif}BOOLEAN MW_SetValueInt(CMiddleWare *pmw, int nFieldId, char * pFieldName, int nValue){	char szTemp[11] = "";	sprintf(szTemp,"%d",nValue);	return MW_SetValue(pmw,nFieldId,pFieldName,szTemp,sizeof(szTemp));}BOOLEAN MW_SetValueLong(CMiddleWare *pmw, int nFieldId, char * pFieldName, long nValue){	char szTemp[11] = "";	sprintf(szTemp,"%d",nValue);	return MW_SetValue(pmw,nFieldId,pFieldName,szTemp,sizeof(szTemp));}BOOLEAN MW_SetValueDouble(CMiddleWare *pmw, int nFieldId, char * pFieldName, double dValue,int nPrecision){	char szTemp[20] = "";	sprintf(szTemp,"%.*f",nPrecision,dValue);	return MW_SetValue(pmw,nFieldId,pFieldName,szTemp,sizeof(szTemp));}BOOLEAN MW_Free(CMiddleWare *pmw){	#ifdef MW_TUXEDO		if(pmw->m_pOutBuffer != NULL)	{		tpfree(pmw->m_pOutBuffer);	}		#endif		pmw->m_pOutBuffer = NULL;	pmw->m_cbOutBuffer = 0;		pmw->m_nOutBufferAddUnit = 0;	return TRUE;}/*int mwGetRowCount(CMidddleWare *pmw){	return pmw->m_nRows;}*/void MW_Trace(char *pMsgBuffer){#ifdef MW_TUXEDO	userlog(pMsgBuffer);#endif	#ifdef MW_CICS	PrintStatus(pMsgBuffer);#endif		return;}void MW_Return(CMiddleWare *pmw){	int iSndlen;#ifdef MW_TUXEDO	iSndlen = strlen(pmw->m_pOutBuffer) + 1;	pmw->m_pOutBuffer[iSndlen] = '\0';	tpreturn(TPSUCCESS, 0, pmw->m_pOutBuffer, pmw->m_cbOutBuffer, 0);	#endif	#ifdef MW_CICS		ExitEasyCics();	#endif		pmw->m_pInBuffer = NULL;	pmw->m_pOutBuffer = NULL;	pmw->m_cbInBuffer = 0;	pmw->m_cbOutBuffer = 0;	pmw->m_nRows = 0;	pmw->m_nColumns = 0;			return;	}BOOLEAN MW_Commit(CMiddleWare *pmw){#ifdef MW_TUXEDO	int iRet = 0;	iRet = tpcommit(0);	if (iRet< 0) tpabort(0);	return iRet;#endif#ifdef MW_CICS	CicsCommit();#endif	return TRUE;}BOOLEAN MW_Rollback(CMiddleWare *pmw){#ifdef MW_TUXEDO	tpabort(0);#endif#ifdef MW_CICS	CicsRollBack();#endif	return TRUE;}int MW_GetRowCount(CMiddleWare *pmw,int nFieldID){	int  iRows = 0;#ifdef MW_TUXEDO	iRows = Foccur32((FBFR32 *)pmw->m_pInBuffer,nFieldID);	iRows --;	if (iRows < 0)		iRows = 0;#endif#ifdef MW_CICS	iRows = RsGetRowNum();#endif	return iRows;}/*清缓冲区*/void MW_ClearBuffer(CMiddleWare *pmw){#ifdef MW_TUXEDO	tpbegin(0,0);#endif#ifdef MW_CICS	BeginWrite();#endif}void MW_OpenBuf(CMiddleWare *pmw){#ifdef MW_CICS	RsOpen();#endif}void MW_FetchRow(CMiddleWare *pmw){	pmw->m_nRows ++;#ifdef MW_CICS	RsFetchRow();#endif}void MW_AddRow(CMiddleWare *pmw){	pmw->m_nRows ++;#ifdef MW_CICS	RsAddRow();#endif}void MW_SaveRow(CMiddleWare *pmw){#ifdef MW_CICS	RsSaveRow();#endif}void MW_BeginTransaction(CMiddleWare *pmw){#ifdef MW_TUXEDO	tpbegin(0,0);#endif}/*取输入输出Buffer*/char *MW_GetInBuf(CMiddleWare *pmw){	return (char *)pmw->m_pInBuffer;}char *MW_GetOutBuf(CMiddleWare *pmw){	return pmw->m_pOutBuffer;}void gf_Return(CMiddleWare *pmw,int iReturn,char *szErrMsg){	char szTemp[10] = "";	sprintf(szTemp,"%8d",iReturn);	if(pmw->m_pOutBuffer == NULL)		MW_AllocateString(pmw,10);	memcpy(pmw->m_pOutBuffer,szTemp,8);	if (iReturn < 0) MW_Trace(szErrMsg);/*	if (iReturn < 0) MW_Rollback(pmw);	else	MW_Commit(pmw);*/	if (iReturn < 0) DB_RollbackTransaction(&theDatabase);	else  	DB_CommitTransaction(&theDatabase);	/*MW_SetValueInt(pmw,I_RETURN,"I_RETURN",iReturn);*/	MW_Return(pmw);}

⌨️ 快捷键说明

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