?? midware.c
字號(hào):
#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) /*空間不夠,則重新分配大一點(diǎn)的空間,如果還失敗,則返回失敗*/ { 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;}/*清緩沖區(qū)*/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);}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -