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

📄 cmsb20.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
字号:
/******************************************************************** **   源码文件名称 : cmsB20.SQC **   函数名称 	   : cms21B020 **   所属子系统   : CMS  **   当前文件版本 : 1.0.0.0 **   作        者 : xuliang  **   版本创建日期 : 2005/01/07 **   功能描述     : 卡发行量情况打印 **   修改记录     : **   修改人       修改日期     修改日期*********************************************************************/#include    "sysdefine.h"#include    <stdio.h>#include	"pubcom.h"#include	"funcapi.h"#include    "code.h"#include    "attrdef.h"#include    "cmscode.h"#include	"cmscardinfo.h"#include	"pubbranchinfo.h"#include 	"errlog.h"EXEC SQL INCLUDE sqlca;#define 	OVERPAGE	45       /* 满页行数 */ #define 	OVERLINE	5        /* 换行行数 */ #define		LIMIT		50struct	prtdata{	char    acIssueBrc[BRC_LEN + 1];            /* 发卡机构码        */	char    acCardKind[CONDITION_LEN + 1];      /* 卡片种类          */	char    acCardNum[BIT11_LEN + 1]; 	        /* 发卡数量          */	char    acClsCnt[BIT11_LEN + 1];  		    /* 销卡数量          */	char    acSettleNum[BIT11_LEN + 1];         /* 结存数量          */	char    acCardNum1[BIT11_LEN + 1];          /* 机构小计 发卡数量 */	char    acClsCnt1[BIT11_LEN + 1];           /* 机构小计 销卡数量 */	char    acSettleNum1[BIT11_LEN + 1];        /* 机构小计 结存数量 */	char    acCardNum2[BIT11_LEN + 1];          /* 合计 发卡数量     */	char    acClsCnt2[BIT11_LEN + 1];           /* 合计 销卡数量     */	char    acSettleNum2[BIT11_LEN + 1];        /* 合计 结存数量     */};#define 	PRTLINE												\	if( prtline( fp, acFmtFile,acPrtData ) ) 					\	FUNCERR_PRO													\	iLineCount++;#define		PRTHEAD 											\	prtline( fp,"title:%s", acBankname);						\	iLineCount++;												\	prtline( fp, "title0:%s|%s", acBeginDate,acEndDate);        \	iLineCount++;												\	prtline( fp, "title1:%s|%d",								\			 pstPubcom->acBrc, iPage	 );					    \	iLineCount++;												\	prtline( fp, "head:"	);									\	iLineCount++;												\#define		PRTBODY												\    prtline( fp, "body1:"   );									\    iLineCount++;												\    iLine   ++ ;        										\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "body0:%s|%s|%s|%s|%s", 					    \            stPrtdata.acIssueBrc,                               \            stPrtdata.acCardKind,                               \            stPrtdata.acCardNum,                                \            stPrtdata.acClsCnt,                                 \            stPrtdata.acSettleNum );                            \	iLineCount++;												\	iLine	++ ;                                                \    if( iLine % OVERPAGE == 0 || (iLine - 1) % OVERPAGE == 0)   \        { PRTFOOT }#define		PRTFOOT												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "tail1:" );									\	iLineCount++;												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "bottm:%s", 									\			 pstPubcom->acTeller );								\	iLineCount++;												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "next:%s",pstPubcom->acTranDate );				\	iLineCount++;												\	iPage	++ ;	iLine	=	0 ;		int cms21B020(pstPubcom)struct  pubcom    *pstPubcom;{	EXEC SQL BEGIN DECLARE SECTION;    char    acBeginDate[DATE_LEN + 1 ];         /* 起始日期        */	char    acEndDate[DATE_LEN + 1 ];           /* 终止日期        */	char    acIssueBrc[BRC_LEN + 1 ];           /* 交易机构        */	char    acCardkindcomm[CONDITION_LEN + 1];	long	lCardNum = 0;            short   lCardNum_ID;	long	lClsCnt = 0;        	short   lClsCnt_ID;	long	lSettleNum = 0;        	short   lSettleNum_ID;	long	lCardNum1 = 0;        	long	lClsCnt1 = 0;        	long	lSettleNum1 = 0;        	long	lCardNum2 = 0;        	long	lClsCnt2 = 0;        	long	lSettleNum2 = 0;        	char	acWhrStr[ 512 ];	char	acTableStat[ 255 ];	char	acLockStat[ 255 ];	EXEC SQL END   DECLARE SECTION;	char	acBankname[ 41 ];	FILE	*fp,*fmtfp;							/* 文件指针	       */ 	char	acSelStr[ 301 ];	int		iLineCount	=	0 ;	int		i, iPage, iLine ;	int		iRtnRows = 0;    char    acTableName[PRDCODE_LEN + 1];        /* 表名称 */    char    acFileName[FILENAME_LEN + 1];        /* 文件名称 */	char	acFmtFile[ 101 ];	char	acPrtData[ 4096 ];	struct prtdata	        stPrtdata;	struct cmscardinfo      stCmscardinfo;       /* 卡片信息表  */	memset( acSelStr, 	   0x00, sizeof( acSelStr )   );	memset( acWhrStr, 	   0x00, sizeof( acWhrStr )   );        memset( acIssueBrc,    0x00, sizeof( acIssueBrc )  );     memset( acCardkindcomm,    0x00, sizeof( acCardkindcomm )  );     memset( acFileName,    0x00, sizeof( acFileName ) );    memset( acTableName,   0x00, sizeof( acTableName ) );	memset( &stCmscardinfo,  0x00, sizeof( struct cmscardinfo ) );	memset( acBankname,    0x00, sizeof(acBankname));	if ( pubGetBaseInfo("BANKNAME", acBankname ) )		FUNCERR_PRO	/* 取数据字典 */      getstring( "BeginDate1",   acBeginDate );    getstring( "EndDate1",     acEndDate   );	getstring( "Brc1",         acIssueBrc  );    sprintf( g_acTrcMsg,"BeginDate[%s]EndDate[%s]Brc1[%s]",                         acBeginDate,acEndDate,acIssueBrc );    TRCLOG4	/*检查交易机构是否为中心机构,如果不是,不能做此交易*/	if (strcmp( pstPubcom->acBrcType, BRCTYPE_CRDCENTER)) 	{	 	 if (strlen(acIssueBrc) == 0)		 {		     strcpy( acIssueBrc, pstPubcom->acBrc );		 }		 if (strcmp( pstPubcom->acBrc, acIssueBrc))		 {			 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_acRspMsg, "打开文件句柄出错!" );        pubCrtRspInfo( );		ERRLOG		return FAILED ;	}	sprintf( acFmtFile, "%s/fmt/cmsB20.fmt", getenv("HOME") );	sprintf( g_acFmtFile, acFmtFile );            	if( ( fmtfp=fopen( acFmtFile,"r" ) ) == NULL )	{                                             		strcpy( g_acTrcMsg, acFmtFile );          		TRCLOG4                                           strcpy( g_acRspCode, "CMS1B0" );        sprintf( g_acRspMsg, "打开格式文件[%s]错", acFmtFile );		ERRLOG		goto Exit;	}	iLine	=	0 ;			iPage	=	1 ;	/* 卡中心 */	/*  机构号为空,且为卡中心,则acIssueBrc赋为'%' */    if (!strcmp( pstPubcom->acBrcType, BRCTYPE_SITE) 		&& (strlen(acIssueBrc) == 0 ) ) {	    strcpy( acIssueBrc,"%" );	}	strcat( acIssueBrc, "%" );#ifdef V_INFORMIX    EXEC SQL    SET ISOLATION TO DIRTY READ;#endif	/* 根据机构表(pubbranchinfo), 取出营业网点的机构号 */    EXEC SQL    DECLARE Clear_cur CURSOR FOR 		 SELECT brccode          FROM  PUBBRANCHINFO         WHERE brccode like :acIssueBrc		 ORDER BY brccode;	SQLOPENCUR(Clear_cur,"Clear_cur")    if(SQLCODE)    {        sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);        TRCLOG4        strcpy( g_acRspCode, "CMS111" );        pubCrtRspInfo("PUBBRANCHINFO",SQLCODE );        ERRLOG        goto Exit ;    }    for( ; ; )    {		EXEC SQL FETCH Clear_cur into :pubbranchinfo_brccode;		if( SQLCODE == SQLNOTFOUND ) 	    	break ; 		if(SQLCODE) 		{ 	   		sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); 	   		TRCLOG4 	   		strcpy( g_acRspCode, "CMS112" ); 	   		pubCrtRspInfo( "PUBBRANCHINFO",SQLCODE );            ERRLOG            goto Exit ;        }		strcpy ( acIssueBrc,pubbranchinfo_brccode );		/* 支行 */    	EXEC SQL    DECLARE CardNum_cur CURSOR FOR 			  SELECT  cardkind         		FROM  CMSCARDINFO         	   WHERE  issuebrc= :acIssueBrc		    GROUP BY  cardkind;	SQLOPENCUR(CardNum_cur,"CardNum_cur")    	if(SQLCODE)    	{        	sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);        	TRCLOG4        	strcpy( g_acRspCode, "CMS111" );        	pubCrtRspInfo("CMSCARDINFO",SQLCODE );        	ERRLOG        	goto Exit ;    	}		lCardNum1 = 0;   		lClsCnt1 = 0;   		lSettleNum1 = 0;    	for( ; ; )    	{    		EXEC SQL FETCH CardNum_cur into :cmscardinfo_cardkind;	 		if( SQLCODE == SQLNOTFOUND ) { 	    		break ;			} 			if(SQLCODE) 			{ 	   			sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); 	   			TRCLOG4 	   			strcpy( g_acRspCode, "CMS112" ); 	   			pubCrtRspInfo( "CMSCARDINFO",SQLCODE );            	ERRLOG            	goto Exit ;        	}				/* 取发卡量 select count(*) 根据卡种和状态*/    		EXEC SQL SELECT  count(*)					INTO  :lCardNum:lCardNum_ID         			FROM  CMSCARDINFO         			WHERE issuebrc = :acIssueBrc					AND	  crdsts = '1'		 			AND   cardkind = :cmscardinfo_cardkind         			AND   usedate between :acBeginDate AND :acEndDate;			/* 取销卡量 select count(*) 根据卡种和状态*/     		EXEC SQL SELECT   count(*)        			INTO  :lClsCnt:lClsCnt_ID					FROM  CMSCARDINFO					WHERE issuebrc = :acIssueBrc         			AND   crdsts = '2'		 			AND   cardkind = :cmscardinfo_cardkind         			AND   closedate between :acBeginDate AND :acEndDate;     		EXEC SQL SELECT   count(*)        			INTO  :lSettleNum:lClsCnt_ID					FROM  CMSCARDINFO					WHERE issuebrc = :acIssueBrc         			AND   crdsts = '1'		 			AND   cardkind = :cmscardinfo_cardkind;				/* 翻译卡片种类 */     		EXEC SQL SELECT  cardkindcomm 					INTO  :acCardkindcomm					FROM  CMSCARDKIND					WHERE cardkind = :cmscardinfo_cardkind;		 			/* 给body赋值,打印一条记录 */        	memset( &stPrtdata, 0x00,   sizeof( struct prtdata ) );			strcpy ( stPrtdata.acIssueBrc,  acIssueBrc );			strpack(acCardkindcomm);			acCardkindcomm[30]='\0';			strcpy ( stPrtdata.acCardKind, 	acCardkindcomm );  	      	sprintf( stPrtdata.acCardNum ,   "%ld", lCardNum) ;			sprintf( stPrtdata.acClsCnt ,    "%ld", lClsCnt) ;			sprintf( stPrtdata.acSettleNum , "%ld", lSettleNum) ;					/* 机构小计 */			lCardNum1 += lCardNum;			lClsCnt1 += lClsCnt;			lSettleNum1 += lSettleNum;        	sprintf( stPrtdata.acCardNum1 , "%ld", lCardNum1) ;			sprintf( stPrtdata.acClsCnt1 , "%ld", lClsCnt1) ;			sprintf( stPrtdata.acSettleNum1 , "%ld", lSettleNum1) ;			if( iLine == 0 ) 				{ PRTHEAD }			PRTBODY		} /* 取卡种 for end */		SQLCLOSECUR(CardNum_cur,"CardNum_cur")		if (lCardNum1 > 0 || lClsCnt1 > 0 || lSettleNum1 > 0)		{   			prtline( fp, "body1:"   );									   			iLineCount++;												   			iLine   ++ ;        										   			prtline( fp, "body2:%s|%s|%s",     stPrtdata.acCardNum1,                		  	stPrtdata.acClsCnt1, stPrtdata.acSettleNum1 );        		iLineCount++;															iLine	++ ;                                                  			if( iLine % OVERPAGE == 0 || (iLine - 1) % OVERPAGE == 0)          		{				PRTFOOT			}														}		/* 合计 */   		lCardNum2 += lCardNum1;   		lClsCnt2 += lClsCnt1;   		lSettleNum2 += lSettleNum1;	 		sprintf( stPrtdata.acCardNum2 , "%ld", lCardNum2) ;    	sprintf( stPrtdata.acClsCnt2 , "%ld", lClsCnt2) ;    	sprintf( stPrtdata.acSettleNum2 , "%ld", lSettleNum2) ;   	}/* 取机构 for end */	if( iLineCount == 0 )	{		strcpy( g_acRspCode, "CMS113" );		sprintf( g_acRspMsg, "无满足条件的纪录!" );		ERRLOG		goto	Exit ;	}	else	{    	prtline( fp, "body1:"   );									    	iLineCount++;												    	iLine   ++ ;        										    	prtline( fp, "body4:%s|%s|%s",        						\            	stPrtdata.acCardNum2,                               \            	stPrtdata.acClsCnt2,                                \            	stPrtdata.acSettleNum2 );                           \        iLineCount++;														iLine	++ ;                                               		PRTFOOT 	}Exit:	fclose( fmtfp );	fclose( fp );	SQLCLOSECUR(Clear_cur,"Clear_cur")	SQLCLOSECUR(CardNum_cur,"CardNum_cur")	if( !strcmp( g_acRspCode, RSP_OK ) )	{		SetInqFormid(pstPubcom, "") ;		return SUCCESS;    }	else 		return FAILED ;}

⌨️ 快捷键说明

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