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

📄 cms605.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
字号:
/**********************************************************************   源码文件名称 : cms605.SQC**   所属子系统   : CMS**   当前文件版本 : 4.0.0.0**   作者         : ZhouR**   版本创建日期 : 2004/10/15**   功能描述     : 帐户移入/移出登记簿查询 **   修改记录     :**   修改人       修改日期     修改日期*********************************************************************/#include "code.h"#include "attrdef.h"#include "sysdef.h"#include "pubcom.h"#include "cmscode.h"#include <stdio.h>#include <fcntl.h>#include "ciscustomerinfo.h"#include "cmscardinfo.h"#include "cmsbussprd.h"#include "cmsactiom.h"#include "cmsacctm.h"#include "pubinq.h"EXEC SQL INCLUDE SQLCA;int cms216005( PUBCOM *pstPubcom ){	EXEC SQL BEGIN DECLARE SECTION;		char    acWhrStr[ 512 ];        char    acPrdName[BIT41_LEN + 1];        char    acChName[BIT17_LEN + 1];	EXEC SQL END   DECLARE SECTION;	/*定义局部变量*/	struct  ciscustomerinfo	stCisCustomerInfo; /* 客户公用基本信息文件 */	struct  cmscardinfo		stCmsCardInfo;    /* 卡片信息表   */ 	struct  cmsbussprd		stCmsBussPrd;       /* 业务品种与产品代码对照表*/ 	struct cmsactiom		stCmsActiom;       /* 帐户移入移出登记簿 */ 	struct cmsacctm			stCmsAcctM;       /* 卡账户对照表 */ 	BASESUBACCTINFO   		stDpsAccInfo; 		/* 静态表       */	char    acFileName[FILENAME_LEN + 1];       /* 文件名称     */	char    acTableName[PRDCODE_LEN + 1];       /* 表名称       */	char    acBuffer[512]; 	char    acBuffer1[512];	char    acBussKind[BUSSKIND_LEN + 1];       /* 业务种类         */	char    acOpflg[BIT2_LEN + 1];              /* 操作方式         */	char    acSelStr[ 301 ];	char    acCardNo[ CARDNO_LEN + 1 ];               /* 卡号   */  	char    acAcctNo[ ACCT_LEN + 1 ];                 /* 帐号   */  	char    acBeginDate[ DATE_LEN + 1 ];              /* 起始日期 */	char    acEndDate[ DATE_LEN + 1 ];                /* 终止日期 */	char    pcPasswd[BIT17_LEN + 1];         /* 卡密码   */	int	iRtn;	double  dBal=0.00;                          /* 余额         */	int     iCount=0;                           /* 计数器       */	FILE    *fp;								/* 文件指针     */	strcpy( g_acRspMsg, "子交易: 帐户移入/移出登记簿查询打印子交易开始..." );	TRCLOG4	/* 初始化 */	memset( &stCisCustomerInfo, 0x00,   sizeof( struct ciscustomerinfo ) );	memset( &stDpsAccInfo,      0x00,   sizeof( BASESUBACCTINFO ) );	memset( &stCmsActiom, 		0x00,   sizeof( struct cmsactiom ) );	memset( &stCmsCardInfo, 	0x00,   sizeof( struct cmscardinfo ) );	memset( &stCmsBussPrd,      0x00,   sizeof( struct cmsbussprd ) );	memset( acCardNo,      0x00, sizeof( acCardNo ) );   	memset( acAcctNo,      0x00, sizeof( acAcctNo ) );   	memset( acSelStr,      0x00, sizeof( acSelStr )   );	memset( acWhrStr,      0x00, sizeof( acWhrStr )   );	memset( acBussKind,      0x00, sizeof( acBussKind )   );	memset( acOpflg,      0x00, sizeof( acOpflg )   );	memset( acBeginDate,   0x00, sizeof( acBeginDate ) );	memset( acEndDate,     0x00, sizeof( acEndDate ) );  	memset( pcPasswd,      0x00, sizeof( pcPasswd ) );	memset( acFileName,        	0x00,   sizeof( acFileName ) );	memset( acTableName,       	0x00,   sizeof( acTableName ) );	memset( acChName,       	0x00,   sizeof( acChName ) );	memset( acPrdName,       	0x00,   sizeof( acPrdName ) );    /* 取数据字典值 */	getstring( "CardNo", acCardNo );       	getstring( "AcctNo", acAcctNo );       	getstring( "BeginDate1", acBeginDate );	getstring( "EndDate1", acEndDate);     	getstring( "Passwd1",   pcPasswd );	sprintf( g_acTrcMsg,"[%s],[%s],[%s],[%s],[%s]",	acCardNo,acAcctNo,	\						acBeginDate,acEndDate,pcPasswd );	TRCLOG3	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	strcpy( acTableName, "cms605" );	sprintf(acFileName, "%s%s%s", acTableName, pstPubcom->acBrc,								  pstPubcom->acTeller);	fp = (FILE *)BeginFile( pstPubcom, acFileName );	if ( fp == NULL )	{		ERRLOG	    goto Exit;	}	/*组织查询字典*/	if (GetInqDict( fp , "216005" ))	{		ERRLOG		goto Exit ;	}	sprintf( acWhrStr, " select * from cmsactiom where 1=1");	if ( strlen ( acCardNo ) > 0 )	{		sprintf( acWhrStr+strlen(acWhrStr), " and cardno = '%s'", acCardNo );	}	if ( strlen ( acAcctNo ) > 0 )	{		sprintf( acWhrStr+strlen(acWhrStr), " and acctno = '%s'", acAcctNo );	}    if ( strcmp ( acBeginDate, INITDATE ) )	{		sprintf( acWhrStr+strlen(acWhrStr), " and trandate >= '%s'", acBeginDate );	}    if ( strcmp ( acEndDate, INITDATE ) )	{		sprintf( acWhrStr+strlen(acWhrStr), " and trandate <= '%s'", acEndDate );	}	sprintf( acWhrStr+strlen(acWhrStr), " ORDER BY trandate, cardno, serseqno DESC" );	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 actiom_cur CURSOR FOR pre_1;	if(SQLCODE)	{		sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);  		TRCLOG4		strcpy( g_acRspCode, "CMS110" );		pubCrtRspInfo("cmsactiom",SQLCODE );		ERRLOG		goto Exit ;	}	SQLOPENCUR(actiom_cur,"actiom_cur")	if(SQLCODE)	{		sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);  		TRCLOG4		strcpy( g_acRspCode, "CMS111" );		pubCrtRspInfo("cmsactiom",SQLCODE );		ERRLOG		goto Exit ;	}	for( ; ; )	{        memset( acBuffer,      0x00, sizeof( acBuffer )   );	    memset( acBuffer1,     0x00, sizeof( acBuffer1 )  );		memset( &stDpsAccInfo, 0x00,   sizeof( BASESUBACCTINFO ) );		EXEC SQL FETCH actiom_cur into R_CMSACTIOM;		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( "cmsactiom",SQLCODE );	SQLCLOSECUR(actiom_cur,"actiom_cur")			ERRLOG			goto Exit ;		}		sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);  		TRCLOG4		/* 翻译业务种类 */		strcpy ( acBussKind, cmsactiom_busskind );		TransMemo( "0027" , acBussKind , acBuffer);		/* 翻译操作方式 */		strcpy ( acOpflg, cmsactiom_opflg );		TransMemo( "0028" , acOpflg , acBuffer1);		sprintf( g_acTrcMsg,"SQLCODE[%s][%s]", acBuffer, acBuffer1 );  		TRCLOG4		pubVtoSCmsactiom(&stCmsActiom);		pubInitCmsbussprd();		EXEC SQL select description into :cmsbussprd_description 				from cmsbussprd 				where busskind=:cmsactiom_busskind;		if( SQLCODE && SQLCODE != SQLNOTFOUND )		{			strcpy(g_acRspCode,"CMS112");			pubCrtRspInfo("cmsactiom",SQLCODE);			ERRLOG	SQLCLOSECUR(actiom_cur,"actiom_cur")			goto Exit;		}		pubVtoSCmsbussprd(&stCmsBussPrd);		/*根据币种代码取币种信息*/		pubInitPubcurrencyinfo();		EXEC SQL SELECT chname INTO :acChName				 FROM	pubcurrencyinfo				 WHERE	ccy = :cmsactiom_ccy;		if( SQLCODE && SQLCODE != SQLNOTFOUND )		{     		strcpy(g_acRspCode,"CMS112");     		pubCrtRspInfo("pubcurrencyinfo",SQLCODE);     		ERRLOG	SQLCLOSECUR(actiom_cur,"actiom_cur")     		goto Exit;		}		/* 根据产品代码取产品名称 */		pubInitDpssaveprdinfo();		pubInitDpstermprdinfo();		EXEC SQL SELECT prdname INTO :acPrdName                 FROM   dpssaveprdinfo                 WHERE  prdcode = :cmsactiom_prdcod;        if( SQLCODE && SQLCODE != SQLNOTFOUND )        {            strcpy(g_acRspCode,"CMS112");            pubCrtRspInfo("dpssaveprdinfo",SQLCODE);            ERRLOG	SQLCLOSECUR(actiom_cur,"actiom_cur")            goto Exit;        }        if ( SQLCODE == SQLNOTFOUND )        {            EXEC SQL SELECT prdname INTO :acPrdName                     FROM   dpstermprdinfo                     WHERE  prdcode = :cmsactiom_prdcod;            if( SQLCODE && SQLCODE != SQLNOTFOUND )            {                strcpy(g_acRspCode,"CMS112");                pubCrtRspInfo("dpstermprdinfo",SQLCODE);                ERRLOG	SQLCLOSECUR(actiom_cur,"actiom_cur")                goto Exit;            }        }		strcpy( g_acTrcMsg, acChName );		TRCLOG2		if ( strlen (pcPasswd) )		{			sprintf( g_acTrcMsg,"SQLCODE[%s][%s][%s]", stCmsActiom.cardno, stCmsActiom.subacct, stCmsActiom.ccy );  			TRCLOG4			memset( &stCmsAcctM, 0x00, sizeof( struct cmsacctm ) );			strcpy( stCmsAcctM.cardno, stCmsActiom.cardno );			strcpy( stCmsAcctM.acctseqno, stCmsActiom.acctseqno );			iRtn = cmsApiGetCmsAcctM( &stCmsAcctM );			if ( iRtn )			{				strcpy( g_acRspCode, RSP_OK );			}			else			{				if ( stCmsAcctM.status[ BIT1_LEN ] == NORMAL_STS )				{					/* 按客户账号和款项代码获取账户信息 DPS API */					memset( &stDpsAccInfo,      0x00,   sizeof( BASESUBACCTINFO ) );					iRtn = InqBaseSubAcct(  pstPubcom,								stCmsAcctM.acctno,								stCmsActiom.subacct,								stCmsActiom.ccy,								"1100000000000000", "0","0",								&stDpsAccInfo);					if (iRtn)					{						strcpy( g_acRspCode, RSP_OK );					}				}			}		}		/* 拼写文件 */		fprintf( fp, "\"%s\"~\"%s\"~%d~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~"		     		 "\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~"					 "\"%s\"~\"%s\"~\"%s\"~\"%s\"~%.2lf\n",								stCmsActiom.cardno, 		/* 卡号 		*/								stCmsActiom.trandate, 		/* 交易日期     */								stCmsActiom.serseqno, 		/* 主机流水号 	*/								stCmsActiom.vouchno,   		/* 登记簿编号 	*/								stCmsActiom.acctseqno,   	/* 卡内帐户序号 */								stCmsActiom.busskind,  		/* 业务种类     */								stCmsBussPrd.description,	/* 业务种类说明 */								stCmsActiom.opflg,     		/* 操作方式 	*/								stCmsActiom.ccy,         	/* 币种         */								acChName,					/* 币种名称		*/								stCmsActiom.prdcod,      	/* 产品代码     */								acPrdName,					/* 产品名称		*/								stCmsActiom.acctno,      	/* 帐号         */								stCmsActiom.subacct,     	/* 款项代码     */								stCmsActiom.idtype,     	/* 证件类型 	*/								stCmsActiom.idcode,    		/* 证件号码 	*/								stCmsActiom.custname,      	/* 姓名/单位名称*/								stCmsActiom.issuebrc,   	/* 发卡机构码 	*/								stCmsActiom.brc,    		/* 交易机构码 	*/								stCmsActiom.teller, 		/* 交易柜员 	*/								stDpsAccInfo.dBal);			/* 余额         */			iCount ++;	}	SQLCLOSECUR(actiom_cur,"actiom_cur")	EndFile( fp );	if (iCount == 0)	{		strcpy( g_acRspCode, "CMS1B7" );		pubCrtRspInfo( "帐户移入/移出");		ERRLOG		return FAILED;	}	/* 出口赋值 */Exit:	EndFile( fp );	if( !strcmp( g_acRspCode, RSP_OK ) )	{		SetInqFormid(pstPubcom, "216005") ;		sprintf( g_acTrcMsg,"帐户移入/移出登记簿查询打印正常结束");		TRCLOG4		return SUCCESS;	}	else	{		sprintf( g_acTrcMsg,"帐户移入/移出登记簿查询打印失败");		TRCLOG4		return FAILED ;	}}

⌨️ 快捷键说明

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