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

📄 cms655.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
字号:
/******************************************************************** **   源码文件名称 : cms655.SQC **   函数名称 	   : cms216055 **   所属子系统   : 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    "cmscardinfo.h"#include	"cmsacctm.h"#include 	"errlog.h"#include 	"pubinq.h"EXEC SQL INCLUDE sqlca;#define 	OVERPAGE	45       /* 满页行数 */ #define 	OVERLINE	5        /* 换行行数 */ #define		LIMIT		50struct	prtdata{	char	acCustNo[CUSTNO_LEN +1];        /* 客户号 	    */	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	acIssueDate[DATE_LEN + 1];	    /* 开户/移入日期*/	char	acIssueBrc[BRC_LEN +1];		    /* 开户/移入机构*/	char	acCardBookFlag[9];				/* 卡折标志     */	char	acStatus[9];					/* 帐户状态		*/};#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|%d",								\			 stPrtdata.acCustNo, 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", 			\			stPrtdata.acCardNo,		stPrtdata.acAcctSeqNo,		\			stPrtdata.acCcy,		stPrtdata.acPrdCod,			\			stPrtdata.acAcctNo,		stPrtdata.acSubAcct,		\			stPrtdata.acAccOwner,	stPrtdata.acCardBookFlag,	\			stPrtdata.acStatus	);								\	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 cms216055(pstPubcom)struct          pubcom          *pstPubcom;{	/*定义局部变量*/	char    acAccOwner[FLAG1_LEN + 1];			/* 帐户属主 */	char    acCardBookFlag[FLAG1_LEN + 1];		/* 卡折标志 */	char    acStatus[FLAG1_LEN + 1];			/* 帐户状态 */	char    acCcy[CCY_LEN + 1];                /* 币种 */	char    pcPasswd[PASSWD_LEN + 1];       /* 卡密码   */	char    acBuffer[ 15 ];				char    acBuffer1[ 11 ];				char    acBuffer2[ 9 ];				char    acBuffer3[ 15 ];				char	acBankname[ 41 ];	FILE	*fp,*fmtfp;							/* 文件指针	*/ 	int		iLineCount	=	0 ;	int		i, iPage, iLine ;	char    acFmtFile[ 101 ];	char    acPrtData[ 4096 ];	char    acFileName[FILENAME_LEN + 1];       /* 文件名称     */	char    acTableName[PRDCODE_LEN + 1];       /* 表名称       */	char    acIdType[IDTYPE_LEN + 1]; 	     	/* 证件类型     */	char    acIdNo[IDNO_LEN + 1]; 			    /* 证件号码     */	char    acCustName[CUSTNAME_LEN + 1];       /* 客户姓名     */	int	iRtn;	int     iCount=0;                           /* 计数器       */	struct	prtdata	stPrtdata;	struct  ciscustomerinfo  stCisCustomerInfo; /* 客户公用基本信息文件 */	struct  cmsacctm 		 stCmsAcctM; 		/* 卡帐户对照表 */	BASESUBACCTINFO   		 stDpsAccInfo; 		/* 静态表       */	struct  cmscardinfo   stCmsCardInfo;    /* 卡片信息表   */	strcpy( g_acRspMsg, "子交易: 客户下卡号和各分帐号查询打印子交易开始.." );	TRCLOG4	/* 初始化 */	memset( &stCisCustomerInfo, 0x00,   sizeof( struct ciscustomerinfo ) );	memset( &stDpsAccInfo,      0x00,   sizeof( BASESUBACCTINFO ) );	memset( &stCmsCardInfo,0x00, sizeof( struct cmscardinfo ));	memset( &stCmsAcctM, 		0x00,   sizeof( struct cmsacctm ) );	memset( acAccOwner,        	0x00,   sizeof( acAccOwner ) );	memset( pcPasswd,0x00, sizeof( pcPasswd ) );	memset( acCcy,         		0x00, 	sizeof( acCcy ));	memset( acCardBookFlag,    	0x00,   sizeof( acCardBookFlag ) );	memset( acStatus,        	0x00,   sizeof( acStatus ) );	memset( acIdType,        	0x00,   sizeof( acIdType ) );	memset( acIdNo,        		0x00,   sizeof( acIdNo ) );	memset( acBuffer,      		0x00, 	sizeof( acBuffer )   );	memset( acBuffer1,      	0x00, 	sizeof( acBuffer1 )   );	memset( acBuffer2,      	0x00, 	sizeof( acBuffer2 )   );	memset( acBuffer3,      	0x00, 	sizeof( acBuffer3 )   );	memset( acCustName,        	0x00,   sizeof( acCustName ) );	memset( acFileName,        	0x00,   sizeof( acFileName ) );	memset( acTableName,       	0x00,   sizeof( acTableName ) );	memset( acBankname,    		0x00, 	sizeof( acBankname ) );	if ( pubGetBaseInfo("BANKNAME", acBankname ) )		FUNCERR_PRO	/* 取数据字典 */  	getstring( "IdType",           acIdType   );	getstring( "IdNo",    		   acIdNo    );	getstring( "CustName", 		   acCustName );		sprintf( g_acTrcMsg,"IdType[%s]IdNo[%s]CustName[%s]",		\						acIdType,acIdNo,acCustName );	TRCLOG3	fp = (FILE *)BeginFile( pstPubcom, NULL );	if ( fp == NULL )	{		ERRLOG		return FAILED ;	}	sprintf( acFmtFile, "%s/fmt/cms655.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;	}	/* 检查卡密码 */	if ( strlen(pcPasswd) )	{		iRtn = cmsApiChkCardPwd( &stCmsCardInfo, pcPasswd, pstPubcom->acChannelId );		if ( iRtn )		{			ERRLOG			goto Exit;		}		strcpy( g_acTrcMsg, "cmsApiChkCardPwd finish " );		TRCLOG1	}	iLine	=	0 ;			iPage	=	1 ;	/*将输入参数赋值*/	if ( strlen ( acIdType ) > 0 )	{		strcpy( stCisCustomerInfo.idtype, 	acIdType );	}	if ( strlen ( acIdNo ) > 0 )	{		strcpy( stCisCustomerInfo.idno, 	acIdNo   );	}	if ( strlen ( acCustName ) > 0 )	{		strcpy( stCisCustomerInfo.customname,	acCustName   );	}    /* 取客户号 */	pubStoVCiscustomerinfo( &stCisCustomerInfo );	EXEC SQL    SELECT customid INTO :ciscustomerinfo_customid				FROM ciscustomerinfo				WHERE idtype=:ciscustomerinfo_idtype								AND idno=:ciscustomerinfo_idno									AND customname=:ciscustomerinfo_customname;			sprintf( g_acTrcMsg,"CustNo[%s]",ciscustomerinfo_customid );	TRCLOG3	if( SQLCODE && SQLCODE != SQLNOTFOUND )	{		sprintf( g_acRspCode, "CMS112");		pubCrtRspInfo( "ciscustomerinfo",SQLCODE );		TRCLOG3		goto Exit;	}	if( SQLCODE == SQLNOTFOUND )	{		sprintf( g_acRspCode, "CMS113");		pubCrtRspInfo( "ciscustomerinfo",SQLCODE );		TRCLOG3		goto Exit;	}	/* 取卡号 */	pubStoVCmsacctm( &stCmsAcctM );	EXEC SQL    DECLARE acc_l_cur CURSOR FOR				SELECT * FROM CMSACCTM				WHERE custno=:ciscustomerinfo_customid				ORDER BY cardno,acctseqno;	/* 定义游标出错 */	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS110" );		pubCrtRspInfo( "cmsacctm", SQLCODE );		TRCLOG3;		ERRLOG		goto Exit;	}	SQLOPENCUR(acc_l_cur,"acc_l_cur")	/* 打开游表出错 */	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS111" );		pubCrtRspInfo( "cmsacctm", SQLCODE );		TRCLOG3;		ERRLOG		goto Exit;	}	while ( TRUE )	{		pubInitCmsacctm();		EXEC SQL    FETCH acc_l_cur INTO R_CMSACCTM ;		/* 取游表出错 */		if ( SQLCODE && SQLCODE != SQLNOTFOUND )		{			strcpy( g_acRspCode, "CMS112" );			pubCrtRspInfo( "cmsacctm", SQLCODE );			TRCLOG3;			ERRLOG	SQLCLOSECUR(acc_l_cur,"acc_l_cur")			goto Exit;		}		/* 记录不存在 */		else if ( SQLCODE == SQLNOTFOUND )		break;		/* 记录存在 */		pubVtoSCmsacctm( &stCmsAcctM );		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.dAvailBal=0.0;				stDpsAccInfo.dBal=0.0;			}		}		/* 转换帐户属主 */		strcpy ( acAccOwner, stCmsAcctM.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, stCmsAcctM.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, stCmsAcctM.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, stCmsAcctM.ccy );		TransMemo( "0025" , acCcy , acBuffer3);		sprintf( g_acTrcMsg,"SQLCODE[%s][%s][%s][%s]", acBuffer, acBuffer1, acBuffer2, acBuffer3 );  		TRCLOG4		strpack ( stCmsAcctM.acctno );		strpack ( stCmsAcctM.subacct );		strcpy ( stPrtdata.acCustNo, 		stCmsAcctM.custno  	);		strcpy ( stPrtdata.acCardNo, 		stCmsAcctM.cardno  	);		strcpy ( stPrtdata.acAcctSeqNo,		stCmsAcctM.acctseqno);		strcpy ( stPrtdata.acCcy, 			acBuffer3  	);		strcpy ( stPrtdata.acPrdCod,  		stCmsAcctM.prdcod  	);		strcpy ( stPrtdata.acAcctNo,  		stCmsAcctM.acctno   );		strcpy ( stPrtdata.acSubAcct,   	stCmsAcctM.subacct  );		strcpy ( stPrtdata.acAccOwner,   	acBuffer  );		strcpy ( stPrtdata.acIssueDate,		stCmsAcctM.issuedate);		strcpy ( stPrtdata.acIssueBrc,		stCmsAcctM.issuebrc );		strcpy ( stPrtdata.acCardBookFlag,	acBuffer1 );		strcpy ( stPrtdata.acStatus,		acBuffer2 );		sprintf(  g_acTrcMsg, "acCardNo[%s],acCcy[%s],acPrdCod[%s],acAcctNo[%s],"								"acSubAcct[%s],acAccOwner[%s],acIssueDate[%s]"								"acIssueBrc[%s],acCardBookFlag[%s],acStatus[%s]",        								stPrtdata.acCardNo, 	stPrtdata.acCcy, 	   								stPrtdata.acPrdCod, 	stPrtdata.acAcctNo,    								stPrtdata.acSubAcct,  	stPrtdata.acAccOwner,								stPrtdata.acIssueDate, 	stPrtdata.acIssueBrc, 								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|%s",		\				stPrtdata.acCardNo,			stPrtdata.acCcy,			\			stPrtdata.acPrdCod,			stPrtdata.acAcctNo,			\			stPrtdata.acSubAcct,		stPrtdata.acAccOwner,		\			stPrtdata.acIssueDate,		stPrtdata.acIssueBrc,		\				stPrtdata.acCardBookFlag,	stPrtdata.acStatus	);			TRCLOG4	}	SQLCLOSECUR(acc_l_cur,"acc_l_cur")		if( iLine < OVERPAGE && iLine != 0 )	{ PRTFOOT }	if( iLineCount == 0 )	{		strcpy( g_acRspCode, "999998" );		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 + -