📄 cmsb20.sqc
字号:
/******************************************************************** ** 源码文件名称 : cmsB20.SQC ** 函数名称 : cms21B020 ** 所属子系统 : CMS ** 当前文件版本 : 1.0.0.0 ** 作 者 : xuliang ** 版本创建日期 : 2005/01/07 ** 功能描述 : 卡发行量情况打印 ** 修改记录 : ** 修改人 修改日期 修改日期*********************************************************************/#include "sysdefine.h"#include <stdio.h>#include "pubcom.h"#include "funcapi.h"#include "code.h"#include "attrdef.h"#include "cmscode.h"#include "cmscardinfo.h"#include "pubbranchinfo.h"#include "errlog.h"EXEC SQL INCLUDE sqlca;#define OVERPAGE 45 /* 满页行数 */ #define OVERLINE 5 /* 换行行数 */ #define LIMIT 50struct prtdata{ char acIssueBrc[BRC_LEN + 1]; /* 发卡机构码 */ char acCardKind[CONDITION_LEN + 1]; /* 卡片种类 */ char acCardNum[BIT11_LEN + 1]; /* 发卡数量 */ char acClsCnt[BIT11_LEN + 1]; /* 销卡数量 */ char acSettleNum[BIT11_LEN + 1]; /* 结存数量 */ char acCardNum1[BIT11_LEN + 1]; /* 机构小计 发卡数量 */ char acClsCnt1[BIT11_LEN + 1]; /* 机构小计 销卡数量 */ char acSettleNum1[BIT11_LEN + 1]; /* 机构小计 结存数量 */ char acCardNum2[BIT11_LEN + 1]; /* 合计 发卡数量 */ char acClsCnt2[BIT11_LEN + 1]; /* 合计 销卡数量 */ char acSettleNum2[BIT11_LEN + 1]; /* 合计 结存数量 */};#define PRTLINE \ if( prtline( fp, acFmtFile,acPrtData ) ) \ FUNCERR_PRO \ iLineCount++;#define PRTHEAD \ prtline( fp,"title:%s", acBankname); \ iLineCount++; \ prtline( fp, "title0:%s|%s", acBeginDate,acEndDate); \ iLineCount++; \ prtline( fp, "title1:%s|%d", \ pstPubcom->acBrc, iPage ); \ iLineCount++; \ prtline( fp, "head:" ); \ iLineCount++; \#define PRTBODY \ prtline( fp, "body1:" ); \ iLineCount++; \ iLine ++ ; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "body0:%s|%s|%s|%s|%s", \ stPrtdata.acIssueBrc, \ stPrtdata.acCardKind, \ stPrtdata.acCardNum, \ stPrtdata.acClsCnt, \ stPrtdata.acSettleNum ); \ iLineCount++; \ iLine ++ ; \ if( iLine % OVERPAGE == 0 || (iLine - 1) % OVERPAGE == 0) \ { PRTFOOT }#define PRTFOOT \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "tail1:" ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "bottm:%s", \ pstPubcom->acTeller ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "next:%s",pstPubcom->acTranDate ); \ iLineCount++; \ iPage ++ ; iLine = 0 ; int cms21B020(pstPubcom)struct pubcom *pstPubcom;{ EXEC SQL BEGIN DECLARE SECTION; char acBeginDate[DATE_LEN + 1 ]; /* 起始日期 */ char acEndDate[DATE_LEN + 1 ]; /* 终止日期 */ char acIssueBrc[BRC_LEN + 1 ]; /* 交易机构 */ char acCardkindcomm[CONDITION_LEN + 1]; long lCardNum = 0; short lCardNum_ID; long lClsCnt = 0; short lClsCnt_ID; long lSettleNum = 0; short lSettleNum_ID; long lCardNum1 = 0; long lClsCnt1 = 0; long lSettleNum1 = 0; long lCardNum2 = 0; long lClsCnt2 = 0; long lSettleNum2 = 0; char acWhrStr[ 512 ]; char acTableStat[ 255 ]; char acLockStat[ 255 ]; EXEC SQL END DECLARE SECTION; char acBankname[ 41 ]; FILE *fp,*fmtfp; /* 文件指针 */ char acSelStr[ 301 ]; int iLineCount = 0 ; int i, iPage, iLine ; int iRtnRows = 0; char acTableName[PRDCODE_LEN + 1]; /* 表名称 */ char acFileName[FILENAME_LEN + 1]; /* 文件名称 */ char acFmtFile[ 101 ]; char acPrtData[ 4096 ]; struct prtdata stPrtdata; struct cmscardinfo stCmscardinfo; /* 卡片信息表 */ memset( acSelStr, 0x00, sizeof( acSelStr ) ); memset( acWhrStr, 0x00, sizeof( acWhrStr ) ); memset( acIssueBrc, 0x00, sizeof( acIssueBrc ) ); memset( acCardkindcomm, 0x00, sizeof( acCardkindcomm ) ); memset( acFileName, 0x00, sizeof( acFileName ) ); memset( acTableName, 0x00, sizeof( acTableName ) ); memset( &stCmscardinfo, 0x00, sizeof( struct cmscardinfo ) ); memset( acBankname, 0x00, sizeof(acBankname)); if ( pubGetBaseInfo("BANKNAME", acBankname ) ) FUNCERR_PRO /* 取数据字典 */ getstring( "BeginDate1", acBeginDate ); getstring( "EndDate1", acEndDate ); getstring( "Brc1", acIssueBrc ); sprintf( g_acTrcMsg,"BeginDate[%s]EndDate[%s]Brc1[%s]", acBeginDate,acEndDate,acIssueBrc ); TRCLOG4 /*检查交易机构是否为中心机构,如果不是,不能做此交易*/ if (strcmp( pstPubcom->acBrcType, BRCTYPE_CRDCENTER)) { if (strlen(acIssueBrc) == 0) { strcpy( acIssueBrc, pstPubcom->acBrc ); } if (strcmp( pstPubcom->acBrc, acIssueBrc)) { strcpy( g_acRspCode, "CMS214" ); pubCrtRspInfo( ); ERRLOG goto Exit; } } if (!strcmp( pstPubcom->acBrcType, BRCTYPE_CLSCENTER)) { strcpy( g_acRspCode, "CMS214" ); pubCrtRspInfo( ); ERRLOG goto Exit; } fp = (FILE *)BeginFile( pstPubcom, NULL ); if ( fp == NULL ) { strcpy( g_acRspMsg, "打开文件句柄出错!" ); pubCrtRspInfo( ); ERRLOG return FAILED ; } sprintf( acFmtFile, "%s/fmt/cmsB20.fmt", getenv("HOME") ); sprintf( g_acFmtFile, acFmtFile ); if( ( fmtfp=fopen( acFmtFile,"r" ) ) == NULL ) { strcpy( g_acTrcMsg, acFmtFile ); TRCLOG4 strcpy( g_acRspCode, "CMS1B0" ); sprintf( g_acRspMsg, "打开格式文件[%s]错", acFmtFile ); ERRLOG goto Exit; } iLine = 0 ; iPage = 1 ; /* 卡中心 */ /* 机构号为空,且为卡中心,则acIssueBrc赋为'%' */ if (!strcmp( pstPubcom->acBrcType, BRCTYPE_SITE) && (strlen(acIssueBrc) == 0 ) ) { strcpy( acIssueBrc,"%" ); } strcat( acIssueBrc, "%" );#ifdef V_INFORMIX EXEC SQL SET ISOLATION TO DIRTY READ;#endif /* 根据机构表(pubbranchinfo), 取出营业网点的机构号 */ EXEC SQL DECLARE Clear_cur CURSOR FOR SELECT brccode FROM PUBBRANCHINFO WHERE brccode like :acIssueBrc ORDER BY brccode; SQLOPENCUR(Clear_cur,"Clear_cur") if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS111" ); pubCrtRspInfo("PUBBRANCHINFO",SQLCODE ); ERRLOG goto Exit ; } for( ; ; ) { EXEC SQL FETCH Clear_cur into :pubbranchinfo_brccode; if( SQLCODE == SQLNOTFOUND ) break ; if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS112" ); pubCrtRspInfo( "PUBBRANCHINFO",SQLCODE ); ERRLOG goto Exit ; } strcpy ( acIssueBrc,pubbranchinfo_brccode ); /* 支行 */ EXEC SQL DECLARE CardNum_cur CURSOR FOR SELECT cardkind FROM CMSCARDINFO WHERE issuebrc= :acIssueBrc GROUP BY cardkind; SQLOPENCUR(CardNum_cur,"CardNum_cur") if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS111" ); pubCrtRspInfo("CMSCARDINFO",SQLCODE ); ERRLOG goto Exit ; } lCardNum1 = 0; lClsCnt1 = 0; lSettleNum1 = 0; for( ; ; ) { EXEC SQL FETCH CardNum_cur into :cmscardinfo_cardkind; if( SQLCODE == SQLNOTFOUND ) { break ; } if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS112" ); pubCrtRspInfo( "CMSCARDINFO",SQLCODE ); ERRLOG goto Exit ; } /* 取发卡量 select count(*) 根据卡种和状态*/ EXEC SQL SELECT count(*) INTO :lCardNum:lCardNum_ID FROM CMSCARDINFO WHERE issuebrc = :acIssueBrc AND crdsts = '1' AND cardkind = :cmscardinfo_cardkind AND usedate between :acBeginDate AND :acEndDate; /* 取销卡量 select count(*) 根据卡种和状态*/ EXEC SQL SELECT count(*) INTO :lClsCnt:lClsCnt_ID FROM CMSCARDINFO WHERE issuebrc = :acIssueBrc AND crdsts = '2' AND cardkind = :cmscardinfo_cardkind AND closedate between :acBeginDate AND :acEndDate; EXEC SQL SELECT count(*) INTO :lSettleNum:lClsCnt_ID FROM CMSCARDINFO WHERE issuebrc = :acIssueBrc AND crdsts = '1' AND cardkind = :cmscardinfo_cardkind; /* 翻译卡片种类 */ EXEC SQL SELECT cardkindcomm INTO :acCardkindcomm FROM CMSCARDKIND WHERE cardkind = :cmscardinfo_cardkind; /* 给body赋值,打印一条记录 */ memset( &stPrtdata, 0x00, sizeof( struct prtdata ) ); strcpy ( stPrtdata.acIssueBrc, acIssueBrc ); strpack(acCardkindcomm); acCardkindcomm[30]='\0'; strcpy ( stPrtdata.acCardKind, acCardkindcomm ); sprintf( stPrtdata.acCardNum , "%ld", lCardNum) ; sprintf( stPrtdata.acClsCnt , "%ld", lClsCnt) ; sprintf( stPrtdata.acSettleNum , "%ld", lSettleNum) ; /* 机构小计 */ lCardNum1 += lCardNum; lClsCnt1 += lClsCnt; lSettleNum1 += lSettleNum; sprintf( stPrtdata.acCardNum1 , "%ld", lCardNum1) ; sprintf( stPrtdata.acClsCnt1 , "%ld", lClsCnt1) ; sprintf( stPrtdata.acSettleNum1 , "%ld", lSettleNum1) ; if( iLine == 0 ) { PRTHEAD } PRTBODY } /* 取卡种 for end */ SQLCLOSECUR(CardNum_cur,"CardNum_cur") if (lCardNum1 > 0 || lClsCnt1 > 0 || lSettleNum1 > 0) { prtline( fp, "body1:" ); iLineCount++; iLine ++ ; prtline( fp, "body2:%s|%s|%s", stPrtdata.acCardNum1, stPrtdata.acClsCnt1, stPrtdata.acSettleNum1 ); iLineCount++; iLine ++ ; if( iLine % OVERPAGE == 0 || (iLine - 1) % OVERPAGE == 0) { PRTFOOT } } /* 合计 */ lCardNum2 += lCardNum1; lClsCnt2 += lClsCnt1; lSettleNum2 += lSettleNum1; sprintf( stPrtdata.acCardNum2 , "%ld", lCardNum2) ; sprintf( stPrtdata.acClsCnt2 , "%ld", lClsCnt2) ; sprintf( stPrtdata.acSettleNum2 , "%ld", lSettleNum2) ; }/* 取机构 for end */ if( iLineCount == 0 ) { strcpy( g_acRspCode, "CMS113" ); sprintf( g_acRspMsg, "无满足条件的纪录!" ); ERRLOG goto Exit ; } else { prtline( fp, "body1:" ); iLineCount++; iLine ++ ; prtline( fp, "body4:%s|%s|%s", \ stPrtdata.acCardNum2, \ stPrtdata.acClsCnt2, \ stPrtdata.acSettleNum2 ); \ iLineCount++; iLine ++ ; PRTFOOT }Exit: fclose( fmtfp ); fclose( fp ); SQLCLOSECUR(Clear_cur,"Clear_cur") SQLCLOSECUR(CardNum_cur,"CardNum_cur") if( !strcmp( g_acRspCode, RSP_OK ) ) { SetInqFormid(pstPubcom, "") ; return SUCCESS; } else return FAILED ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -