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

📄 cms653.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
字号:
/******************************************************************** **   源码文件名称 : cms653.SQC **   函数名称 	   : cms216053 **   所属子系统   : CMS  **   当前文件版本 : 1.0.0.0 **   作        者 : ZhouR  **   版本创建日期 : 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 	<fcntl.h>#include 	"ciscustomerinfo.h"#include	"cmsacctm.h"#include	"cmscardinfo.h"#include 	"errlog.h"#include 	"pubinq.h"EXEC SQL INCLUDE sqlca;#define 	OVERPAGE	45       /* 满页行数 */ #define 	OVERLINE	5        /* 换行行数 */ #define		LIMIT		50struct	prtdata{	char	acCardNo[CARDNO_LEN +1];			/* 卡号     */	char	acAcctSeqNo[ACCTSEQNO_LEN + 1];		/* 卡内帐户序号 */	char	acCcy[BIT15_LEN + 1];			    /* 币种     */	char    acPrdCod[PRDCODE_LEN + 1];          /* 产品代码 */ 	char	acAcctNo[23];						/* 帐号	    */	char	acSubAcct[23];						/* 款项代码 */	char 	acAccOwner[11];						/* 帐户属主 */	char 	acCardBookFlag[9];					/* 卡折标志 */	char 	acStatus[ 7];						/* 帐户状态 */	char 	dBal[18];							/* 帐户余额 */};#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:%d", iPage	 );		   					\	iLineCount++;												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "head:"	);									\	iLineCount++;												\	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|%s|%s|%s", 		\			stPrtdata.acCardNo,									\			stPrtdata.acAcctSeqNo,		stPrtdata.acCcy,		\			stPrtdata.acPrdCod,		 	stPrtdata.acAcctNo,		\			stPrtdata.acSubAcct,		stPrtdata.acAccOwner,	\			stPrtdata.acCardBookFlag,	stPrtdata.acStatus,		\			stPrtdata.dBal);									\	iLineCount++;												\	iLine	++ ;	#define		PRTFOOT												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "tail1:" );									\	iLineCount++;												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "bottm:%s|%s", 								\			 pstPubcom->acBrc, pstPubcom->acTeller );			\	iLineCount++;												\	memset( acPrtData, 0x00, sizeof( acPrtData ) );				\	prtline( fp, "next:%s",pstPubcom->acTranDate );				\	iLineCount++;												\	iPage	++ ;	iLine	=	0 ;		int cms216053(pstPubcom)struct          pubcom          *pstPubcom;{	EXEC SQL BEGIN DECLARE SECTION;	char    acCardNo[CARDNO_LEN + 1];     	/* 卡号	    */ 	char    acAcctNo[BIT22_LEN + 1];     	/* 卡帐号   */ 	char    acSubAcct[BIT32_LEN + 1];     	/* 款项代码 */	char    pcPasswd[BIT17_LEN + 1];     	/* 卡密码	*/	char	acWhrStr[ 512 ];	EXEC SQL END   DECLARE SECTION;	char    acAccOwner[FLAG1_LEN + 1];		/* 帐户属主 */	char    acCardBookFlag[FLAG1_LEN + 1];	/* 卡折标志 */	char    acStatus[FLAG1_LEN + 1];		/* 帐户状态 */	BASESUBACCTINFO          stDpsAccInfo;      /* 静态表       */	char    acCcy[CCY_LEN + 1];			/* 币种 */	char	acBankname[ 41 ];	char    acBuffer[15];	char    acBuffer1[11];	char    acBuffer2[9];	char    acBuffer3[15];	FILE	*fp,*fmtfp;						/* 文件指针	*/ 	char	acSelStr[ 301 ];	char	acWhrStr1[ 512 ];	char	acWhrStr2[ 512 ];	char	acWhrStr3[ 512 ];	char	acWhrStr4[ 512 ];	char	acWhrStr5[ 512 ];	char	acWhrStr6[ 512 ];	char	acStr1[ 141 ];	int     iRtn;	double  dBal=0.00;                          /* 余额         */	int		iLineCount	=	0 ;	int		i, iPage, iLine ;	char	acFileName[ 101 ];	char	acFmtFile[ 101 ];	char	acPrtData[ 4096 ];	struct	prtdata	stPrtdata;	struct  ciscustomerinfo  stCisCustomerInfo; /* 客户公用基本信息文件 */	struct  cmsacctm      stCmsAcctM;     	/* 卡帐户对照表 */	struct  cmscardinfo   stCmsCardInfo;    /* 卡片信息表	*/	memset( acCardNo, 	   0x00, sizeof( acCardNo ) );	memset( acAcctNo, 	   0x00, sizeof( acAcctNo ) );	memset( acSubAcct, 	   0x00, sizeof( acSubAcct) );	memset( pcPasswd,	   0x00, sizeof( pcPasswd ) );	memset( acCcy,		   0x00, sizeof( acCcy ));	memset( acBuffer, 	   0x00, sizeof( acBuffer )   );	memset( acBuffer1, 	   0x00, sizeof( acBuffer1 )  );	memset( acBuffer2, 	   0x00, sizeof( acBuffer2 )  );	memset( acBuffer3, 	   0x00, sizeof( acBuffer3 )  );	memset( acAccOwner,    0x00, sizeof( acAccOwner ) );  	memset( acCardBookFlag,0x00, sizeof( acCardBookFlag) );  	memset( acStatus,  	   0x00, sizeof( acStatus )   );  	memset( acSelStr, 	   0x00, sizeof( acSelStr )   );	memset( acWhrStr, 	   0x00, sizeof( acWhrStr )   );	memset( acWhrStr1, 	   0x00, sizeof( acWhrStr1 )  );	memset( acWhrStr2, 	   0x00, sizeof( acWhrStr2 )  );	memset( acWhrStr3, 	   0x00, sizeof( acWhrStr3 )  );	memset( acWhrStr4, 	   0x00, sizeof( acWhrStr4 )  );	memset( acWhrStr5, 	   0x00, sizeof( acWhrStr5 )  );	memset( acWhrStr6, 	   0x00, sizeof( acWhrStr6 )  );	memset( acStr1, 	   0x00, sizeof( acStr1 )     );	memset( &stCmsAcctM,   0x00, sizeof( struct cmsacctm ));	memset( &stCmsCardInfo,0x00, sizeof( struct cmscardinfo ));	memset( &stCisCustomerInfo, 0x00,   sizeof( struct ciscustomerinfo ) );	memset( &stDpsAccInfo,      0x00,   sizeof( BASESUBACCTINFO ) );	memset( acBankname,    0x00, sizeof( acBankname ) );	if ( pubGetBaseInfo("BANKNAME", acBankname ) )		FUNCERR_PRO	/* 取数据字典 */  	getstring( "CardNo", 	acCardNo );	getstring( "AcctNo", 	acAcctNo );	getstring( "SubAcct", 	acSubAcct );	getstring( "Passwd1", 	pcPasswd );		sprintf( g_acTrcMsg,"CardNo[%s]", acCardNo );  	TRCLOG4	fp = (FILE *)BeginFile( pstPubcom, NULL );	if ( fp == NULL )	{		ERRLOG		return FAILED ;	}	sprintf( acFmtFile, "%s/fmt/cms653.fmt", getenv("HOME") );	sprintf( g_acFmtFile, acFmtFile );          	if( ( fmtfp=fopen(acFmtFile,"r") ) == NULL )	{                                           		strcpy( g_acTrcMsg, acFmtFile );        		TRCLOG2                                 		strcpy( g_acRspCode, "CMS1B0" );		sprintf( g_acRspMsg, "打开格式文件[%s]错", acFmtFile );		ERRLOG		goto Exit;	}	strcpy( stCmsCardInfo.cardno, acCardNo );  	sprintf( g_acTrcMsg,"CardNo[%s]", stCmsCardInfo.cardno );  	TRCLOG4	/* 检查卡密码 */	if ( strlen(pcPasswd) && strlen( acCardNo) )	{		iRtn = cmsApiChkCardPwd( &stCmsCardInfo, pcPasswd, pstPubcom->acChannelId );		if ( iRtn )		{			ERRLOG			goto Exit;		}		strcpy( g_acTrcMsg, "cmsApiChkCardPwd finish " );		TRCLOG1	}		strcpy( g_acTrcMsg, "cmsApiChkCardPwd finish " );		TRCLOG2	iLine	=	0 ;			iPage	=	1 ;	sprintf( acWhrStr1, " select * from cmsacctm ");	sprintf( acWhrStr2, " where 1=1 ");	if ( strlen ( acCardNo ) )	{		sprintf( acWhrStr3, " and cardno = '%s'",  acCardNo );	}	if ( strlen ( acAcctNo ) )	{		sprintf( acWhrStr4, " and acctno = '%s'",  acAcctNo );	}	if ( strlen ( acSubAcct ) )	{		sprintf( acWhrStr5, " and subacct = '%s'",  acSubAcct );	}	sprintf( acWhrStr6, " ORDER BY  cardno, acctseqno " );	sprintf( acWhrStr, "%s%s%s%s%s%s",acWhrStr1,acWhrStr2,acWhrStr3,acWhrStr4,acWhrStr5,acWhrStr6 ); 	strcpy( g_acTrcMsg, acWhrStr );	TRCLOG4                        	EXEC SQL    PREPARE pre_1 FROM :acWhrStr;	if ( SQLCODE )                      	{                                   		strcpy( g_acRspCode, "CMS1A7" );		pubCrtRspInfo( SQLCODE );       		ERRLOG                          		goto Exit;	}                                   	EXEC SQL    DECLARE acct_cur CURSOR FOR pre_1;	if(SQLCODE)	{		sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);  		TRCLOG4		strcpy( g_acRspCode, "CMS110" );		pubCrtRspInfo("cmsacctm",SQLCODE );		ERRLOG		goto Exit ;	}	SQLOPENCUR(acct_cur,"acct_cur")	if(SQLCODE)	{		sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);  		TRCLOG4		strcpy( g_acRspCode, "CMS111" );		pubCrtRspInfo("cmsacctm",SQLCODE );		ERRLOG		goto Exit ;	}	for( ; ; )	{		memset( &stPrtdata,	0x00,	sizeof( struct prtdata ) );		pubInitCmspcdreg();		EXEC SQL FETCH acct_cur into R_CMSACCTM;		if( SQLCODE == SQLNOTFOUND )	break ;		sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);  		TRCLOG4		if(SQLCODE)		{			sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);  			TRCLOG4			strcpy( g_acRspCode, "CMS112" );			pubCrtRspInfo("cmsacctm",SQLCODE );			ERRLOG	SQLCLOSECUR(acct_cur,"acct_cur")			goto Exit ;		}		sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);  		TRCLOG4		/* 转换帐户属主 */		strcpy ( acAccOwner, cmsacctm_accowner );		switch ( acAccOwner[ BIT1_LEN ] )		{			case BELONGFCARD:                     				strcpy( acBuffer ,  "属于附属卡" );				break;                         			case BELONGMAINCARD:                 				strcpy( acBuffer ,  "属于主卡" );				break;                         			default:				acBuffer[ BIT1_LEN ] = acAccOwner[ BIT1_LEN ];				break;                                       		}		/* 转换卡折标志 */		strcpy ( acCardBookFlag, cmsacctm_cardbookflag );		switch ( acCardBookFlag[ BIT1_LEN ] )		{			case ACCOPENFLG_CARD:                     				strcpy( acBuffer1 ,  "帐户无折" );				break;                         			case ACCOPENFLG_BOOK:                 				strcpy( acBuffer1 ,  "帐户有折" );				break;                         			default:				acBuffer1[ BIT1_LEN ] = acCardBookFlag[ BIT1_LEN ];				break;                                       		}		/* 转换帐户状态 */		strcpy ( acStatus, cmsacctm_status );		switch ( acStatus[ BIT1_LEN ] )		{			case NORMAL_STS:                     				strcpy( acBuffer2 ,  "正常" );				break;                         			case CANCEL_STS:                 				strcpy( acBuffer2 ,  "销户" );				break;                         			case MOVEOUT_STS:                 				strcpy( acBuffer2 ,  "移出" );				break;                         			case CHGCARD_STS:                 				strcpy( acBuffer2 ,  "已换卡" );				break;                         			default:				acBuffer2[ BIT1_LEN ] = acStatus[ BIT1_LEN ];				break;                                       		}		/* 转换币种 */		strcpy ( acCcy, cmsacctm_ccy );		TransMemo( "0025" , acCcy , acBuffer3);		sprintf( g_acTrcMsg,"SQLCODE[%s][%s][%s][%s]", 				acBuffer, acBuffer1, acBuffer2, cmsacctm_ccy );		TRCLOG4		strcpy ( stCmsAcctM.acctno, 	cmsacctm_acctno );		strcpy ( stCmsAcctM.subacct, 	cmsacctm_subacct );		strcpy ( stCmsAcctM.ccy, 		cmsacctm_ccy );		sprintf( g_acTrcMsg,"SQLCODE[%s][%s][%s]", 				stCmsAcctM.acctno,stCmsAcctM.subacct,cmsacctm_ccy );		TRCLOG4		if ( strlen (pcPasswd) )		{			/* 按客户账号和款项代码获取账户信息 DPS API */			memset( &stDpsAccInfo,      0x00,   sizeof( BASESUBACCTINFO ) );			iRtn = InqBaseSubAcct(  pstPubcom,								stCmsAcctM.acctno,								stCmsAcctM.subacct,								stCmsAcctM.ccy,								"1100000000000000", "0","0",								&stDpsAccInfo);			if (iRtn)			{				strcpy( g_acRspCode, RSP_OK );			}			if ( stCmsAcctM.status[0]=='2' || stCmsAcctM.status[0]=='1' )			{				stDpsAccInfo.dBal=0.0;			}		}		strpack ( cmsacctm_acctno );		strpack ( cmsacctm_subacct );		strcpy ( stPrtdata.acCardNo, 		cmsacctm_cardno    );		strcpy ( stPrtdata.acAcctSeqNo,  	cmsacctm_acctseqno );		strcpy ( stPrtdata.acCcy, 	      	acBuffer3 	   );		strcpy ( stPrtdata.acPrdCod,  		cmsacctm_prdcod    );		strcpy ( stPrtdata.acAcctNo,   		cmsacctm_acctno    );		strcpy ( stPrtdata.acSubAcct,  		cmsacctm_subacct   );		strcpy ( stPrtdata.acAccOwner,		acBuffer   );		strcpy ( stPrtdata.acCardBookFlag,  acBuffer1  );		strcpy ( stPrtdata.acStatus,	  	acBuffer2  );		sprintf( stPrtdata.dBal,	"%.2lf",stDpsAccInfo.dBal  );		sprintf(  g_acTrcMsg, "acCardNo[%s],acAcctSeqNo[%s],acCcy[%s],acPrdCod[%s],acSubAcct[%s],"								"acAccOwner[%s],acAcctNo[%s],acCardBookFlag[%s],acStatus[%s]",								stPrtdata.acCardNo,  stPrtdata.acAcctSeqNo, stPrtdata.acCcy,								stPrtdata.acPrdCod,  stPrtdata.acSubAcct,   stPrtdata.acAccOwner,								stPrtdata.acAcctNo,  stPrtdata.acCardBookFlag,   stPrtdata.acStatus);		TRCLOG4				if( iLine	==	0 ) { PRTHEAD }				PRTBODY				if( iLine % OVERPAGE == 0 )				{ PRTFOOT }		sprintf( g_acTrcMsg, "%s|%s|%s|%s|%s|%s|%s|%s|%s",		\				stPrtdata.acCardNo,		stPrtdata.acAcctSeqNo,		\			stPrtdata.acCcy,		stPrtdata.acPrdCod,			\			stPrtdata.acAcctNo,									\			stPrtdata.acSubAcct,		stPrtdata.acAccOwner, 	\			stPrtdata.acCardBookFlag,	stPrtdata.acStatus ); 	\		TRCLOG4	}	SQLCLOSECUR(acct_cur,"acct_cur")		if( iLine < OVERPAGE && iLine != 0 )	{ PRTFOOT }	if( iLineCount == 0 )	{		strcpy( g_acRspCode, "CMS113" );		sprintf( g_acRspMsg, "无满足条件的纪录!" );		ERRLOG		goto	Exit ;	}Exit:	fclose( fmtfp );	fclose( fp );	if( !strcmp( g_acRspCode, RSP_OK ) )	{		SetInqFormid(pstPubcom, "") ;		return SUCCESS; 	}	else 		return FAILED ;}

⌨️ 快捷键说明

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