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

📄 cmsb12.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
字号:
/******************************************************************** **   源码文件名称 : cmsB12.SQC **   函数名称 	   : cms21B012 **   所属子系统   : CMS  **   当前文件版本 : 1.0.0.0 **   作        者 : XuZy  **   版本创建日期 : 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	"cmsreport01.h"#include	"cmsmerchantinfo.h"#include	"pubbranchinfo.h"#include 	"errlog.h"EXEC SQL INCLUDE sqlca;#define 	OVERPAGE	31       /* 满页行数 */ #define 	OVERLINE	5        /* 换行行数 */ #define		LIMIT		36struct	prtdata{	char	acBer[BIT9_LEN +1];					/* 序号			*/	char	acMid[BIT16_LEN +1];				/* 商户代码		*/	char	acMctMcc[BIT5_LEN +1];				/* 商户类型		*/	char	acMctName[70 +1];				    /* 商户名称		*/	char	acTranName[70 +1];				    /* 交易名称		*/	char	acCount[BIT9_LEN + 1];				/* 交易笔数		*/	char	acAmt[TXAMT_LEN + 1];				/* 交易金额		*/	char	acCardKindComm[BIT40_LEN + 1];		/* 交易类型		*/	char	acCcyComm[BIT40_LEN + 1];			/* 币种			*/	char    acBegDate[DATE_LEN + 1 ];           /* 起始日期 */ 	char    acEdDate[DATE_LEN + 1 ];            /* 终止日期 */ };#define 	PRTLINE												\	if( prtline( fp, acFmtFile,acPrtData ) ) 					\	FUNCERR_PRO                                                 \	iLineCount++;/* 打印表头 */#define		PRTHEAD 											\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp,"title:%s" , acBankname);						\	iLineCount++;												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "title0:%s|%s|%s|%s|%s|%s|%s|%s", 		        \				 stPrtdata.acCardKindComm, acYear,acMonth,acDate, acYear1,acMonth1,acDate1,stPrtdata.acCcyComm );										\	iLineCount++;                                               \	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "head:" );										\	iLineCount++;												\	iLine   ++ ;/* 打印数据 */#define		PRTBODY0											\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "body:"	);									\	iLineCount++;												\#define		PRTBODY												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "body0:%s|%s|%s|%.*s|%s|%s|%s",				\			stPrtdata.acBer,  		stPrtdata.acMctMcc,			\			stPrtdata.acMid,		40,stPrtdata.acMctName,		\			stPrtdata.acTranName,	stPrtdata.acCount,			\			stPrtdata.acAmt);                                   \	iLineCount++;												\	iLine++;													\	iNum++;/* 打印页表尾 */#define		PRTFOOT												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "foot:" );										\	iLineCount++;												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "foot0:%s|%s", 								\			 acNumber, acAmt );									\	iLineCount++;#define		PRTFOOTO											\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "footo:" );									\	iLineCount++;												\	prtline( fp, "foot2:%s|%s", 								\			 acTNumber, acTAmt );								\	iLineCount++;												\	prtline( fp, "foot3:" );									\	iLineCount++;												\	iLine	=	0 ;		#define		BOTTM												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "bottm:%s|%s|%s|%s|%s", 						\			 acPage, pstPubcom->acTeller,acYear3,acMonth3,acDate3 );																	\	iLineCount++;												\	iPage ++ ; iLine = 0 ; #define		PRTFOOTF											\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "head0:" );									\	iLineCount++;#define		PRTFOOTM											\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "head1:" );									\	iLineCount++; int cms21B012(pstPubcom)struct          pubcom          *pstPubcom;{	EXEC SQL BEGIN DECLARE SECTION;		char    acBrc[BRC_LEN +1];                  /* 机构代码 */ 		char    acBeginDate[DATE_LEN + 1 ];         /* 起始日期 */ 		char    acEndDate[DATE_LEN + 1 ];           /* 终止日期 */ 		char    acType[BIT2_LEN + 1];               /* 机构类型 */ 		char	acSelStr[512];		char	acCcy[3 + 1];		char    acCardKind[8 + 1];		char    acMctMcc1[4 + 1];	EXEC SQL END   DECLARE SECTION;	long	lNumber = 0;		 				/* 交易笔数小计	*/	double	dAmt = 0.0;		 					/* 交易金额小计	*/	long	lTNumber = 0;		 				/* POS交易笔数小计	*/	double	dTAmt = 0.0;	 		 			/* POS交易金额小计	*/	FILE	*fp, *fmtfp;						/* 文件指针	*/ 	int		iLineCount	=	0 ;	int		i, iPage , iLine, iNum, iFlag;	char	acWhrStr[ 512 ];	char	acFileName[ 101 ];	char	acFmtFile[ 101 ];	char	acPrtData[ 4096 ];	char	acPage[ 5 ];	char	acAmt[ 18 ];	char	acTAmt[ 18 ];	char	acTNumber[ 8 ];	char	acNumber[ 5 ];	char    acBankname[ 41 ];	char    acTmpCcy[BIT4_LEN + 1];	char    acTmpCardKind[BIT9_LEN + 1];	char    acTmpMctMcc[BIT5_LEN + 1];	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];	char    acYear3[BIT5_LEN + 1];	char    acMonth3[BIT3_LEN + 1];	char    acDate3[BIT3_LEN + 1];	struct	prtdata	stPrtdata;	struct  cmsreport01      stCmsReport01;     	/* POS交易统计表 */	memset( acSelStr, 	   	0x00, sizeof( acSelStr )   );	memset( acWhrStr, 	   	0x00, sizeof( acWhrStr )   );	memset( acBrc,	 	   	0x00, sizeof( acBrc )   );	memset( acPage,	 	   	0x00, sizeof( acPage )   );	memset( &stCmsReport01, 0x00, sizeof( struct cmsreport01 ));	memset( &stPrtdata,		0x00, sizeof( struct prtdata ));	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( acYear3,	    0x00, sizeof( acYear3 ) );	memset( acMonth3,	    0x00, sizeof( acMonth3 ) );	memset( acDate3,		0x00, sizeof( acDate3 ) );	if ( pubGetBaseInfo("BANKNAME", acBankname ) )		FUNCERR_PRO	/* 取数据字典 */	getstring( "BeginDate1", 	acBeginDate );	getstring( "EndDate1", 		acEndDate 	);	sprintf( g_acTrcMsg, "BeginDate1[%s],EndDate1[%s]", acBeginDate,acEndDate );	TRCLOG4	/* 赋打印时间 */	strncpy(acYear3, pstPubcom->acTranDate8, 4);	strncpy(acMonth3, pstPubcom->acTranDate8  + 4, 2);	strncpy(acDate3, pstPubcom->acTranDate8 + 6, 4);    /*检查交易机构是否为中心机构,如果不是,不能做此交易 */    if (strcmp( pstPubcom->acBrcType, BRCTYPE_CRDCENTER))     {        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/cmsB12.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 ;	iFlag	=	0 ;	iPage	=	1 ;	iNum	=	1 ;	sprintf( acSelStr, "select * from cmsreport01 where 1=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 cardkind ,ccy, mctmcc, mid, frnttrancode, trandate" );    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("cmsreport01",SQLCODE );        ERRLOG        goto Exit ;    }	SQLOPENCUR(report_cur,"report_cur")    if(SQLCODE)    {        sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);        TRCLOG4        strcpy( g_acRspCode, "CMS111" );        pubCrtRspInfo("cmsreport01",SQLCODE );        ERRLOG        goto Exit ;    }	while ( TRUE )	{		pubInitCmsreport01();		EXEC SQL FETCH report_cur INTO W_CMSREPORT01;		if (SQLCODE == SQLNOTFOUND)			break;		if (SQLCODE)		{            sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);            TRCLOG4            strcpy( g_acRspCode, "CMS112" );            pubCrtRspInfo("cmsreport01",SQLCODE );            ERRLOG            goto Exit ;		}		pubVtoSCmsreport01(&stCmsReport01);		/* 日期为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);    	}		/* 表第一次打印取信息(当币种、卡种、商户变化时使用) */		if (iFlag == 0)		{			memset( acTmpMctMcc, 0x00, sizeof(acTmpMctMcc) );			memset( acTmpCardKind, 0x00, sizeof(acTmpCardKind) );			memset( acTmpCcy, 0x00, sizeof(acTmpCcy) );			strcpy( acTmpMctMcc, stCmsReport01.mctmcc );			strcpy( acTmpCardKind, stCmsReport01.cardkind );			strcpy( acTmpCcy, cmsreport01_ccy );			strpack(acTmpCcy);			strpack(acTmpMctMcc);			strpack(acTmpCardKind);		}		/* 向结构体中赋值 */		memset( &stPrtdata,		0x00, sizeof( struct prtdata ));		strcpy( stPrtdata.acMid,		stCmsReport01.mid );		strcpy( stPrtdata.acMctMcc,	stCmsReport01.mctmcc );		strcpy( stPrtdata.acMctName,	stCmsReport01.mctname );		strcpy( stPrtdata.acTranName,	stCmsReport01.frnttrancomm );		strcpy( stPrtdata.acCardKindComm,	stCmsReport01.cardkindcomm );		strcpy( stPrtdata.acCcyComm,	stCmsReport01.ccycomm );		sprintf( stPrtdata.acCount, "%d", stCmsReport01.count );		sprintf( stPrtdata.acAmt,	 "%.2lf", stCmsReport01.amt  );		strpack( stPrtdata.acCardKindComm );		strpack( stPrtdata.acCcyComm );		sprintf( g_acTrcMsg, "iLine=[%d]", iLine);		TRCLOG4		/* 打表头 */        if( iFlag   ==  0 ) 		{ 			PRTHEAD			iFlag ++;		}		/* 币种、卡种变换重新打印 */		if (strcmp(acTmpCcy, stCmsReport01.ccy) != 0 || strcmp(acTmpCardKind , stCmsReport01.cardkind) != 0)		{			/* 打印商户小计 */			sprintf( acNumber, "%ld", lNumber );			sprintf( acAmt, "%.2lf", dAmt );			PRTFOOT			/* 给下一个商户小计赋初值 */			lNumber = 0;			dAmt = 0.00;			/* 打印合计 */			sprintf( acTNumber, "%ld", lTNumber );			sprintf( acTAmt, "%.2lf", dTAmt );			sprintf( acPage, "%d", iPage );			/* 打印 */			PRTFOOTO			BOTTM			memset( acTmpCardKind, 0x00, sizeof(acTmpCardKind) );			memset( acTmpCcy, 0x00, sizeof(acTmpCcy) );			memset( acTmpMctMcc, 0x00, sizeof(acTmpMctMcc) );			strcpy( acTmpCardKind, stCmsReport01.cardkind );			strcpy( acTmpCcy, stCmsReport01.ccy );			strcpy( acTmpMctMcc, stCmsReport01.mctmcc );			/* 给行号赋初值 */			iNum = 1;			iPage = 1;			PRTHEAD			/* 给下一张表合计赋初值 */			lTNumber = 0;			dTAmt = 0.00;		}		/* 商户转换变换的打印 */		if (strcmp(acTmpMctMcc, stCmsReport01.mctmcc) != 0 )		{			/* 打印完成的商户小计数据 */			sprintf( acNumber, "%ld", lNumber );			sprintf( acAmt, "%.2lf", dAmt );			sprintf( g_acTrcMsg, "bcde10");			TRCLOG4			PRTFOOT			/* 给下一个商户小计赋初值 */			lNumber = 0;			dAmt = 0.00;		}		/* 赋行号 */		sprintf( stPrtdata.acBer, "%d", iNum );		/* 打印数据带 */		if (strcmp(acTmpMctMcc, stCmsReport01.mctmcc) != 0)		{        	PRTFOOTF;        	PRTBODY			memset( acTmpMctMcc, 0x00, sizeof(acTmpMctMcc) );			strcpy( acTmpMctMcc, stCmsReport01.mctmcc );		}		else		{        	PRTBODY0;        	PRTBODY		}		/* 商户小计 */		lNumber += stCmsReport01.count;		dAmt += stCmsReport01.amt;		/* 总合计 */		lTNumber += stCmsReport01.count;		dTAmt += stCmsReport01.amt;		/* 赋页数 */		sprintf( acPage, "%d", iPage );		/* 翻页并且初始化页合计变量 */        if ( iLine % OVERPAGE == 0 )        { 			PRTFOOTM;			BOTTM;			PRTHEAD		}	}	if( iLineCount == 0 )	{		strcpy( g_acRspCode, "999998" );		sprintf( g_acRspMsg, "无满足条件的纪录!" );		ERRLOG		goto	Exit ;	}	/* 打印表尾 */	sprintf( acNumber, "%ld", lNumber );	sprintf( acAmt, "%.2lf", dAmt );	PRTFOOT	sprintf( acTNumber, "%ld", lTNumber );	sprintf( acTAmt, "%.2lf", dTAmt );	PRTFOOTO	BOTTMExit:	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 + -