📄 cmsb24.sqc
字号:
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 + -