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

📄 cms503.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
📖 第 1 页 / 共 3 页
字号:
								&lConMinNum, &lConMaxNum		);						/* 获取卡凭证号顺序号出错 */						if ( iRtn )						{							ERRLOG							goto Exit;						}						/* 计算卡凭证号 */						lCardVouNo = lConMinNum ;						sprintf( stCmsMkFile.vouno,	"%.*ld",MAX_VOUSEQNOLEN,lCardVouNo);						/* 检查卡顺序号是否已经被使用 */						iRtn = cmsApiCheckVouNo( stCmsCardKind.voukind,								stCmsCardKind.cardbin ,  stCmsMkFile.vouno );						if ( !iRtn )							break;						else if ( iRtn != TRUE )						{							ERRLOG							goto Exit;						}						strcpy( g_acRspCode, RSP_OK );						memset( g_acRspMsg, 0x00, sizeof( g_acRspMsg ) );					}				}				else				{					/* 计算卡凭证号 */					lCardVouNo = lMinVouNum + lNum ;					sprintf( stCmsMkFile.vouno,	"%.*ld",MAX_VOUSEQNOLEN,lCardVouNo);				}				strcpy( stCmsMkFile.voukind,		stCmsCardKind.voukind );				strcpy( stCmsCardInfo.precharcode,	stCmsCardKind.cardbin );				/* 起始卡号 */				if ( lNum == 0 )					strcpy( stCmsPcdReg.scardno, stCmsCardInfo.cardno );				/* 起始凭证号 */				if ( lNum == 0 )					strcpy( stCmsPcdReg.svouno, stCmsMkFile.vouno );				/* 为卡片信息表结构赋值 */				strcpy( stCmsCardInfo.cardseqno,	DEFAULTCARDSEQ );				strcpy( stCmsCardInfo.cardkind,		stCmsCardKind.cardkind );				strcpy( stCmsCardInfo.cardidkind, stCmsCardKind.cardidkind);				strcpy( stCmsCardInfo.cardobject, stCmsCardKind.cardobject);				strcpy( stCmsCardInfo.cardidkindcomm, stCmsCardKind.cardidkindcomm);				stCmsCardInfo.crdsts[BIT1_LEN] = CARDNGSTS;				memset( stCmsCardInfo.cardstat, CZEROS, sizeof( stCmsCardInfo.cardstat ) - 1 );				strcpy( stCmsCardInfo.voukind,	stCmsMkFile.voukind );				strcpy( stCmsCardInfo.vouno,	stCmsMkFile.vouno );				strcpy( stCmsCardInfo.custno,	stCmsPcdReg.custno );				strcpy( stCmsCardInfo.areacode,	stBrcInfo.areacode );				strcpy( stCmsCardInfo.yearfeerank,	stCmsCardKind.yearfeerank );				stCmsCardInfo.yfeeflag[ BIT1_LEN ] = TAKEFEEBYCARDKIND;				stCmsCardInfo.billway[ BIT1_LEN ] = NOPRINTBILL;				stCmsCardInfo.billaddtype[ BIT1_LEN ] = NO_ADDRESS;				if ( stCmsPcdReg.aplyflg[ BIT1_LEN ] == PREAPLY )					stCmsCardInfo.markflg[0] = UNREGNAMECARD;				else					stCmsCardInfo.markflg[0] = REGNAMECARD;				/* 偏移量 buxuyao */				/* 登记卡片信息表 */				iRtn = pubInstCmscardinfo( &stCmsCardInfo );				if ( iRtn )				{					ERRLOG					goto Exit;				}			}			else if ( stCmsPcdReg.aplyflg[ BIT1_LEN ] == SINCHOOSEPLY )			{				strcpy( stCmsMkFile.voukind,		stCmsCardKind.voukind );				strcpy( stCmsMkFile.vouno,		stCmsPcdReg.svouno );				strcpy( stCmsMkFile.voukind,	stCmsPcdReg.voukind );				strcpy( stCmsCardInfo.precharcode,	stCmsCardKind.cardbin );				strcpy( stCmsCardInfo.cardno,	stCmsPcdReg.scardno );				strcpy( stCmsCardInfo.voukind,	stCmsMkFile.voukind );				strcpy( stCmsCardInfo.vouno,	stCmsMkFile.vouno );				/* 为卡片信息表结构赋值 */				strcpy( stCmsCardInfo.cardseqno,	DEFAULTCARDSEQ );				strcpy( stCmsCardInfo.cardkind,		stCmsCardKind.cardkind );				strcpy( stCmsCardInfo.cardidkind, stCmsCardKind.cardidkind);				strcpy( stCmsCardInfo.cardobject, stCmsCardKind.cardobject);				strcpy( stCmsCardInfo.cardidkindcomm, stCmsCardKind.cardidkindcomm);				stCmsCardInfo.crdsts[BIT1_LEN] = CARDNGSTS;				memset( stCmsCardInfo.cardstat, CZEROS, sizeof( stCmsCardInfo.cardstat ) - 1 );				stCmsCardInfo.cardstat[ BIT16_LEN ] = BIT16_CHOOSE;				strcpy( stCmsCardInfo.custno,	stCmsPcdReg.custno );				pubInitCiscustomerinfo();				strcpy( ciscustomerinfo_customid, stCmsPcdReg.custno );				strcpy( stCmsCardInfo.areacode,	stBrcInfo.areacode );				strcpy( stCmsCardInfo.yearfeerank,	stCmsCardKind.yearfeerank );				stCmsCardInfo.yfeeflag[ BIT1_LEN ] = TAKEFEEBYCARDKIND;				stCmsCardInfo.billway[ BIT1_LEN ] = NOPRINTBILL;				stCmsCardInfo.billaddtype[ BIT1_LEN ] = NO_ADDRESS;				stCmsCardInfo.markflg[0] = UNREGNAMECARD;				/* 登记卡片信息表 */				iRtn = pubInstCmscardinfo( &stCmsCardInfo );				if ( iRtn )				{					ERRLOG					goto Exit;				}			}			else			{				strcpy( stCmsCardInfo.cardno,	stCmsPcdReg.scardno );				strcpy( stCmsCardInfo.vouno,	stCmsPcdReg.evouno );				strcpy( stCmsMkFile.vouno,		stCmsPcdReg.svouno );				strcpy( stCmsMkFile.voukind,	stCmsPcdReg.voukind );				if ( strlen(stCmsPcdReg.custname) 					&& stCmsPcdReg.aplyflg[ BIT1_LEN ] == NAMEHOLDCARDAPLY)				{					stCmsCardInfo.markflg[0] = REGNAMECARD;				}				else				{					stCmsCardInfo.markflg[0] = UNREGNAMECARD;				}				/* 为卡片信息表结构赋值 */				stCmsCardInfo.crdsts[BIT1_LEN] = CARDNGSTS;				pubStoVCmscardinfo( &stCmsCardInfo );				EXEC SQL	UPDATE CMSCARDINFO 							SET 	crdsts = :cmscardinfo_crdsts,									markflg = :cmscardinfo_markflg,									vouno = :cmscardinfo_vouno							WHERE	cardno = :cmscardinfo_cardno;				if ( SQLCODE )				{					strcpy( g_acRspCode, "CMS114" );					pubCrtRspInfo( "cmscardinfo", SQLCODE );					ERRLOG					goto Exit;				}			}			memset( acFaceTranDate, 0, sizeof(acFaceTranDate));			memcpy( acFaceTranDate, pstPubcom->acTranDate8, 8 );			/*			memcpy( acFaceTranDate, pstPubcom->acTranDate+5, 2);			memcpy( acFaceTranDate+2, "/", 1);			memcpy( acFaceTranDate+3, pstPubcom->acTranDate, 4);			*/			/* 按格式生成卡的制卡信息 */			memset( acTrack2, 0x00, sizeof( acTrack2 ) );			memset( acTrack3, 0x00, sizeof( acTrack3 ) );			if ( strlen(stCmsPcdReg.custname ) 				/* && ( stCmsPcdReg.aplyflg[ BIT1_LEN ] != SINCHOOSEPLY ) */)			{				memset( caSexName, 0x00, sizeof( caSexName ) );				memset( caCustomInfo, 0x00, sizeof( caCustomInfo ) );				pubInitCispersoninfo();				EXEC SQL SELECT sex						 INTO   :cispersoninfo_sex						 FROM   cispersoninfo						 WHERE  customid = :cmspcdreg_custno;				if (SQLCODE)				{					strcpy( caSexName, "    ");					/*					strcpy( g_acRspCode, "CMS112" );					pubCrtRspInfo( "cispersoninfo", SQLCODE );					ERRLOG					goto Exit;					*/				}				if (cispersoninfo_sex[ 0 ] == '0')				{					strcpy( caSexName, "MR. ");				}				else if (cispersoninfo_sex[ 0 ] == '1')				{					strcpy( caSexName, "MS. ");				}				else				{					strcpy( caSexName, "    ");				}				strcat(caCustomInfo, caSexName);				strcat(caCustomInfo, stCmsPcdReg.custname);				memset(stCmsPcdReg.custname, 0, sizeof(stCmsPcdReg.custname));				strcpy(stCmsPcdReg.custname, caCustomInfo);			}						iRtn = cmsApiGenMakeCardInfo( stCmsCardInfo.cardno, acBankTitle,							stCmsPcdReg.custname, acFaceTranDate,							stCmsCardInfo.vouno,							&stCmsCardInitParam,stCmsMkFile.track1msg,							acTrack2, acTrack3, stCmsMkFile.cardappr );			/* 生成制卡信息错 */			if ( iRtn )			{				ERRLOG				goto Exit;			}			/* 为制卡文件结构赋值 */			strpack( stCmsCardInitParam.track2premsg );			strpack( stCmsCardInitParam.track3premsg );			strpack( stCmsCardInitParam.track2aftmsg );			strpack( stCmsCardInitParam.track3aftmsg );			strpack( acTrack2 );			strpack( acTrack3 );			sprintf( stCmsMkFile.track2msg, "%s%s%s",						stCmsCardInitParam.track2premsg, acTrack2, 						stCmsCardInitParam.track2aftmsg );			sprintf( stCmsMkFile.track3msg, "%s%s%s",						stCmsCardInitParam.track3premsg, acTrack3, 						stCmsCardInitParam.track3aftmsg );			strcpy( stCmsMkFile.aplybrc,		stCmsPcdReg.aplybrc );			strcpy( stCmsMkFile.aplydate,		stCmsPcdReg.aplydate );			strcpy( stCmsMkFile.makedate,		pstPubcom->acTranDate );			stCmsMkFile.serseqno = pstPubcom->lSerSeqNo;			stCmsMkFile.cardphysort[ BIT1_LEN ] = stCmsCardKind.cardphysort[ BIT1_LEN ];			strcpy( stCmsMkFile.cardno,			stCmsCardInfo.cardno );			strcpy( stCmsMkFile.cardkind,		stCmsCardKind.cardkind );			stCmsMkFile.aplyflg[ BIT1_LEN ] = stCmsPcdReg.aplyflg[ BIT1_LEN ];			stCmsMkFile.makediskflg[ BIT1_LEN ] = NOMAKEFILE;			strcpy( stCmsMkFile.cardcenterbrc,   CARDBRNO );			/* 卡密码、查询密码、ic卡数据 */			/* 登记卡片制卡文件 */			iRtn = pubInstCmsmkfile( &stCmsMkFile );			if ( iRtn )			{				ERRLOG				goto Exit;			}			lNum ++;			/*把实际生成卡的数量置 +1*/		}		lFactCardNum += stCmsPcdReg.aplynum;			if ( stCmsPcdReg.aplyflg[ BIT1_LEN ] == HOLDCARDAPLY 	\				|| stCmsPcdReg.aplyflg[ BIT1_LEN ]== NAMEHOLDCARDAPLY )			lKeepCardNum += stCmsPcdReg.aplynum;			if ( stCmsPcdReg.aplyflg[ BIT1_LEN ] == SINCHOOSEPLY  )			lChosCardNum += stCmsPcdReg.aplynum;			/* 修改预制卡登记簿 */		strcpy( stCmsPcdReg.ecardno,	stCmsCardInfo.cardno );		strcpy( stCmsPcdReg.evouno,		stCmsCardInfo.vouno );		stCmsPcdReg.processflg[ BIT1_LEN ] = MKFILE_DONE;		stCmsPcdReg.dealseqno = pstPubcom->lSerSeqNo;		strcpy( stCmsPcdReg.dealdate,	pstPubcom->acTranDate );		pubStoVCmspcdreg( &stCmsPcdReg );		EXEC SQL	UPDATE	CMSPCDREG 					SET		dealdate = :cmspcdreg_dealdate,							dealseqno = :cmspcdreg_dealseqno,							scardno = :cmspcdreg_scardno,							ecardno = :cmspcdreg_ecardno,							svouno = :cmspcdreg_svouno,							evouno = :cmspcdreg_evouno,							processflg = :cmspcdreg_processflg					WHERE	CURRENT of Reg_l_cur;		/* 按游标修改错误 */		if ( SQLCODE && SQLCODE != SQLNOTFOUND )		{			strcpy( g_acRspCode, "CMS114" );			pubCrtRspInfo( "cmspcdreg", SQLCODE );			ERRLOG			goto Exit;		}	}	/*判断实际生成卡的数量*/	if ( lFactCardNum == 0 )	{		strcpy( g_acRspCode, "CMS216" );		pubCrtRspInfo( stCmsCardKind.cardkind );		ERRLOG		goto Exit;		}	/* 子交易出口 */ 	setlong	 ( "Num"		, &lFactCardNum		);	setlong	 ( "Num1"		, &lKeepCardNum		);	setlong	 ( "Num2"		, &lChosCardNum		);Exit:	SQLCLOSECUR(Reg_l_cur,"Reg_l_cur")	strcpy( g_acTrcMsg, "子交易: 制卡处理结束.." );	TRCLOG4	if( !strcmp( g_acRspCode, RSP_OK ) )		return SUCCESS;	else		return FAILED ;}/******************************************************* **	  函数名称:nGetMkCardParam **   功能描述:为生成卡号准备数据 **   输入参数: **   			pstPubcom    	----	公共结构       **   			pstCmsRuleDef	----	卡号规则定义表 **   			pstCmsCardKind	----	卡片种类表 **   输出参数: **   			pcField1		----	域1数值 **   			pcField2		----	域2数值 **   			pcField3		----	域3数值 **   			pcField4		----	域4数值 **   			pcField5		----	域5数值 **   			pcField6		----	域6数值 **   			pcField7		----	域7数值 **   			pcField8		----	域8数值 **   返回结果:int **   			0				----	成功 **   			-1				----	失败*******************************************************/int	nGetMkCardParam( pstPubcom, pstCmsRuleDef, pstCmsCardKind, pcField1, \		pcField2, pcField3, pcField4, pcField5, pcField6, pcField7, pcField8 )PUBCOM	*pstPubcom;struct	cmsruledef		*	pstCmsRuleDef;		/* 卡号规则定义表		*/struct	cmscardkind		*	pstCmsCardKind;		/* 卡片种类表			*/char                    *   pcField1;           /* 域1数值				*/char                    *   pcField2;           /* 域2数值				*/char                    *   pcField3;           /* 域3数值				*/char                    *   pcField4;           /* 域4数值				*/char                    *   pcField5;           /* 域5数值				*/char                    *   pcField6;           /* 域6数值				*/char                    *   pcField7;           /* 域7数值				*/char                    *   pcField8;           /* 域8数值				*/{	int			iNum;							/* 计数器				*/	char		acTblName[ BIT31_LEN + 1 ];		/* 库表名称				*/	char		acWhrName[ BIT31_LEN + 1 ];		/* 条件名称				*/	EXEC SQL BEGIN	DECLARE SECTION;		char	acField[ BIT31_LEN + 1 ];		/* 对应pcFieldn			*/		char	acStatment[ PACKBUF_LEN + 1 ];	/* sql语句				*/	EXEC SQL END	DECLARE SECTION;	/* 初始化变量 */	iNum = 0;	if ( iNum < pstCmsRuleDef->fldnum1 )	{		memset( acTblName,	0x00, sizeof( acTblName ) );		memset( acStatment, 0x00, sizeof( acStatment ) );		memset( acField,	0x00, sizeof( acField ) );		memset( acWhrName,	0x00, sizeof( acWhrName ) );		if ( !strlen( pstCmsRuleDef->fldsrcfld1 ) )		{			/* 卡号规则表数据错误 */			strcpy( g_acRspCode, "CMS105" );			pubCrtRspInfo( );			ERRLOG			return FAILED;		}		if ( !strlen( pstCmsRuleDef->fldsrctbl1 ) )			strcpy( acTblName,	"cmscardkind" );		else			strcpy( acTblName,	pstCmsRuleDef->fldsrctbl1 );		if ( !strlen( pstCmsRuleDef->fldwhr1 ) )			strcpy( acWhrName,	"cardkind" );		else			strcpy( acWhrName,	pstCmsRuleDef->fldwhr1 );		if ( !strlen( pstCmsRuleDef->fldsign1 ) )			pstCmsRuleDef->fldsign1[ BIT1_LEN ] = SIGN_CARDKIND;		if ( pstCmsRuleDef->fldsign1[ BIT1_LEN ] == SIGN_CARDKIND )			sprintf( acStatment, "select %s from %s where %s ='%s'", \						pstCmsRuleDef->fldsrcfld1,acTblName,acWhrName,						pstCmsCardKind->cardkind );		else			sprintf( acStatment, "select %s from %s where %s ='%s'", \						pstCmsRuleDef->fldsrcfld1,acTblName,acWhrName,						pstPubcom->acBrc );		strcpy( g_acTrcMsg, acStatment );		TRCLOG2		EXEC SQL	PREPARE pre_1 FROM :acStatment;		/* 数据库操作错 */		sprintf( g_acTrcMsg, "SQLCODE=[%d]", SQLCODE );		TRCLOG2		if ( SQLCODE )		{			strcpy( g_acRspCode, "CMS1A7" );			pubCrtRspInfo( SQLCODE );			ERRLOG			return FAILED;		}		EXEC SQL	DECLARE cur_1 CURSOR FOR pre_1;		SQLOPENCUR(cur_1,"cur_1")		/* 数据库操作错 */		if ( SQLCODE )		{			strcpy( g_acRspCode, "CMS1A7" );			pubCrtRspInfo( SQLCODE );			ERRLOG			return FAILED;		}		EXEC SQL	FETCH cur_1 INTO :acField ;		/* 数据库操作错 */		if ( SQLCODE )		{			strcpy( g_acRspCode, "CMS1A7" );			pubCrtRspInfo( SQLCODE );			SQLCLOSECUR(cur_1,"cur_1")			ERRLOG			return FAILED;		}		SQLCLOSECUR(cur_1,"cur_1")		strpack( acField );		strcpy( pcField1, acField );		iNum ++;	}	if ( iNum < pstCmsRuleDef->fldnum1 )	{		memset( acTblName,	0x00, sizeof( acTblName ) );		memset( acStatment, 0x00, sizeof( acStatment ) );		memset( acField,	0x00, sizeof( acField ) );		memset( acWhrName,	0x00, sizeof( acWhrName ) );		if ( !strlen( pstCmsRuleDef->fldsrcfld2 ) )		{			/* 卡号规则表数据错误 */			strcpy( g_acRspCode, "CMS105" );			pubCrtRspInfo( );			ERRLOG			return FAILED;		}		if ( !strlen( pstCmsRuleDef->fldsrctbl2 ) )			strcpy( acTblName,	"cmscardkind" );		else			strcpy( acTblName,	pstCmsRuleDef->fldsrctbl2 );		if ( !strlen( pstCmsRuleDef->fldwhr2 ) )			strcpy( acWhrName,	"cardkind" );		else			strcpy( acWhrName,	pstCmsRuleDef->fldwhr2 );		if ( !strlen( pstCmsRuleDef->fldsign2 ) )			pstCmsRuleDef->fldsign2[ BIT1_LEN ] = SIGN_CARDKIND;		if ( pstCmsRuleDef->fldsign2[ BIT1_LEN ] == SIGN_CARDKIND )			sprintf( acStatment, "select %s from %s where %s ='%s'", \						pstCmsRuleDef->fldsrcfld2,acTblName,acWhrName,						pstCmsCardKind->cardkind );		else			sprintf( acStatment, "select %s from %s where %s ='%s'", \						pstCmsRuleDef->fldsrcfld2,acTblName,acWhrName,						pstPubcom->acBrc );		strcpy( g_acTrcMsg, acStatment );		TRCLOG2		EXEC SQL	PREPARE pre_2 FROM :acStatment;		/* 数据库操作错 */		if ( SQLCODE )		{			strcpy( g_acRspCode, "CMS1A7" );			pubCrtRspInfo( SQLCODE );			ERRLOG			return FAILED;		}		EXEC SQL	DECLARE cur_2 CURSOR FOR pre_2;		SQLOPENCUR(cur_2,"cur_2")

⌨️ 快捷键说明

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