📄 cmsb15.sqc
字号:
/******************************************************************** ** 源码文件名称 : cmsB15.SQC ** 函数名称 : cms21B015 ** 所属子系统 : CMS ** 当前文件版本 : 1.0.0.0 ** 作 者 : XuZy ** 版本创建日期 : 2004/10/14 ** 功能描述 : 自助设备业务量统计表 ** 修改记录 : ** 修改人 修改日期 修改日期*********************************************************************/#include "sysdefine.h"#include <stdio.h>#include "pubcom.h"#include "funcapi.h"#include "code.h"#include "attrdef.h"#include "cmscode.h"#include "cmsoperstat.h"#include "cmsmerchantinfo.h"#include "pubbranchinfo.h"#include "errlog.h"EXEC SQL INCLUDE sqlca;#define OVERPAGE 36 /* 满页行数 */ #define OVERLINE 5 /* 换行行数 */ #define LIMIT 36struct prtdata{ char acBer[BIT9_LEN +1]; /* 序号 */ char acDevTypeComm[70 +1]; /* 设备类型 */ char acDevId[BIT16_LEN +1]; /* 设备代码 */ char acPNumber[BIT7_LEN + 1]; /* 存现笔数 */ char acPAmt[TXAMT_LEN + 1]; /* 存现金额 */ char acGNumber[BIT7_LEN + 1]; /* 取现笔数 */ char acGAmt[TXAMT_LEN + 1]; /* 取现金额 */ char acSNumber[BIT7_LEN + 1]; /* 代理缴费笔数 */ char acSAmt[TXAMT_LEN + 1]; /* 代理缴费金额 */ char acTrNumber[BIT7_LEN + 1]; /* 转帐笔数 */ char acTrAmt[TXAMT_LEN + 1]; /* 转帐金额 */ char acCPNumber[BIT7_LEN + 1]; /* 改密笔数 */ char acQBNumber[BIT7_LEN + 1]; /* 查询笔数 */ char acUNumber[BIT7_LEN + 1]; /* 银联笔数 */ char acUAmt[TXAMT_LEN + 1]; /* 银联金额 */ char acBrc[BIT10_LEN + 1 ]; /* 所属机构码 */ };#define PRTLINE \ if( prtline( fp, acFmtFile,acPrtData ) ) \ FUNCERR_PRO \ iLineCount++;/* 打印表头 */#define PRTHEAD \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp,"title:" ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "title0:%s|%s", \ pstPubcom->acBrc, acPage); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "title1:%s|%s|%s|%s|%s|%s|%s|%s", \ acCardKindComm, acYear, \ acMonth,acDate, acYear1,acMonth1, \ acDate1,acCcyComm ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "head:" ); \ iLineCount++; \ iLine ++ ;#define PRTBODY0 \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "body0:" ); \ iLineCount++; \/* 打印数据 */#define PRTBODY \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "body:%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s",\ stPrtdata.acBer, stPrtdata.acDevTypeComm, \ stPrtdata.acDevId, stPrtdata.acBrc, \ stPrtdata.acPNumber, stPrtdata.acPAmt, \ stPrtdata.acGNumber, stPrtdata.acGAmt, \ stPrtdata.acSNumber, stPrtdata.acSAmt, \ stPrtdata.acTrNumber, stPrtdata.acTrAmt, \ stPrtdata.acCPNumber, stPrtdata.acQBNumber, \ stPrtdata.acUNumber, stPrtdata.acUAmt); \ iLineCount++; \ iLine++; \ iNum++;/* 打印页表尾 */#define PRTFOOT \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "body1:" ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "foot:%ld|%.2f|%ld|%.2f|%ld|%.2f|%ld|%.2f|%ld|%ld|%ld|%.2f",\ lTPNumber, dTPAmt , \ lTGNumber, dTGAmt , \ lTSNumber, dTSAmt , \ lTTrNumber, dTTrAmt , \ lTCPNumber, lTQBNumber , \ lTUNumber, dTUAmt ); \ iLineCount++;#define PRTFOOTO \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "foot0:" ); \ iLineCount++; \ prtline( fp, "foot1:%ld|%.2f|%ld|%.2f|%ld|%.2f|%ld|%.2f|%ld|%ld|%ld|%.2f",\ lToPNumber, dToPAmt , \ lToGNumber, dToGAmt , \ lToSNumber, dToSAmt , \ lToTrNumber, dToTrAmt , \ lToCPNumber, lToQBNumber , \ lToUNumber, dToUAmt ); \ iLineCount++; \ prtline( fp, "foot2:" ); \ iLineCount++; \ iLine = 0 ; #define BOTTM \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "bottm:%s|%s|%s|%s", \ pstPubcom->acTeller, acYear3, acMonth3,acDate3);\ iLineCount++; \ iPage ++ ; iLine = 0 ; #define PRTFOOTF \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "head0:" ); \ iLineCount++;#define PRTFOOTM \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "head1:" ); \ iLineCount++; int cms21B015(pstPubcom)struct pubcom *pstPubcom;{ EXEC SQL BEGIN DECLARE SECTION; char acBrc[BRC_LEN +1]; /* 机构代码 */ char acBeginDate[DATE_LEN + 1 ]; /* 起始日期 */ char acEndDate[DATE_LEN + 1 ]; /* 终止日期 */ char acType[BIT2_LEN + 1]; /* 机构类型 */ char acSelStr[512]; char acSelStr1[512]; char acCcy[3 + 1]; char acCardKind[8 + 1]; char acTranDevType[2 + 1]; char acCardKindComm[70 + 1]; char acCcyComm[16 + 1]; char acDevId[15 + 1]; char acDevId2[15 + 1]; EXEC SQL END DECLARE SECTION; int lNumber = 0; /* 交易笔数小计 */ int lTmpNumber = 0; /* 交易笔数小计 */ int lTNumber = 0; /* POS交易笔数小计 */ int lTmpTNumber = 0; /* POS交易笔数小计 */ int iLineCount = 0 ; int i, iPage , iLine, iNum, iFlag,iT; int iPN,iGN,iSN,iTN,iCPN,iQBN,iUN; FILE *fp, *fmtfp; /* 文件指针 */ double dAmt = 0.00; /* 交易金额小计 */ double dTmpAmt = 0.00; /* 交易金额小计 */ double dTAmt = 0.00; /* POS交易金额小计 */ double dTmpTAmt = 0.00; /* POS交易金额小计 */ int iPNumber,iGNumber, iCPNumber, iTrNumber, iSNumber,iQBNumber, iUNumber; long lTPNumber,lTGNumber, lTCPNumber, lTTrNumber, lTQBNumber, lTUNumber,lTSNumber; long lToPNumber,lToGNumber, lToCPNumber, lToTrNumber, lToQBNumber, lToUNumber,lToSNumber; double dGAmt, dTrAmt, dUAmt, dPAmt,dSAmt; double dTGAmt, dTTrAmt, dTUAmt, dTPAmt,dTSAmt; double dToGAmt, dToTrAmt, dToUAmt, dToPAmt,dToSAmt; char caBrc[BRC_LEN + 1]; /* 机构码 */ char acWhrStr[ 512 ]; char acFileName[ 101 ]; char acFmtFile[ 101 ]; char acPrtData[ 4096 ]; char acPage[ 5 ]; char acAmt[ 18 ]; char acTAmt[ 18 ]; char acTNumber[ 8 ]; char acNumber[ 8 ]; char acBankname[ 41 ]; char acTmpCcy[BIT4_LEN + 1]; char acTmpCardKind[BIT9_LEN + 1]; char acTmpTranDevType[BIT3_LEN + 1]; char acTranDevType1[BIT3_LEN + 1]; char acDevId1[BIT16_LEN + 1]; char acYear[BIT5_LEN + 1]; char acMonth[BIT3_LEN + 1]; char acDate[BIT3_LEN + 1]; char acYear1[BIT5_LEN + 1]; char acMonth1[BIT3_LEN + 1]; char acDate1[BIT3_LEN + 1]; char acYear3[BIT5_LEN + 1]; char acMonth3[BIT3_LEN + 1]; char acDate3[BIT3_LEN + 1]; char acTmp1[70 +1]; char acTmp2[BIT5_LEN +1]; char acTmp3[BIT10_LEN +1]; struct prtdata stPrtdata; struct cmsoperstat stCmsOperStat; memset( acSelStr, 0x00, sizeof( acSelStr ) ); memset( acSelStr1, 0x00, sizeof( acSelStr1 )); memset( acWhrStr, 0x00, sizeof( acWhrStr ) ); memset( acBrc, 0x00, sizeof( acBrc ) ); memset( acPage, 0x00, sizeof( acPage ) ); memset( &stPrtdata, 0x00, sizeof( struct prtdata )); memset( &stCmsOperStat, 0x00, sizeof( struct cmsoperstat )); memset( acBankname, 0x00, sizeof( acBankname ) ); memset( acYear, 0x00, sizeof( acYear ) ); memset( acMonth, 0x00, sizeof( acMonth ) ); memset( acDate, 0x00, sizeof( acDate ) ); memset( acYear1, 0x00, sizeof( acYear1 ) ); memset( acMonth1, 0x00, sizeof( acMonth1 ) ); memset( acDate1, 0x00, sizeof( acDate1 ) ); memset( acYear3, 0x00, sizeof( acYear3 ) ); memset( acMonth3, 0x00, sizeof( acMonth3 ) ); memset( acDate3, 0x00, sizeof( acDate3 ) ); if ( pubGetBaseInfo("BANKNAME", acBankname ) ) FUNCERR_PRO /* 取数据字典 */ getstring( "BeginDate1", acBeginDate ); getstring( "EndDate1", acEndDate ); getstring( "DevID", acDevId1 ); getstring( "TranDevType", acTranDevType1 ); sprintf( g_acTrcMsg, "BeginDate1[%s]EndDate1[%s]DevID[%s]TranDevType[%s]", acBeginDate,acEndDate,acDevId1,acTranDevType1 ); TRCLOG4 /* 赋打印时间 */ strncpy(acYear3, pstPubcom->acTranDate8, 4); strncpy(acMonth3, pstPubcom->acTranDate8 + 4, 2); strncpy(acDate3, pstPubcom->acTranDate8 + 6, 4); /*检查交易机构是否为中心机构,如果不是,不能做此交易*/ if (strcmp( pstPubcom->acBrcType, BRCTYPE_CRDCENTER)) { strcpy( g_acRspCode, "CMS214" ); pubCrtRspInfo( ); ERRLOG goto Exit; } fp = (FILE *)BeginFile( pstPubcom, NULL ); if ( fp == NULL ) { strcpy( g_acRspCode, "DPS902" ); pubCrtRspInfo( ); ERRLOG goto Exit; } sprintf( acFmtFile, "%s/fmt/cmsB15.fmt", getenv("HOME") ); sprintf( g_acFmtFile, acFmtFile ); if ( ( fmtfp=fopen(acFmtFile,"r") ) == NULL ) { strcpy( g_acRspCode, "DPS902" ); strcpy( g_acTrcMsg, acFmtFile ); TRCLOG4 sprintf( g_acRspMsg, "打开格式文件[%s]错", acFmtFile ); ERRLOG goto Exit ; } iLine = 0 ; iFlag = 0 ; iPage = 1 ; iNum = 1 ; sprintf( acSelStr, "select DISTINCT(cardkind), ccy, trandevtype, devid, cardkindcomm, ccycomm from cmsoperstat where 1=1 " ); if (strcmp(acBeginDate, INITDATE) != 0) { sprintf( acSelStr + strlen(acSelStr), "and trandate >= '%s' ", acBeginDate ); } if (strcmp(acEndDate, INITDATE) != 0) { sprintf( acSelStr + strlen(acSelStr), "and trandate <= '%s' ", acEndDate ); } if (strlen(acTranDevType1) > 0) { sprintf( acSelStr + strlen(acSelStr), "and trandevtype = '%s' ", acTranDevType1 ); } if (strlen(acDevId1) > 0) { sprintf( acSelStr + strlen(acSelStr), "and devid = '%s' ", acDevId1 ); } sprintf( acSelStr + strlen(acSelStr), "and trandevtype in ('13', '15','19','21') and trankind in ('003','034','020','042','004','022','033','005','029','030','031','015','040','016','041','023','024','032','036','037','055') " ); sprintf( acSelStr + strlen(acSelStr), "GROUP BY cardkind, ccy, trandevtype, devid, cardkindcomm, ccycomm" ); sprintf( g_acTrcMsg,"%s", acSelStr ); TRCLOG4 EXEC SQL PREPARE pre1_cur FROM :acSelStr; if ( SQLCODE ) { strcpy( g_acRspCode, "CMS1A7" ); pubCrtRspInfo( SQLCODE ); ERRLOG goto Exit; } EXEC SQL DECLARE report_cur CURSOR FOR pre1_cur; if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS110" ); pubCrtRspInfo("cmsoperstat",SQLCODE ); ERRLOG goto Exit ; } SQLOPENCUR(report_cur,"report_cur") if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS111" ); pubCrtRspInfo("cmsoperstat",SQLCODE ); ERRLOG goto Exit ; } while ( TRUE ) { pubInitCmsoperstat(); memset(acCardKind, 0x00, sizeof(acCardKind)); memset(acCcy, 0x00, sizeof(acCcy)); memset(acTranDevType, 0x00, sizeof(acTranDevType)); memset(acDevId, 0x00, sizeof(acDevId)); memset(acCardKindComm, 0x00, sizeof(acCardKindComm)); memset(acCcyComm, 0x00, sizeof(acCcyComm));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -