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

📄 cmslimit.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
📖 第 1 页 / 共 4 页
字号:
							strcpy( g_acRspCode, "CMS115" );							pubCrtRspInfo( dCashLimitAmt, dAmt );							ERRLOG	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")							return FAILED;						}						break;					/* 存款 */					case MODE_DEPOSIT:						/* 存款金额超过存款限额 */		sprintf( g_acTrcMsg, "22dDepoLimitAmt - dAmt[%lf] fabs( dDepoLimitAmt - ZEROS )[%lf]",dDepoLimitAmt - dAmt,fabs( dDepoLimitAmt - ZEROS ) );		TRCLOG4						if ( ( dDepoLimitAmt - dAmt ) < -0.005 							&& ( fabs( dDepoLimitAmt - ZEROS ) > 0.005 ) )						{							strcpy( g_acRspCode, "CMS116" );							pubCrtRspInfo( dDepoLimitAmt, dAmt );							ERRLOG	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")							return FAILED;						}						break;					/* 消费 */					case MODE_CONSUME:						/* 消费金额超过消费限额 */		sprintf( g_acTrcMsg, "33dConLimitAmt - dAmt[%lf] fabs( dConLimitAmt - ZEROS )[%lf]",dConLimitAmt - dAmt,fabs( dConLimitAmt - ZEROS ) );		TRCLOG4						if ( ( dConLimitAmt - dAmt ) < -0.005 							&& ( fabs( dConLimitAmt - ZEROS ) > 0.005 ) )						{							strcpy( g_acRspCode, "CMS117" );							pubCrtRspInfo( dConLimitAmt, dAmt );							ERRLOG	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")							return FAILED;						}						break;					/* 转出 */					case MODE_TRANSFEROUT:						/* 转出金额超过转出限额 */		sprintf( g_acTrcMsg, "33dTranOutLimitAmt - dAmt[%lf] fabs( dTranOutLimitAmt - ZEROS )[%lf]",dTranOutLimitAmt - dAmt,fabs( dTranOutLimitAmt - ZEROS ) );		TRCLOG4						if ( ( dTranOutLimitAmt - dAmt ) < -0.005 							&& ( fabs( dTranOutLimitAmt - ZEROS ) > 0.005 ) )						{							strcpy( g_acRspCode, "CMS118" );							pubCrtRspInfo( dTranOutLimitAmt, dAmt );							ERRLOG	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")							return FAILED;						}						break;				}			}		}		/* 周期长度非0,需要检查合计数目和次数 */		else		{			/* 按每种的卡片种类的键值获取卡交易统计表 */			memset ( &stCmsTTotal,	0x00, sizeof( struct cmsttotal ) );			strcpy ( stCmsTTotal.cardno,		pcCardNo		);			strcpy ( stCmsTTotal.trandevtype,	caSameTranDevType	);			strcpy ( stCmsTTotal.ccy,			pcCCY			);			strcpy ( stCmsTTotal.startdate,		pcTranDate		);			strcpy ( stCmsTTotal.enddate,		pcTranDate		);			stCmsTTotal.period = stCmsKTLimt.period;		sprintf( g_acTrcMsg, "[stCmsTTotal cond] cardno[%s] trandevtype[%s] ccy[%s] startdate[%s] enddate[%s] period[%d]",stCmsTTotal.cardno, stCmsTTotal.trandevtype, stCmsTTotal.ccy, stCmsTTotal.startdate, stCmsTTotal.enddate, stCmsTTotal.period );		TRCLOG4			pubStoVCmsttotal( &stCmsTTotal );			EXEC SQL	DECLARE tot1_l_cur CURSOR FOR						SELECT	*						FROM	cmsttotal						WHERE	cardno = :cmsttotal_cardno						AND		trandevtype = :cmsttotal_trandevtype						AND		ccy = :cmsttotal_ccy						AND		period = :cmsttotal_period						AND		startdate <= :cmsttotal_startdate						AND		enddate >= :cmsttotal_enddate				/*		ORDER BY startdate */						FOR UPDATE;			/* 定义游标错误 			if ( SQLCODE )			{				strcpy ( g_acRspCode, "CMS110" );				pubCrtRspInfo( "cmsttotal", SQLCODE );				ERRLOG	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")				return FAILED;			}			*/		SQLOPENCUR(tot1_l_cur,"tot1_l_cur")			/* 打开游标错误 */			if ( SQLCODE )			{				strcpy( g_acRspCode, "CMS111" );				pubCrtRspInfo( "cmsttotal", SQLCODE );				ERRLOG	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")				return FAILED;			}					/* 循环处理每条起始日期小于且结束日期大于当前业务日期的记录 */			iCurDateNum = 0;			while ( 1 )			{				pubInitCmsttotal();				EXEC SQL	FETCH tot1_l_cur INTO R_CMSTTOTAL;				/* 取游标错误 */				if ( SQLCODE && SQLCODE != SQLNOTFOUND )				{					strcpy( g_acRspCode, "CMS112" );					pubCrtRspInfo( "cmsttotal", SQLCODE );					ERRLOG	SQLCLOSECUR(tot1_l_cur,"tot1_l_cur")	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")					return FAILED;				}				else if ( SQLCODE == SQLNOTFOUND )					break;				pubVtoSCmsttotal( &stCmsTTotal );		sprintf( g_acTrcMsg, "[stCmsTTotal] withdrawamt[%lf] depositamt[%lf] conamt[%lf] tranoutamt[%lf] traninamt[%lf] withdrawtimes[%d] deposittimes[%d] contimes[%d] tranouttimes[%d] tranintimes[%d] startdate[%s] enddate[%s]",stCmsTTotal.withdrawamt, stCmsTTotal.depositamt, stCmsTTotal.conamt, stCmsTTotal.tranoutamt, stCmsTTotal.traninamt, stCmsTTotal.withdrawtimes, stCmsTTotal.deposittimes, stCmsTTotal.contimes, stCmsTTotal.tranouttimes, stCmsTTotal.tranintimes, stCmsTTotal.startdate, stCmsTTotal.enddate );		TRCLOG4				/* 记录以当前业务日期为起始日期的记录数目,以决定是否增加					以当前业务日期为起始日期新的纪录 */				if ( !strcmp( stCmsTTotal.startdate, pcTranDate ) )					iCurDateNum ++;				/* 判断交易类型, 下面ZEROS=0表示对金额不限制 */				switch ( cMode )				{					/* 取款 */					case MODE_WITHDRAW:						/* 正常情况的处理 */						if ( cFlag == FLAG_NORMAL )						{							/* 取款合计金额超过取款限额 */		sprintf( g_acTrcMsg, "44dCashLimitAmt - dAmt - stCmsTTotal.withdrawamt[%lf] fabs( dCashLimitAmt - ZEROS )[%lf]",dCashLimitAmt - dAmt - stCmsTTotal.withdrawamt,fabs( dCashLimitAmt - ZEROS ) );		TRCLOG4							if ( ( dCashLimitAmt - dAmt - \								stCmsTTotal.withdrawamt ) < -0.005 \								&& ( fabs( dCashLimitAmt - ZEROS ) > 0.005 ) )							{								strcpy( g_acRspCode, "CMS115" );								pubCrtRspInfo( dCashLimitAmt, dAmt );								ERRLOG	SQLCLOSECUR(tot1_l_cur,"tot1_l_cur")	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")								return FAILED;							}							stCmsTTotal.withdrawamt += dAmt;							/* 取款次数超过限制 */		sprintf( g_acTrcMsg, "44iCashLimitTime - stCmsTTotal.withdrawtimes - 1[%d] (iCashLimitTime - ZEROS )[%d]",iCashLimitTime - stCmsTTotal.withdrawtimes - 1, iCashLimitTime - ZEROS );		TRCLOG4							if ( iCashLimitTime - stCmsTTotal.withdrawtimes \								-1 < 0 && iCashLimitTime > ZEROS )							{								strcpy( g_acRspCode, "CMS119" );								pubCrtRspInfo( iCashLimitTime, 	\												stCmsTTotal.withdrawtimes +1 );								ERRLOG	SQLCLOSECUR(tot1_l_cur,"tot1_l_cur")	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")								return FAILED;							}							stCmsTTotal.withdrawtimes ++;						}						/* 抹帐情况的处理 */						else						{							stCmsTTotal.withdrawamt -= dAmt;							if (stCmsTTotal.withdrawamt < -0.005)								stCmsTTotal.withdrawamt = 0.00;							stCmsTTotal.withdrawtimes -= 1;							if (stCmsTTotal.withdrawtimes < 0)								stCmsTTotal.withdrawtimes = 0;						}		sprintf( g_acTrcMsg, "[stCmsTTotal] withdrawamt[%lf] depositamt[%lf] conamt[%lf] tranoutamt[%lf] traninamt[%lf] withdrawtimes[%d] deposittimes[%d] contimes[%d] tranouttimes[%d] tranintimes[%d] startdate[%s] enddate[%s]",stCmsTTotal.withdrawamt, stCmsTTotal.depositamt, stCmsTTotal.conamt, stCmsTTotal.tranoutamt, stCmsTTotal.traninamt, stCmsTTotal.withdrawtimes, stCmsTTotal.deposittimes, stCmsTTotal.contimes, stCmsTTotal.tranouttimes, stCmsTTotal.tranintimes, stCmsTTotal.startdate, stCmsTTotal.enddate );		TRCLOG4						break;					/* 存款 */					case MODE_DEPOSIT:						/* 正常情况的处理 */						if ( cFlag == FLAG_NORMAL )						{							/* 存款合计金额超过存款限额 */		sprintf( g_acTrcMsg, "66dDepoLimitAmt - dAmt - stCmsTTotal.depositamt[%lf] fabs( dDepoLimitAmt - ZEROS )[%lf]",dDepoLimitAmt - dAmt - stCmsTTotal.depositamt,fabs( dDepoLimitAmt - ZEROS ) );		TRCLOG4							if ( ( dDepoLimitAmt - dAmt - \								stCmsTTotal.depositamt) < -0.005 								&& ( fabs( dDepoLimitAmt - ZEROS ) > 0.005 ) )							{								strcpy( g_acRspCode, "CMS116" );								pubCrtRspInfo( dDepoLimitAmt, dAmt );								ERRLOG	SQLCLOSECUR(tot1_l_cur,"tot1_l_cur")	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")								return FAILED;							}							stCmsTTotal.depositamt += dAmt;							/* 存款次数超过限制 */		sprintf( g_acTrcMsg, "66iDepoLimitTime - stCmsTTotal.deposittimes - 1[%d] (iDepoLimitTime - ZEROS )[%d]",iDepoLimitTime - stCmsTTotal.deposittimes - 1, iDepoLimitTime - ZEROS );		TRCLOG4							if ( iDepoLimitTime - stCmsTTotal.deposittimes \									-1 < 0 && iDepoLimitTime > ZEROS )							{								strcpy( g_acRspCode, "CMS120" );								pubCrtRspInfo( iDepoLimitTime, 	\											stCmsTTotal.deposittimes +1 );								ERRLOG	SQLCLOSECUR(tot1_l_cur,"tot1_l_cur")	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")								return FAILED;							}							stCmsTTotal.deposittimes ++;						}						/* 抹帐情况的处理 */						else						{							stCmsTTotal.depositamt -= dAmt;							if (stCmsTTotal.depositamt < -0.005)								stCmsTTotal.depositamt = 0.00;							stCmsTTotal.deposittimes -= 1;							if (stCmsTTotal.deposittimes < 0)								stCmsTTotal.deposittimes = 0;						}		sprintf( g_acTrcMsg, "[stCmsTTotal] withdrawamt[%lf] depositamt[%lf] conamt[%lf] tranoutamt[%lf] traninamt[%lf] withdrawtimes[%d] deposittimes[%d] contimes[%d] tranouttimes[%d] tranintimes[%d] startdate[%s] enddate[%s]",stCmsTTotal.withdrawamt, stCmsTTotal.depositamt, stCmsTTotal.conamt, stCmsTTotal.tranoutamt, stCmsTTotal.traninamt, stCmsTTotal.withdrawtimes, stCmsTTotal.deposittimes, stCmsTTotal.contimes, stCmsTTotal.tranouttimes, stCmsTTotal.tranintimes, stCmsTTotal.startdate, stCmsTTotal.enddate );		TRCLOG4						break;					/* 消费 */					case MODE_CONSUME:						/* 正常情况的处理 */						if ( cFlag == FLAG_NORMAL )						{							/* 消费合计金额超过消费限额 */		sprintf( g_acTrcMsg, "77dConLimitAmt - dAmt - stCmsTTotal.conamt [%lf] fabs( dConLimitAmt - ZEROS )[%lf]",dConLimitAmt - dAmt - stCmsTTotal.conamt ,fabs( dConLimitAmt - ZEROS ) );		TRCLOG4							if ( ( dConLimitAmt - dAmt - \								stCmsTTotal.conamt ) < -0.005 								&& ( fabs( dConLimitAmt - ZEROS ) > 0.005 ) )							{								strcpy( g_acRspCode, "CMS117" );								pubCrtRspInfo( dConLimitAmt, dAmt );								ERRLOG	SQLCLOSECUR(tot1_l_cur,"tot1_l_cur")	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")								return FAILED;							}							stCmsTTotal.conamt += dAmt;							/* 消费次数超过限制 */		sprintf( g_acTrcMsg, "77iConLimitTime - stCmsTTotal.contimes -1[%d] (iConLimitTime - ZEROS )[%d]",iConLimitTime - stCmsTTotal.contimes - 1, iConLimitTime - ZEROS );		TRCLOG4							if ( iConLimitTime - stCmsTTotal.contimes -1 \									< 0 && iConLimitTime > ZEROS )							{								strcpy( g_acRspCode, "CMS121" );								pubCrtRspInfo( iConLimitTime, 	\											stCmsTTotal.contimes +1 );								ERRLOG	SQLCLOSECUR(tot1_l_cur,"tot1_l_cur")	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")								return FAILED;							}							stCmsTTotal.contimes ++;						}						/* 抹帐情况的处理 */						else						{							stCmsTTotal.conamt -= dAmt;							if (stCmsTTotal.conamt < -0.005)								stCmsTTotal.conamt = 0.00;							stCmsTTotal.contimes -= 1;							if (stCmsTTotal.contimes < 0)								stCmsTTotal.contimes = 0;						}		sprintf( g_acTrcMsg, "[stCmsTTotal] withdrawamt[%lf] depositamt[%lf] conamt[%lf] tranoutamt[%lf] traninamt[%lf] withdrawtimes[%d] deposittimes[%d] contimes[%d] tranouttimes[%d] tranintimes[%d] startdate[%s] enddate[%s]",stCmsTTotal.withdrawamt, stCmsTTotal.depositamt, stCmsTTotal.conamt, stCmsTTotal.tranoutamt, stCmsTTotal.traninamt, stCmsTTotal.withdrawtimes, stCmsTTotal.deposittimes, stCmsTTotal.contimes, stCmsTTotal.tranouttimes, stCmsTTotal.tranintimes, stCmsTTotal.startdate, stCmsTTotal.enddate );		TRCLOG4						break;					/* 转出 */					case MODE_TRANSFEROUT:						/* 正常情况的处理 */						if ( cFlag == FLAG_NORMAL )						{							/* 转出合计金额超过转出限额 */		sprintf( g_acTrcMsg, "88dTranOutLimitAmt - dAmt - stCmsTTotal.tranoutamt[%lf] fabs( dTranOutLimitAmt - ZEROS )[%lf]",dTranOutLimitAmt - dAmt - stCmsTTotal.tranoutamt,fabs( dTranOutLimitAmt - ZEROS ) );		TRCLOG4							if (( dTranOutLimitAmt - dAmt - \								stCmsTTotal.tranoutamt ) < -0.005 								&& ( fabs( dTranOutLimitAmt - ZEROS ) > 0.005 ))							{								strcpy( g_acRspCode, "CMS118" );								pubCrtRspInfo( dTranOutLimitAmt, dAmt );								ERRLOG	SQLCLOSECUR(tot1_l_cur,"tot1_l_cur")	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")								return FAILED;							}							stCmsTTotal.tranoutamt += dAmt;							/* 转出次数超过限制 */		sprintf( g_acTrcMsg, "88iTranOutLimitTime - stCmsTTotal.tranouttimes -1[%d] (iTranOutLimitTime - ZEROS )[%d]",iTranOutLimitTime - stCmsTTotal.tranouttimes - 1, iTranOutLimitTime - ZEROS );		TRCLOG4							if ( iTranOutLimitTime - \								stCmsTTotal.tranouttimes -1 < 0 \								&& iTranOutLimitTime > ZEROS )							{								strcpy( g_acRspCode, "CMS122" );								pubCrtRspInfo( iTranOutLimitTime, 	\											stCmsTTotal.tranouttimes +1 );								ERRLOG	SQLCLOSECUR(tot1_l_cur,"tot1_l_cur")	SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur")								return FAILED;							}							stCmsTTotal.tranouttimes ++;						}						/* 抹帐情况的处理 */						else						{							stCmsTTotal.tranoutamt -= dAmt;							if (stCmsTTotal.tranoutamt < -0.005)								stCmsTTotal.tranoutamt = 0.00;							stCmsTTotal.tranouttimes -= 1;							if (stCmsTTotal.tranouttimes < 0)								stCmsTTotal.tranouttimes = 0;						}		sprintf( g_acTrcMsg, "[stCmsTTotal] withdrawamt[%lf] depositamt[%lf] conamt[%lf] tranoutamt[%lf] traninamt[%lf] withdrawtimes[%d] deposittimes[%d] contimes[%d] tranouttimes[%d] tranintimes[%d] startdate[%s] enddate[%s]",stCmsTTotal.withdrawamt, stCmsTTotal.depositamt, stCmsTTotal.conamt, stCmsTTotal.tranoutamt, stCmsTTotal.traninamt, stCmsTTotal.withdrawtimes, stCmsTTotal.deposittimes, stCmsTTotal.contimes, stCmsTTotal.tranouttimes, stCmsTTotal.tranintimes, stCmsTTotal.startdate, stCmsTTotal.enddate );		TRCLOG4						break;					/* 转入 */					case MODE_TRANSFERIN:						/* 正常情况的处理 */

⌨️ 快捷键说明

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