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

📄 cmsb27.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
字号:
/******************************************************************** **   源码文件名称 : cmsB27.SQC **   函数名称 	   : cms21B027 **   所属子系统   : CMS  **   当前文件版本 : 1.0.0.0 **   作        者 : guoyun  **   版本创建日期 : 2004/10/14 **   功能描述     : 非本行商户的POS汇总表 **   修改记录     : **   修改人       修改日期     修改日期*********************************************************************/#include    "sysdefine.h"#include    <stdio.h>#include	"pubcom.h"#include	"funcapi.h"#include    "code.h"#include    "attrdef.h"#include    "cmscode.h"#include	"cmstxdethis.h"#include	"cmsmerchantinfo.h"#include	"pubbranchinfo.h"#include 	"errlog.h"EXEC SQL INCLUDE sqlca;#define 	OVERPAGE	53       /* 满页行数 */ #define 	OVERLINE	5        /* 换行行数 */ #define		LIMIT		50struct	prtdata{	char	acBer[BIT9_LEN +1];					/* 序号		*/	char	acMid[BIT16_LEN +1];				/* 商户代码	*/	char	acMctName[70 +1];				    /* 商户名称	*/	char	acInterAccno[32 +1];			    /* 内部帐号	*/	char	acSettleAccno[32 +1];			    /* 结算帐号	*/	char	acOpnBankName[70 +1];			    /* 开户行名	*/	char	acCount[BIT9_LEN + 1];				/* 交易笔数	*/	char	acAmt[TXAMT_LEN + 1];				/* 交易金额	*/	char	acMidAmt[TXAMT_LEN + 1];			/* 入帐金额	*/	char	acCcyComm[BIT40_LEN + 1];			/* 币种		*/	char    acBegDate[DATE_LEN + 1 ];           /* 起始日期 */ 	char    acEdDate[DATE_LEN + 1 ];            /* 终止日期 */ 	char	acTotalCount[BIT9_LEN + 1];			/* Total交易笔数	*/	char	acTotalAmt[TXAMT_LEN + 1];			/* Total交易金额	*/	char	acTotalMidAmt[TXAMT_LEN + 1];		/* Total入帐金额	*/	char	acPage[10 + 1];						/* 页数	*/};/* 打印表头 */#define		PRTHEAD 											\	prtline( fp,"title1:%s", acBankname );						\	iLineCount = iLineCount + 2;                                \	prtline( fp, "title2:%s|%s|%s|%s|%s|%s|%s", 		        \				 acYear,acMonth,acDate,acYear1,					\				 acMonth1,acDate1,stPrtdata.acCcyComm );		\	iLineCount = iLineCount + 1;                                \	prtline( fp, "head1:" );									\	iLineCount = iLineCount + 2;								\	iLine += 5;#define		PRTBODY												\	prtline( fp, "body1:%s|%s|%.*s|%s|%s|%.*s|%s|%s|%s",		\			stPrtdata.acBer,  		stPrtdata.acMid,			\			36,stPrtdata.acMctName,	stPrtdata.acInterAccno,		\			stPrtdata.acSettleAccno,							\			20,stPrtdata.acOpnBankName,stPrtdata.acCount,		\			stPrtdata.acAmt,        stPrtdata.acMidAmt);        \	iLineCount++;												\	iLine++;													#define		PRTBODY1											\	prtline( fp, "body2:");										\	iLineCount++;												\	iLine++;													#define		PRTFOOT1											\	prtline( fp, "body3:");										\	iLineCount = iLineCount + 2;                                \	iPage++;													\	iLine	=	0 ;	#define		PRTFOOT												\	prtline( fp, "sub1:%s|%s|%s", stPrtdata.acTotalCount,		\				 stPrtdata.acTotalAmt, stPrtdata.acTotalMidAmt);\	iLineCount = iLineCount + 3;                                \	prtline( fp, "bottm:%s|%s", 								\			 pstPubcom->acTeller, stPrtdata.acPage );			\	iLineCount++;												\    prtline( fp, "next:%s",pstPubcom->acTranDate );         	\	iLineCount++;												\	iPage++;													\	iLine	=	0 ;		int cms21B027(pstPubcom)struct          pubcom          *pstPubcom;{	EXEC SQL BEGIN DECLARE SECTION;		char    acBeginDate[DATE_LEN + 1 ];         /* 起始日期 */ 		char    acEndDate[DATE_LEN + 1 ];           /* 终止日期 */ 		char	acSelStr[512];		char	acCcy[CCY_LEN + 1];		char	acChName[CUSTNAME_LEN + 1];		char	acOpnBankName[CUSTNAME_LEN + 1];		char	acMctName[CUSTNAME_LEN + 1];		char	acInterAccno[ACCT_LEN + 1];		char	acSettleAccno[ACCT_LEN + 1];		char	acMid[MID_LEN + 1];	EXEC SQL END   DECLARE SECTION;	long	lNumber = 0;		 				/* 交易笔数小计	*/	double	dAmt = 0.0;		 					/* 交易金额小计	*/	double	dMidAmt = 0.0;		 				/* 入帐交易金额小计	*/	long	lTNumber = 0;		 				/* 交易笔数合计	*/	double	dTAmt = 0.0;	 		 			/* 交易金额合计	*/	double	dTMidAmt = 0.0;		 				/* 入帐交易金额合计	*/	FILE	*fp, *fmtfp;						/* 文件指针	*/ 	int		iLineCount	=	0 ;	int		i, iPage , iLine, iNum, iFlag=0;	char	acWhrStr[ 512 ];	char	acFileName[ 101 ];	char	acFmtFile[ 101 ];	char	acPage[ 5 ];	char	acAmt[ 18 ];	char	acTAmt[ 18 ];	char	acTNumber[ 8 ];	char	acNumber[ 5 ];	char    acBankname[ 41 ];	char    acYear[BIT5_LEN + 1];	char    acMonth[BIT3_LEN + 1];	char    acDate[BIT3_LEN + 1];	char    acYear1[BIT5_LEN + 1];	char    acMonth1[BIT3_LEN + 1];	char    acDate1[BIT3_LEN + 1];	struct	prtdata	stPrtdata;	struct  cmstxdethis      stCmsTxDetHis;     	/* 外围交易登记簿历史表 */	struct  cmsmerchantinfo  stCmsMerchantInfo;    	/* 商户基本资料 */	memset( acSelStr, 	   	0x00, sizeof( acSelStr )   );	memset( acWhrStr, 	   	0x00, sizeof( acWhrStr )   );	memset( acBankname,    	0x00, sizeof( acBankname ) );	memset( acYear,	    	0x00, sizeof( acYear ) );	memset( acMonth,	    0x00, sizeof( acMonth ) );	memset( acDate,		    0x00, sizeof( acDate ) );	memset( acYear1,	    0x00, sizeof( acYear1 ) );	memset( acMonth1,	    0x00, sizeof( acMonth1 ) );	memset( acDate1,		0x00, sizeof( acDate1 ) );	memset( &stCmsTxDetHis, 0x00, sizeof( struct cmstxdethis ));	memset( &stPrtdata, 	0x00, sizeof( struct prtdata ));	memset( &stCmsMerchantInfo, 0x00, sizeof( struct cmsmerchantinfo ));	if ( pubGetBaseInfo("BANKNAME", acBankname ) )		FUNCERR_PRO	/* 取数据字典 */	getstring( "BeginDate1", 	acBeginDate );	getstring( "EndDate1", 		acEndDate 	);	sprintf( g_acTrcMsg, "acBeginDate[%s],acEndDate[%s],pstPubcom->acBrcType[%s]", acBeginDate,acEndDate,pstPubcom->acBrcType );	TRCLOG4    /*检查交易机构是否为中心机构,如果不是,不能做此交易 */    if ((strcmp( pstPubcom->acBrcType, BRCTYPE_CRDCENTER)) &&        (strcmp( pstPubcom->acBrcType, BRCTYPE_CLSCENTER)))	{       	strcpy( g_acRspCode, "CMS214" );		pubCrtRspInfo( );		ERRLOG		goto Exit;	}	fp = (FILE *)BeginFile( pstPubcom, NULL );	if ( fp == NULL )	{		strcpy( g_acRspCode, "DPS902" );		pubCrtRspInfo( );		ERRLOG		goto Exit;	}	sprintf( acFmtFile, "%s/fmt/cmsB27.fmt", getenv("HOME") );	sprintf( g_acFmtFile, acFmtFile );	if	( ( fmtfp=fopen(acFmtFile,"r") ) == NULL )	{		strcpy( g_acRspCode, "DPS902" );		strcpy( g_acTrcMsg, acFmtFile );		TRCLOG4        sprintf( g_acRspMsg, "打开格式文件[%s]错", acFmtFile );		ERRLOG		goto Exit ;	}	iLine	=	0 ;	iPage	=	1 ;	iNum	=	0 ;	sprintf( acSelStr, "select * from cmstxdethis where 1=1 and trandevtype='22' and trankind in ('006','014') and validf='0' and mid in (select mid from cmsmerchantinfo where opnflg='1') " );	if (strcmp(acBeginDate, INITDATE) > 0)	{		sprintf( acSelStr + strlen(acSelStr), "and trandate >= '%s' ", acBeginDate );	}	if (strcmp(acEndDate, INITDATE) > 0)	{		sprintf( acSelStr + strlen(acSelStr), "and trandate <= '%s' ", acEndDate );	}	sprintf( acSelStr + strlen(acSelStr), "ORDER BY mid" );    sprintf( g_acTrcMsg,"%s", acSelStr );    TRCLOG4	EXEC SQL PREPARE pre1_cur FROM :acSelStr;    if ( SQLCODE )    {        strcpy( g_acRspCode, "CMS1A7" );        pubCrtRspInfo( SQLCODE );        ERRLOG        goto Exit;    }	EXEC SQL DECLARE report_cur CURSOR FOR pre1_cur;    if(SQLCODE)    {        sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);        TRCLOG4        strcpy( g_acRspCode, "CMS110" );        pubCrtRspInfo("cmstxdethis",SQLCODE );        ERRLOG        goto Exit ;    }	SQLOPENCUR(report_cur,"report_cur")    if(SQLCODE)    {        sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);        TRCLOG4        strcpy( g_acRspCode, "CMS111" );        pubCrtRspInfo("cmstxdethis",SQLCODE );        ERRLOG        goto Exit ;    }	/* 日期为18991231忽略 */    if ( strcmp ( acBeginDate, INITDATE ) )    {       	strcpy( stPrtdata.acBegDate, acBeginDate );		memcpy(acYear, stPrtdata.acBegDate, 4);		memcpy(acMonth,stPrtdata.acBegDate + 5, 2);		memcpy(acDate, stPrtdata.acBegDate + 8, 2);    }   	if ( strcmp ( acEndDate, INITDATE ) )   	{       	strcpy( stPrtdata.acEdDate, acEndDate );		memcpy(acYear1, stPrtdata.acEdDate, 4);		memcpy(acMonth1,stPrtdata.acEdDate + 5, 2);		memcpy(acDate1, stPrtdata.acEdDate + 8, 2);   	}	while ( TRUE )	{		memset( &stPrtdata, 	0x00, sizeof( struct prtdata ));		pubInitCmstxdethis();		EXEC SQL FETCH report_cur INTO W_CMSTXDETHIS;		if (SQLCODE == SQLNOTFOUND)			break;		if (SQLCODE)		{            sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);            TRCLOG4            strcpy( g_acRspCode, "CMS112" );            pubCrtRspInfo("cmstxdethis",SQLCODE );            ERRLOG            goto Exit ;		}		pubVtoSCmstxdethis(&stCmsTxDetHis);		/* 打表头 */        if( iFlag == 0 ) 		{ 				memset( acMid, 		0x00, sizeof(acMid) );			memset( acChName, 	0x00, sizeof(acChName) );			memset( acCcy, 		0x00, sizeof(acCcy) );			strcpy( acMid, stCmsTxDetHis.mid );			strcpy( acCcy, stCmsTxDetHis.ccy );			strpack(acMid);			strpack(acCcy);			EXEC SQL SELECT chname 					   INTO :acChName 					   FROM pubcurrencyinfo					  WHERE ccy = :acCcy;    		if ( SQLCODE )    		{        		strcpy( g_acRspCode, "CMS113" );        		pubCrtRspInfo( "pubcurrencyinfo",SQLCODE );        		ERRLOG        		goto Exit;    		}			strpack(acChName);			strcpy(stPrtdata.acCcyComm, acChName);			PRTHEAD 			iFlag = 1;		}		if (strcmp(acCcy, stCmsTxDetHis.ccy))		{			memset( acChName, 	0x00, sizeof(acChName) );			memset( acCcy, 		0x00, sizeof(acCcy) );			strcpy( acCcy, stCmsTxDetHis.ccy );			EXEC SQL SELECT chname 					   INTO :acChName 					   FROM pubcurrencyinfo					  WHERE ccy = :acCcy;    		if ( SQLCODE )    		{        		strcpy( g_acRspCode, "CMS113" );        		pubCrtRspInfo( "pubcurrencyinfo",SQLCODE );        		ERRLOG        		goto Exit;    		}			strpack(acChName);			strcpy(stPrtdata.acCcyComm, acChName);			sprintf( stPrtdata.acTotalCount, "%ld", lTNumber );			sprintf( stPrtdata.acTotalAmt, "%.2lf", dTAmt );			sprintf( stPrtdata.acTotalMidAmt, "%.2lf", dTMidAmt );			sprintf( stPrtdata.acPage, "%ld", iPage);			PRTFOOT			PRTHEAD 			iPage = 1;			iNum = 0;			lTNumber=0;			dTAmt=0.0;			dTMidAmt=0.0;			lNumber=0;			dAmt=0.0;			dMidAmt=0.0;		}		if (strcmp(acMid, stCmsTxDetHis.mid))		{		    memset(acOpnBankName, 0, sizeof(acOpnBankName));		    memset(acMctName, 0, sizeof(acMctName));		    memset(acSettleAccno, 0, sizeof(acSettleAccno));		    memset(acInterAccno, 0, sizeof(acInterAccno));			EXEC SQL SELECT mctname,midaccno,settleaccno,opnbankname 					   INTO :acMctName, :acInterAccno, :acSettleAccno, :acOpnBankName 					   FROM cmsmerchantinfo					  WHERE mid = :acMid;    		if ( SQLCODE )    		{        		strcpy( g_acRspCode, "CMS113" );        		pubCrtRspInfo( "cmsmerchantinfo",SQLCODE );        		ERRLOG        		goto Exit;    		}			strpack( acMctName );			strpack( acSettleAccno );			strpack( acInterAccno );			strpack( acOpnBankName );			iNum ++;			sprintf( stPrtdata.acBer, "%d", iNum );			strcpy( stPrtdata.acMid,		acMid );			strcpy( stPrtdata.acMctName,	acMctName );			strcpy( stPrtdata.acInterAccno,acInterAccno );			strcpy( stPrtdata.acSettleAccno,acSettleAccno );			strcpy( stPrtdata.acOpnBankName,acOpnBankName );			sprintf( stPrtdata.acCount, "%ld", lNumber );			sprintf( stPrtdata.acAmt, "%.2lf", dAmt );			sprintf( stPrtdata.acMidAmt, "%.2lf", dMidAmt );			PRTBODY1			PRTBODY			strcpy( acMid, stCmsTxDetHis.mid);			lNumber=0;			dAmt=0.0;			dMidAmt=0.0;		}        sprintf( g_acTrcMsg,"stCmsTxDetHis.tranamt[%lf], stCmsTxDetHis.bankgetfee[%lf]", stCmsTxDetHis.tranamt, stCmsTxDetHis.bankgetfee);        TRCLOG4		lNumber += 1;		dAmt += stCmsTxDetHis.tranamt;		dMidAmt = dMidAmt + stCmsTxDetHis.tranamt - stCmsTxDetHis.bankgetfee;		lTNumber += 1;		dTAmt += stCmsTxDetHis.tranamt;		dTMidAmt = dTMidAmt + stCmsTxDetHis.tranamt - stCmsTxDetHis.bankgetfee;        sprintf( g_acTrcMsg,"dAmt[%lf], dMidAmt[%lf], dTAmt[%lf] dTMidAmt[%lf]", dAmt, dMidAmt, dTAmt, dTMidAmt);        TRCLOG4		/* 翻页并且初始化页合计变量 */        if ( iLine % OVERPAGE == 0 )        { 			PRTFOOT1			PRTHEAD 		}	}	memset(acOpnBankName, 0, sizeof(acOpnBankName));	memset(acMctName, 0, sizeof(acMctName));	memset(acSettleAccno, 0, sizeof(acSettleAccno));    memset(acInterAccno, 0, sizeof(acInterAccno));	EXEC SQL SELECT mctname,midaccno,settleaccno,opnbankname 			   INTO :acMctName, :acInterAccno, :acSettleAccno, :acOpnBankName 			   FROM cmsmerchantinfo			  WHERE mid = :acMid;   	if ( SQLCODE )   	{       	strcpy( g_acRspCode, "CMS113" );       	pubCrtRspInfo( "cmsmerchantinfo",SQLCODE );       	ERRLOG       	goto Exit;   	}	strpack( acMctName );	strpack( acSettleAccno );	strpack( acInterAccno );	strpack( acOpnBankName );	iNum ++;	sprintf( stPrtdata.acBer, "%d", iNum );	strcpy( stPrtdata.acMid,		acMid );	strcpy( stPrtdata.acMctName,	acMctName );	strcpy( stPrtdata.acInterAccno,acInterAccno );	strcpy( stPrtdata.acSettleAccno,acSettleAccno );	strcpy( stPrtdata.acOpnBankName,acOpnBankName );	sprintf( stPrtdata.acCount, "%ld", lNumber );	sprintf( stPrtdata.acAmt, "%.2lf", dAmt );	sprintf( stPrtdata.acMidAmt, "%.2lf", dMidAmt );	PRTBODY1	PRTBODY	sprintf( stPrtdata.acTotalCount, "%ld", lTNumber );	sprintf( stPrtdata.acTotalAmt, "%.2lf", dTAmt );	sprintf( stPrtdata.acTotalMidAmt, "%.2lf", dTMidAmt );	sprintf( stPrtdata.acPage, "%ld", iPage);	PRTFOOT	if( iLineCount == 0 )	{		strcpy( g_acRspCode, "999998" );		sprintf( g_acRspMsg, "无满足条件的纪录!" );		ERRLOG		goto	Exit ;	}Exit:	fclose( fp );	fclose( fmtfp );	SQLCLOSECUR(report_cur,"report_cur")	if( !strcmp( g_acRspCode, RSP_OK ) )	{		SetInqFormid(pstPubcom, "") ;		return SUCCESS; 	}	else 		return FAILED ;}

⌨️ 快捷键说明

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