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

📄 cmsb24.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
📖 第 1 页 / 共 2 页
字号:
	sprintf( g_acTrcMsg,"跨行未入帐明细打印,rspcode=[%s]",g_acRspCode); 	TRCLOG4		fclose( fmtfp );	fclose( fp );	SQLCLOSECUR(cur_txdethis,"cur_txdethis")	if( !strcmp( g_acRspCode, RSP_OK ) )	{		SetInqFormid(pstPubcom, "") ;		return SUCCESS; 	}	else 		return FAILED ;}/***根据机构代码,判断打印的机构数,中心可以打印全行的,** 共分为3级  5网点, 3一级行, 1总行(卡中心或清算中心)**           PRT_NETPOINT  PRT_ONEBRANCH   PRT_CENTER** 清算中心,卡中心可以打印全行的** 一类行可以打下级行的 ** 支行和网点只能打本行 ** astNeedPrtBrc 必须按级别和中心行组排序1113-1113-9*/#define  PRT_NETPOINT         '5'#define  PRT_ONEBRANCH        '3'#define  PRT_CENTER           '1'int RptJudgeRightAndList(pacBrc,pacPrtBrc,pastNeedPrtBrc)char    *pacBrc;                            /*柜员所属机构*/char    *pacPrtBrc;                         /*选择打印的机构*/struct  CMSNEEDPRTBRCLIST  *pastNeedPrtBrc; /*机构列表*/{EXEC SQL BEGIN DECLARE SECTION;	char    caBRCTYPE[3];                       /*机构类别  */	long    lBRCLVL;                            /*机构级别  */	short   sID;	char	acBrc[10];                          /*交易机构码  */	char	acPrtBrc[10];                       /*需打印的机构码  */EXEC SQL END   DECLARE SECTION;	int     iRet;	int     iLowFlag;                    /*是否下级行标志*/	char	acSuperBrc[10];              /*上级行机构码  */	char	acCenterBrc[10];             /*清算中心机构码  */	struct  CMSNEEDPRTBRCLIST  *pastNPB,*pastTmp;	memset( acBrc,          0x00, sizeof( acBrc ));	memset( acPrtBrc,       0x00, sizeof( acPrtBrc ));	memset( acSuperBrc,  	0x00, sizeof( acSuperBrc ));	memset( acCenterBrc,   	0x00, sizeof( acCenterBrc ));	memset( caBRCTYPE,      0x00, sizeof(caBRCTYPE));	/*判断是否是清算中心*/	strcpy( acBrc,    pacBrc);	strcpy( acPrtBrc, pacPrtBrc);		if ( strcmp(acBrc,acPrtBrc)==0 )		strcpy(acPrtBrc,"");	EXEC SQL SELECT brctype ,brclvl INTO :caBRCTYPE:sID, :lBRCLVL:sID 			FROM pubbranchinfo  			WHERE brccode=:acBrc; 	if(SQLCODE)	{		sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);  		TRCLOG4		strcpy( g_acRspCode, "CMS113" );		pubCrtRspInfo("cmstxdethis",SQLCODE );		ERRLOG		return FAILED;                  	}	sprintf( g_acTrcMsg,"caBRCTYPE=[%s],level=[%ld]",caBRCTYPE,lBRCLVL);	TRCLOG4	pastNeedPrtBrc[0].iSeqNo=0;    /*0序号的做为判断用,不赋值*/    	pastNeedPrtBrc++;	if ( strcmp(caBRCTYPE,"02") ==0 || strcmp(caBRCTYPE,"08") == 0 )	{   		/*清算中心或卡中心*/		/*可以查询或打印本行及下属网点的业务*/			strcpy(acCenterBrc,  acBrc);		iRet=PrtGetBrcList(pastNeedPrtBrc,acBrc,acPrtBrc,PRT_CENTER,1);		if (!strcmp(pacBrc, "00089999") && (strlen(pacPrtBrc)==0))		{			pastNeedPrtBrc[iRet].iSeqNo= iRet;			strcpy(pastNeedPrtBrc[iRet].acNeedPrtBrc,"00089999");			strcpy(pastNeedPrtBrc[iRet].acSuperBrc,"00089999");			pastNeedPrtBrc[iRet].acBrcClass[0]=PRT_CENTER;        			pastNeedPrtBrc[iRet+1].iSeqNo= iRet+1;			pastNeedPrtBrc[iRet+1].acBrcClass[0]='E';        		}		else		{			pastNeedPrtBrc[iRet].iSeqNo= iRet;			pastNeedPrtBrc[iRet].acBrcClass[0]='E';        		}	}	else if ( lBRCLVL == 3  || lBRCLVL == 5 )	{		/*判断是否是上级行*/		/*一级行可以查询或打印本行及下属网点的业务*/			strcpy(acSuperBrc, acBrc);		iRet = PrtGetBrcList(pastNeedPrtBrc,acBrc,acPrtBrc,PRT_NETPOINT,1);		pastNeedPrtBrc[iRet].iSeqNo=iRet;        		pastNeedPrtBrc[iRet].acBrcClass[0]='E'; 		/*判断是否是该柜员的下属机构*/		if ( strlen(acPrtBrc) > 3  )		{			iLowFlag=0;			pastTmp= pastNeedPrtBrc;			while( pastTmp->iSeqNo != 0)			{				pastTmp--;				if (strcmp(pastTmp->acNeedPrtBrc,acPrtBrc) == 0)					iLowFlag=1;					}			if (iLowFlag==0)			{				/*该柜员无权打印该机构或机构代码错*/				strcpy( g_acRspCode, "CMS214" );				pubCrtRspInfo();				ERRLOG				return FAILED;                  			}		}	}	else if (  lBRCLVL == 7  )	{			/*网点只能查询或打印本网点的业务*/		pastNeedPrtBrc[1].iSeqNo=1;        		pastNeedPrtBrc[1].acBrcClass[0]=PRT_NETPOINT;        		strcpy(pastNeedPrtBrc[1].acNeedPrtBrc,acBrc); 		pastNeedPrtBrc[2].iSeqNo=2;        		pastNeedPrtBrc[2].acBrcClass[0]='E';        	}	else {		return -1;                  		}	return SUCCESS;                  }int PrtGetSuperBrcList(paacSuperBrc)char    *paacSuperBrc;{EXEC SQL BEGIN DECLARE SECTION;	char    acBRCCODE[10];                       /*机构号  */	char	acHIGHBRC2[10];                      /*上级交易机构码*/	short   sID2;EXEC SQL END   DECLARE SECTION;	char    aacSuperBrc[ NEEDPRTBRCMAX - 50 ][10];	int     i=0;	int     iRet=0;		memset( aacSuperBrc, 0x00, sizeof(aacSuperBrc) ); 	EXEC SQL DECLARE cur_getsbrc CURSOR FOR 			SELECT brccode  FROM pubbranchinfo 			WHERE  brclvl=4  or brclvl=5 or brclvl = 1			ORDER BY brccode; 	SQLOPENCUR(cur_getsbrc,"cur_getsbrc")	if(SQLCODE)	{	    sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);		TRCLOG4		strcpy( g_acRspCode, "CMS112" );		pubCrtRspInfo("pubbranchinfo",SQLCODE );		ERRLOG		return -1;                  	}	i=0;	for( ; ; )	{		memset( acBRCCODE, 0x00, sizeof(acBRCCODE) ); 		memset( acHIGHBRC2, 0x00, sizeof(acHIGHBRC2) ); 		EXEC SQL FETCH cur_getsbrc INTO :acBRCCODE:sID2;		if( SQLCODE == SQLNOTFOUND ) 			break ;		if(SQLCODE)		{			sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);			TRCLOG4			strcpy( g_acRspCode, "CMS112" );			pubCrtRspInfo("pubbranchinfo",SQLCODE );			ERRLOG			SQLCLOSECUR(cur_getsbrc,"cur_getsbrc")			return -1;                  		}		/*判断是否是网点还是支行		**(因为pubbranchinfo的brclvl没有按需求配置),		**不区分网点和支行,需要从linkinfo表中区分*/		EXEC SQL SELECT highbrc INTO :acHIGHBRC2:sID2 					FROM pubbrclinkinfo 						WHERE brccode=:acBRCCODE						AND linktype='01' 						AND linksubtype='01'; 		strpack(acHIGHBRC2);		if( strcmp(acHIGHBRC2,"00089999") !=0 )			continue;			strcpy(aacSuperBrc[i],acBRCCODE);		strpack(aacSuperBrc[i]);		sprintf( g_acTrcMsg,"i=[%d],Supbrccode=[%s]", i,aacSuperBrc[i]);		TRCLOG4		i++;	}	SQLCLOSECUR(cur_getsbrc,"cur_getsbrc")	strcpy(aacSuperBrc[i],"END");	memcpy(paacSuperBrc	,aacSuperBrc, sizeof(aacSuperBrc));	return  i;}int PrtGetBrcList(pastNeedPrtBrc,pacSuperBrc,pacBrc,cLeval,iBeginNo)struct  CMSNEEDPRTBRCLIST  *pastNeedPrtBrc; /*机构列表*/char    *pacSuperBrc;                       /*上级机构*/char    *pacBrc;                            /*选择打印的机构*/char    cLeval;                             /*上级机构的级别*/char    iBeginNo;                           /*起始机构在表中的位置*/{EXEC SQL BEGIN DECLARE SECTION;	short   sID1;	char    caBRCTYPE1[3];                       /*机构类别  */	long    lBRCLVL1;                            /*机构级别  */	char	acHIGHBRC[10];                       /*上级交易机构码  */	char	acBRCCODE1[10];                      /*交易机构码  */EXEC SQL END   DECLARE SECTION;	char    aacSuperBrc[ NEEDPRTBRCMAX - 50 ][10];	int     iTotalNum,iSuperBrcNum=0;	int     i,iRet=0;		sprintf( g_acTrcMsg,"superbrc=[%s],brc=[%s]",pacSuperBrc,pacBrc );	TRCLOG4	if ( cLeval == PRT_CENTER && strlen( pacBrc ) == 0 )	{		/*如果总行打印全行的交易*/		memset( aacSuperBrc, 0x00, sizeof(aacSuperBrc) ); 		iSuperBrcNum=PrtGetSuperBrcList(aacSuperBrc);		/*循环读取一级机构*/		iTotalNum=iBeginNo;		for(i=0;i<iSuperBrcNum;i++)		{			iRet=PrtGetBrcList(pastNeedPrtBrc,aacSuperBrc[i],"",PRT_NETPOINT,iTotalNum);			iTotalNum = iTotalNum + iRet;			pastNeedPrtBrc= pastNeedPrtBrc+iRet;		sprintf( g_acTrcMsg,"iTotalNum=[%d] iRet=[%d]", iTotalNum,iRet);		TRCLOG4		}		return  iTotalNum-1;	}	else if ( cLeval == PRT_CENTER && strlen( pacBrc ) > 3 )	{		/*如果总行只打印某个行的交易*/		iRet=PrtGetBrcList(pastNeedPrtBrc,pacBrc,pacBrc,PRT_NETPOINT,iBeginNo);		return  iRet;		}	else  if ( cLeval == PRT_NETPOINT )	{			/*如果一级行打印本行的交易*/		strcpy(acHIGHBRC,pacSuperBrc);	}	/*根据一级行号,排列打印顺序,顺序为 ***下属行,下属行......一级行****/	EXEC SQL DECLARE cur_getbrc CURSOR FOR 			SELECT brccode  				FROM pubbrclinkinfo 				WHERE highbrc=:acHIGHBRC 					AND linktype='01'; 	SQLOPENCUR(cur_getbrc,"cur_getbrc")	if(SQLCODE)	{		sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);		TRCLOG4		strcpy( g_acRspCode, "CMS112" );		pubCrtRspInfo("pubbranchinfo",SQLCODE );		ERRLOG		return 0;                  	}	i=0;	for( ; ; )	{		EXEC SQL FETCH cur_getbrc INTO :acBRCCODE1:sID1;		if( SQLCODE == SQLNOTFOUND )  			break ;		if(SQLCODE)		{			sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);			TRCLOG4			strcpy( g_acRspCode, "CMS112" );			pubCrtRspInfo("pubbranchinfo",SQLCODE );			ERRLOG			SQLCLOSECUR(cur_getbrc,"cur_getbrc")			return 0;                  		}		pastNeedPrtBrc->iSeqNo= i + iBeginNo;		strcpy(pastNeedPrtBrc->acNeedPrtBrc,acBRCCODE1);		strcpy(pastNeedPrtBrc->acSuperBrc,acHIGHBRC);		pastNeedPrtBrc->acBrcClass[0]= PRT_NETPOINT;	sprintf( g_acTrcMsg,"@@@NEEDNO=[%d] acNeedPrtBrc[%s]", pastNeedPrtBrc->iSeqNo,pastNeedPrtBrc->acNeedPrtBrc);  	TRCLOG4		pastNeedPrtBrc++; 		i++;	}	SQLCLOSECUR(cur_getbrc,"cur_getbrc")	/*加入一级机构或机构本身*/	pastNeedPrtBrc->iSeqNo= i + iBeginNo;	strcpy(pastNeedPrtBrc->acNeedPrtBrc,acHIGHBRC);	strcpy(pastNeedPrtBrc->acSuperBrc,acHIGHBRC);	/*判断是一级机构还是普通机构*/	EXEC SQL SELECT brctype ,brclvl 	        INTO :caBRCTYPE1:sID1, :lBRCLVL1:sID1 			FROM pubbranchinfo  			WHERE brccode=:acHIGHBRC; 	if(SQLCODE)	{		sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE);  		TRCLOG4		strcpy( g_acRspCode, "CMS113" );		pubCrtRspInfo("pubbranchinfo",SQLCODE );		ERRLOG		return 0;                  	}	if ( lBRCLVL1 == 4 )		pastNeedPrtBrc->acBrcClass[0]= PRT_ONEBRANCH;	else		pastNeedPrtBrc->acBrcClass[0]= PRT_NETPOINT;	sprintf( g_acTrcMsg,"###NEEDNO=[%d] acNeedPrtBrc[%s]", pastNeedPrtBrc->iSeqNo,pastNeedPrtBrc->acNeedPrtBrc);  	TRCLOG4	pastNeedPrtBrc++; 	i++;	return  i;}#include<stdlib.h>char   *RptFormatAmt(double amt, char *pstr){	char acTmp[31];	char acRetTmp[51];	char *ptr,*retptr;	double amtTmp;	char flag;	char flag1;	int i=0,j=0;		amtTmp=0;	flag1='+';		if (amt < 0)	{	flag1='-';	}	else 		flag1='+';	amtTmp=fabs(amt);	if( amtTmp==0)		strcpy(pstr,"0.00");	flag=',';		memset(acTmp,0x00,sizeof(acTmp));	memset(acRetTmp,0x00,sizeof(acRetTmp));		sprintf(acTmp,"%030.2lf",amtTmp);	for ( i=0,j=0;i<10; i++)	{		if (i== 9){ 			memcpy( &acRetTmp[j - 1], &acTmp[3*i],3 );			break;		}		memcpy( &acRetTmp[j], &acTmp[3*i],3 );		j=j+3;		memset(&acRetTmp[j],flag,1);		j++;	}	ptr=acRetTmp;	while( *ptr!='\0')	{		if (*ptr=='-')		{	flag1='-';					}		if (*ptr=='.'){			ptr--;			if(flag1=='-'){				strcpy(pstr,"-");				strcat(pstr,ptr);			}			else{				strcpy(pstr,ptr);			}			return pstr;		}				if (*ptr!=','&& *ptr!='0'  ){			if(flag1=='-'){				strcpy(pstr,"-");				strcat(pstr,ptr);			}			else{				strcpy(pstr,ptr);			}					return pstr;				}		ptr++;				}	return "";	}

⌨️ 快捷键说明

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