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

📄 cmsb16.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
字号:
/******************************************************************** **   源码文件名称 : cmsB16.SQC **   函数名称 	   : cms21B016 **   所属子系统   : CMS  **   当前文件版本 : 1.0.0.0 **   作        者 : XuZy  **   版本创建日期 : 2004/10/14 **   功能描述     : 卡存款余额统计表 **   修改记录     : **   修改人       修改日期     修改日期*********************************************************************/#include    "sysdefine.h"#include    <stdio.h>#include	"pubcom.h"#include	"funcapi.h"#include    "code.h"#include    "attrdef.h"#include    "cmscode.h"#include	"cmsreport03.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	acCardKindComm[BIT31_LEN +1];		/* 卡种描述	*/	char	acPrdName[70 + 1];					/* 帐户类型	*/	char	acCardAmt[TXAMT_LEN +1];			/* 余额	*/};#define 	PRTLINE												\	if( prtline( fp, acFmtFile,acPrtData ) ) 					\	FUNCERR_PRO                                                 \	iLineCount++;/* 打印表头 */#define		PRTHEAD 											\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp,"title:" );										\	iLineCount++;												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp,"title2:%s", acBankname );						\	iLineCount++;												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp,"title3:" );									\	iLineCount++;												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "title0:%s|%s",pstPubcom->acBrc,acPrtBrc);	 	\	iLineCount++;                                               \	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "title1:%s|%s|%s|%s",							\					acCcyComm, acYear,acMonth,acDate);	        \	iLineCount++;                                               \	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "head:" );										\	iLineCount++;												\	iLine   ++ ;/* 打印数据 */#define		PRTBODY												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "body:"	);									\	iLineCount++;												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "body0:%s|%s|%s",								\			stPrtdata.acCardKindComm,  	stPrtdata.acPrdName,	\			stPrtdata.acCardAmt);								\	iLineCount++;												\	iLine++;													\	iNum++;/* 打印页表尾 */#define		PRTFOOT												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "foot:" );										\	iLineCount++;												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "foot0:%s", acAmt );							\	iLineCount++;#define		PRTFOOTO											\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "footo:" );									\	iLineCount++;												\	prtline( fp, "foot2:%s", acTAmt );							\	iLineCount++;												\	prtline( fp, "foot3:" );									\	iLineCount++;												\	iLine	=	0 ;		#define		BOTTM												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "bottm:%s|%s", 								\			 acPage, pstPubcom->acTeller);						\	iLineCount++;												\	iPage ++ ; iLine = 0 ; int cms21B016(pstPubcom)struct          pubcom          *pstPubcom;{	EXEC SQL BEGIN DECLARE SECTION;		char    acBrc[BRC_LEN +1];                  /* 机构代码 */ 		char    acBeginDate[DATE_LEN + 1 ];         /* 交易日期 */ 		char    acPrdName[70 + 1 ];	 		        /* 产品代码 */ 		char    acCardKind[BIT9_LEN + 1 ];		    /* 卡片种类 */ 		char    acCcy[BIT4_LEN + 1 ];			    /* 币种 */ 		char    acCcyComm[16 + 1 ];				    /* 币种名称 */ 		char    acCardKindComm[70 + 1 ];	    	/* 卡类说明 */ 		char	acSelStr[512];		char	acSelStr1[512];		char	acPrdCod[8];		double	dCardAmt = 0.00;			 			/* 余额	*/		short	dCardAmt_id = 0;	 		 		/* 余额指示符 */	EXEC SQL END   DECLARE SECTION;	double	dAmt = 0.0;		 					/* 交易金额小计	*/	double	dTAmt = 0.0;	 		 			/* POS交易金额小计	*/	FILE	*fp, *fmtfp;						/* 文件指针	*/ 	int		iLineCount	=	0 ;	int		i, iPage , iLine, iNum, iFlag;	char    acBrc1[BRC_LEN + 1];                 /* 机构码   */	char    acPrtBrc[BRC_LEN + 1];	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];	struct	prtdata	stPrtdata;	memset( acSelStr, 	   	0x00, sizeof( acSelStr )   );	memset( acWhrStr, 	   	0x00, sizeof( acWhrStr )   );	memset( acBrc,	 	   	0x00, sizeof( acBrc )   );	memset( acBrc1,	 	   	0x00, sizeof( acBrc1 )   );	memset( acPage,	 	   	0x00, sizeof( acPage )   );	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 ) );	if ( pubGetBaseInfo("BANKNAME", acBankname ) )		FUNCERR_PRO	strpack(acBankname);	sprintf( g_acTrcMsg, "acBankname[%s]", acBankname );	TRCLOG4	/* 取数据字典 */	getstring( "BeginDate1", 	acBeginDate );	getstring( "Brc1",		 	acBrc1 );	strpack(acBeginDate);	strpack(acBrc1);	sprintf( g_acTrcMsg, "BeginDate1[%s]acBrc1[%s]", acBeginDate,acBrc1 );	TRCLOG4	/* 赋时间 */	memcpy(acYear, acBeginDate, 4);	memcpy(acMonth,acBeginDate + 5, 2);	memcpy(acDate, acBeginDate + 8, 2);    /*检查交易机构是否为中心机构,如果不是,只能打印本机构明细 */    if (strcmp( pstPubcom->acBrcType, BRCTYPE_CRDCENTER))    {		if (strcmp(pstPubcom->acBrc, acBrc1))		{			if (strlen(acBrc1) == 0)			{				strcpy(acBrc1, pstPubcom->acBrc);			}			else			{        		strcpy( g_acRspCode, "CMS214" );        		pubCrtRspInfo( );        		ERRLOG        		goto Exit;			}		}    }    if  (!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/cmsB16.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 DISTINCT(ccy),cardkind,prdcod,ccycomm,cardkindcomm,trandate from cmsreport03 where trandate='%s' ", acBeginDate );	if (strlen(acBrc1) > 0)	{		sprintf( acSelStr + strlen(acSelStr), "and brc = '%s' ", acBrc1 );	}	sprintf( acSelStr + strlen(acSelStr), "GROUP BY ccy,cardkind,prdcod,ccycomm,cardkindcomm,trandate ");	sprintf( acSelStr + strlen(acSelStr), " ORDER BY ccy,cardkind,prdcod,trandate");    sprintf( g_acTrcMsg,"%s", acSelStr );    TRCLOG4	EXEC SQL PREPARE pre1_cur FROM :acSelStr;    if ( SQLCODE )    {        sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);        TRCLOG4        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("cmsreport03",SQLCODE );        ERRLOG        goto Exit ;    }	SQLOPENCUR(report_cur,"report_cur")    if(SQLCODE)    {        sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);        TRCLOG4        strcpy( g_acRspCode, "CMS111" );        pubCrtRspInfo("cmsreport03",SQLCODE );        ERRLOG        goto Exit ;    }	while ( TRUE )	{		pubInitCmsreport03();		memset(acCcy, 0x00, sizeof(acCcy));		memset(acCardKind, 0x00, sizeof(acCardKind));		memset(acCcyComm, 0x00, sizeof(acCcyComm));		memset(acCardKindComm, 0x00, sizeof(acCardKindComm));		memset(acPrdCod, 0x00, sizeof(acPrdCod));		EXEC SQL FETCH report_cur INTO :acCcy,:acCardKind,:acPrdCod,:acCcyComm,:acCardKindComm;		if (SQLCODE == SQLNOTFOUND)			break;		if (SQLCODE)		{            sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);            TRCLOG4            strcpy( g_acRspCode, "CMS112" );            pubCrtRspInfo("cmsreport03",SQLCODE );            ERRLOG            goto Exit ;		}		memset(acPrdName, 0x00, sizeof(acPrdName));		EXEC SQL SELECT prdname	INTO :acPrdName				 FROM	dpssaveprdinfo				 WHERE	prdcode=:acPrdCod;		if (SQLCODE && SQLCODE != SQLNOTFOUND)		{            sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);            TRCLOG4            strcpy( g_acRspCode, "SQL语句错误!" );            pubCrtRspInfo("cmsreport03",SQLCODE );            ERRLOG            goto Exit ;		}        if ( SQLCODE == SQLNOTFOUND )        {            EXEC SQL SELECT prdname INTO :acPrdName                     FROM   dpstermprdinfo                     WHERE  prdcode = :acPrdCod;            if( SQLCODE && SQLCODE != SQLNOTFOUND )            {                strcpy(g_acRspCode,"CMS112");                pubCrtRspInfo("dpstermprdinfo",SQLCODE);                ERRLOG	SQLCLOSECUR(report_cur,"report_cur")                goto Exit;            }        }		/* 取金额 */		sprintf(acSelStr1, "select sum(cardamt) tamt from cmsreport03 where prdcod='%s' and cardkind='%s' and ccy='%s' and trandate='%s' ", acPrdCod,acCardKind, acCcy, acBeginDate ); 		if (strlen(acBrc1) > 0)		{			sprintf( acSelStr1 + strlen(acSelStr1), "and brc = '%s' ", acBrc1 );			memset(acPrtBrc, 0x00, sizeof(acPrtBrc));			strcpy(acPrtBrc, acBrc1);			strpack(acPrtBrc);		}		else		{			memset(acPrtBrc, 0x00, sizeof(acPrtBrc));			strcpy(acPrtBrc, "全行");			strpack(acPrtBrc);		}       	sprintf( g_acTrcMsg,"%s", acSelStr1);        TRCLOG4		EXEC SQL PREPARE pre2_cur FROM :acSelStr1;    	if ( SQLCODE )    	{       		sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);        	TRCLOG4        	strcpy( g_acRspCode, "CMS1A7" );        	pubCrtRspInfo( SQLCODE );        	ERRLOG        	goto Exit;    	}		EXEC SQL DECLARE report1_cur CURSOR FOR pre2_cur;    	if(SQLCODE)    	{       		sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);        	TRCLOG4        	strcpy( g_acRspCode, "CMS110" );        	pubCrtRspInfo("cmsreport03",SQLCODE );        	ERRLOG        	goto Exit ;    	}	SQLOPENCUR(report1_cur,"report1_cur")    	if(SQLCODE)    	{        	sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);        	TRCLOG4        	strcpy( g_acRspCode, "CMS111" );        	pubCrtRspInfo("cmsreport03",SQLCODE );        	ERRLOG        	goto Exit ;    	}		dCardAmt = 0.00;		dCardAmt_id = 0;		EXEC SQL FETCH report1_cur INTO :dCardAmt:dCardAmt_id;		if (SQLCODE)		{            sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);            TRCLOG4            strcpy( g_acRspCode, "取金额错误!" );            pubCrtRspInfo("report1_cur",SQLCODE );            ERRLOG            goto Exit ;		}        sprintf( g_acTrcMsg,"dCardAmt[%.2f]id[%d]", dCardAmt,dCardAmt_id);        TRCLOG4	SQLCLOSECUR(report1_cur,"report1_cur")		/* 表第一次打印取信息(当币种、卡类变换使用) */		if (iFlag == 0)		{			memset( acTmpCcy, 0x00, sizeof(acTmpCcy) );			memset( acTmpCardKind, 0x00, sizeof(acTmpCardKind) );			strcpy( acTmpCcy, acCcy );			strcpy( acTmpCardKind, acCardKind );		}		/* 向结构体中赋值 */		memset( &stPrtdata,		0x00, sizeof( struct prtdata ));		strpack( acCardKindComm );		strpack( acPrdName );		strcpy( stPrtdata.acCardKindComm,	acCardKindComm );		strcpy( stPrtdata.acPrdName,	acPrdName );		sprintf( stPrtdata.acCardAmt, "%.2f", dCardAmt );		strpack( stPrtdata.acCardKindComm );		strpack( stPrtdata.acPrdName );		/* 打表头 */        if( iFlag   ==  0 ) 		{	 			PRTHEAD			iFlag ++;		}		/* 卡类变换重新打印 */		if (strcmp(acTmpCcy, acCcy) != 0)		{			/* 打印卡类小计 */			memset(acAmt, 0x00, sizeof(acAmt));			sprintf( acAmt, "%.2lf", dAmt );			PRTFOOT			/* 给下一个卡类小计赋初值 */			dAmt = 0.00;			/* 打印合计 */			memset(acTAmt, 0x00, sizeof(acTAmt));			sprintf( acTAmt, "%.2lf", dTAmt );			memset(acPage, 0x00, sizeof(acPage));			sprintf( acPage, "%d", iPage );			/* 打印 */			PRTFOOTO			BOTTM			memset( acTmpCardKind, 0x00, sizeof(acTmpCardKind) );			memset( acTmpCcy, 0x00, sizeof(acTmpCcy) );			strcpy( acTmpCcy, acCcy );			strcpy( acTmpCardKind, acCardKind );			/* 给行号赋初值 */			iNum = 1;			iPage = 1;			PRTHEAD			/* 给下一张表合计赋初值 */			dTAmt = 0.00;		}		/* 卡类转换变换的打印 */		if (strcmp(acTmpCardKind, acCardKind) != 0 )		{			/* 打印完成的商户小计数据 */			memset(acAmt, 0x00, sizeof(acAmt));			sprintf( acAmt, "%.2lf", dAmt );			sprintf( g_acTrcMsg, "bcde10");			TRCLOG4			PRTFOOT			/* 给下一个商户小计赋初值 */			memset( acTmpCardKind, 0x00, sizeof(acTmpCardKind) );			strcpy( acTmpCardKind, acCardKind );			dAmt = 0.00;		}		/* 打印数据带 */       	PRTBODY		/* 商户小计 */		dAmt += dCardAmt;		/* 总合计 */		dTAmt += dCardAmt;		/* 赋页数 */		memset(acPage, 0x00, sizeof(acPage));		sprintf( acPage, "%d", iPage );		/* 翻页并且初始化页合计变量 */       	if ( iLine % OVERPAGE == 0 )       	{ 			BOTTM;			PRTHEAD		}	}	if( iLineCount == 0 )	{		strcpy( g_acRspCode, "999998" );		sprintf( g_acRspMsg, "无满足条件的纪录!" );		ERRLOG		goto	Exit ;	}	/* 打印表尾 */	memset(acAmt, 0x00, sizeof(acAmt));	sprintf( acAmt, "%.2lf", dAmt );	PRTFOOT	memset(acTAmt, 0x00, sizeof(acTAmt));	sprintf( acTAmt, "%.2lf", dTAmt );	PRTFOOTO	BOTTMExit:	fclose( fp );	fclose( fmtfp );	SQLCLOSECUR(report_cur,"report_cur")	SQLCLOSECUR(report1_cur,"report1_cur")	if( !strcmp( g_acRspCode, RSP_OK ) )	{		SetInqFormid(pstPubcom, "") ;		return SUCCESS; 	}	else 		return FAILED ;}

⌨️ 快捷键说明

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