📄 cms652.sqc
字号:
/******************************************************************** ** 源码文件名称 : cms652.SQC ** 函数名称 : cms216052 ** 所属子系统 : CMS ** 当前文件版本 : 1.0.0.0 ** 作 者 : ZhouR ** 版本创建日期 : 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 "cmsholdm.h"#include "errlog.h"EXEC SQL INCLUDE sqlca;#define OVERPAGE 45 /* 满页行数 */ #define OVERLINE 5 /* 换行行数 */ #define LIMIT 50struct prtdata{ char acCardNo[CARDNO_LEN +1]; /* 卡号 */ char acHoldDate[DATE_LEN + 1]; /* 收进日期 */ char acRetFlag[7]; /* 归还标志 */ char acHoldBrc[BRC_LEN + 1]; /* 收进机构码 */ char acRetDate[DATE_LEN + 1]; /* 归还日期 */ char acRetBrc[BRC_LEN + 1]; /* 归还机构码 */ char acRetoIdType[11]; /* 归还人证件类型 */ char acRetoIdNo[21]; /* 归还人证件号码 */ char acRetoName[31]; /* 归还人姓名 */ char acHoldReaSon[ 13]; /* 原因 */};#define PRTLINE \ if( prtline( fp, acFmtFile,acPrtData ) ) \ FUNCERR_PRO \ iLineCount++;#define PRTHEAD \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp,"title:%s", acBankname); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "title0:%s|%d", \ pstPubcom->acBrc, iPage ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "head:" ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "body:" ); \ iLineCount++;#define PRTBODY \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "body0:%s|%s|%s|%s|%s|%s|%s|%s|%s", \ stPrtdata.acCardNo, stPrtdata.acHoldDate, \ stPrtdata.acRetFlag, stPrtdata.acHoldBrc, \ stPrtdata.acRetDate, stPrtdata.acRetBrc, \ stPrtdata.acRetoName, \ stPrtdata.acRetoIdType, stPrtdata.acRetoIdNo); \ iLineCount++; \ iLine ++ ; #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 cms216052(pstPubcom)struct pubcom *pstPubcom;{ EXEC SQL BEGIN DECLARE SECTION; char caBrc[BRC_LEN +1]; /* 机构代码 */ char acBeginDate[DATE_LEN + 1 ]; /* 起始日期 */ char acEndDate[DATE_LEN + 1 ]; /* 终止日期 */ char acFlag[FLAG1_LEN + 1]; /* 没收、归还标志 */ char acWhrStr[ 512 ]; EXEC SQL END DECLARE SECTION; char acRetoIdType[BIT3_LEN + 1]; /* 归还人证件类型 */ char acHoldReaSon[FLAG1_LEN + 1]; /* 原因 */ char acBankname[ 41 ]; char acBuffer[7]; char acBuffer1[13]; char acBuffer2[11]; FILE *fp,*fmtfp; /* 文件指针 */ char acSelStr[ 301 ]; char acWhrStr1[ 512 ]; char acWhrStr2[ 512 ]; char acWhrStr3[ 512 ]; char acWhrStr4[ 512 ]; char acWhrStr5[ 512 ]; char acWhrStr6[ 512 ]; char acWhrStr7[ 512 ]; char acWhrStr8[ 512 ]; char acStr1[ 141 ]; int iLineCount = 0 ; int i, iPage, iLine ; char acFileName[ 101 ]; char acFmtFile[ 101 ]; char acPrtData[ 4096 ]; struct prtdata stPrtdata; struct cmsholdm stCmsHoldM; /* 卡没收归还登记簿 */ memset( acBuffer, 0x00, sizeof( acBuffer ) ); memset( caBrc, 0x00, sizeof( caBrc ) ); memset( acBuffer1, 0x00, sizeof( acBuffer1 ) ); memset( acBeginDate, 0x00, sizeof( acBeginDate )); memset( acEndDate, 0x00, sizeof( acEndDate ) ); memset( acFlag, 0x00, sizeof( acFlag ) ); memset( acHoldReaSon, 0x00, sizeof( acHoldReaSon ) ); memset( acSelStr, 0x00, sizeof( acSelStr ) ); memset( acWhrStr, 0x00, sizeof( acWhrStr ) ); memset( acWhrStr1, 0x00, sizeof( acWhrStr1 ) ); memset( acWhrStr2, 0x00, sizeof( acWhrStr2 ) ); memset( acWhrStr3, 0x00, sizeof( acWhrStr3 ) ); memset( acWhrStr4, 0x00, sizeof( acWhrStr4 ) ); memset( acWhrStr5, 0x00, sizeof( acWhrStr5 ) ); memset( acWhrStr6, 0x00, sizeof( acWhrStr6 ) ); memset( acWhrStr7, 0x00, sizeof( acWhrStr7 ) ); memset( acWhrStr8, 0x00, sizeof( acWhrStr8 ) ); memset( acStr1, 0x00, sizeof( acStr1 ) ); memset( &stCmsHoldM, 0x00, sizeof( struct cmsholdm )); memset( acBankname, 0x00, sizeof(acBankname)); if ( pubGetBaseInfo("BANKNAME", acBankname ) ) FUNCERR_PRO /* 取数据字典 */ getstring( "Brc1", caBrc ); getstring( "BeginDate1", acBeginDate ); getstring( "EndDate1", acEndDate ); getstring( "Flag1", acFlag ); sprintf( g_acTrcMsg,"BeginDate[%s]EndDate[%s][%s]", acBeginDate,acEndDate,acFlag ); TRCLOG4 /*检查交易机构是否为中心机构,如果是,则申请机构可以为空,否则当申请机构为空时,将交易机构付给申请机构 */ if (!strcmp( pstPubcom->acBrcType, BRCTYPE_SITE)) /* 营业网点 */ { if (strlen(caBrc) == 0) { strcpy( caBrc, pstPubcom->acBrc ); } if (strcmp( pstPubcom->acBrc, caBrc)) { strcpy( g_acRspCode, "CMS214" ); pubCrtRspInfo( ); ERRLOG goto Exit; } } fp = (FILE *)BeginFile( pstPubcom, NULL ); if ( fp == NULL ) { ERRLOG return FAILED ; } sprintf( acFmtFile, "%s/fmt/cms652.fmt", getenv("HOME") ); sprintf( g_acFmtFile, acFmtFile ); if( ( fmtfp=fopen( acFmtFile,"r" ) ) == NULL ) { strcpy( g_acTrcMsg, acFmtFile ); TRCLOG2 strcpy( g_acRspCode, "CMS1B0" ); sprintf( g_acRspMsg, "打开格式文件[%s]错", acFmtFile ); ERRLOG goto Exit; } iLine = 0 ; iPage = 1 ; if ( strlen ( acFlag ) > 0 ) { sprintf( acWhrStr, " select * from cmsholdm where 1=1"); if ( acFlag[0] == '0' ) { strcat( acWhrStr, " and retflag='0' " ); if ( strlen ( caBrc ) > 0 ) { sprintf( acWhrStr+strlen(acWhrStr), " and holdbrc = '%s'", caBrc ); } if ( strcmp ( acBeginDate, INITDATE ) ) { sprintf( acWhrStr+strlen(acWhrStr), " and holddate >= '%s'", acBeginDate ); } if ( strcmp ( acEndDate, INITDATE ) ) { sprintf( acWhrStr+strlen(acWhrStr), " and holddate <= '%s'", acEndDate ); } } if ( acFlag[0] == '1' ) { strcat( acWhrStr, " and retflag='1' " ); if ( strlen ( caBrc ) > 0 ) { sprintf( acWhrStr+strlen(acWhrStr), " and retbrc = '%s'", caBrc ); } if ( strcmp ( acBeginDate, INITDATE ) ) { sprintf( acWhrStr+strlen(acWhrStr), " and retdate >= '%s'", acBeginDate ); } if ( strcmp ( acEndDate, INITDATE ) ) { sprintf( acWhrStr+strlen(acWhrStr), " and retdate <= '%s'", acEndDate ); } } sprintf( acWhrStr+strlen(acWhrStr), " and retflag = '%s'", acFlag ); sprintf( acWhrStr+strlen(acWhrStr), " ORDER BY holdbrc,retbrc,holddate,cardno, serseqno DESC" ); } else { sprintf( acWhrStr1, " select * from cmsholdm where 1=1"); if ( strlen ( caBrc ) > 0 ) { sprintf( acWhrStr1+strlen(acWhrStr1), " and (holdbrc = '%s' or retbrc='%s')", caBrc, caBrc ); } if ( strcmp ( acBeginDate, INITDATE ) ) { sprintf( acWhrStr2, " holddate >= '%s'", acBeginDate ); sprintf( acWhrStr3, " retdate >= '%s'", acBeginDate ); } if ( strcmp ( acEndDate, INITDATE ) ) { sprintf( acWhrStr4, " holddate <= '%s'", acEndDate ); sprintf( acWhrStr5, " retdate <= '%s'", acEndDate ); } sprintf( acWhrStr6, " ORDER BY holdbrc,retbrc,holddate,cardno, serseqno DESC" ); if (( strcmp ( acBeginDate, INITDATE ) ) && ( !strcmp ( acEndDate, INITDATE ) )) { sprintf( acWhrStr, "%s and ( %s or %s ) %s",acWhrStr1,acWhrStr2,acWhrStr3,acWhrStr6 ); } if (( !strcmp ( acBeginDate, INITDATE ) ) && ( strcmp ( acEndDate, INITDATE ) )) { sprintf( acWhrStr, "%s and ( %s or %s ) %s",acWhrStr1,acWhrStr4,acWhrStr5,acWhrStr6); } if (( strcmp ( acBeginDate, INITDATE ) ) && ( strcmp ( acEndDate, INITDATE ) )) { sprintf( acWhrStr, "%s and (( %s and %s ) or ( %s and %s )) %s",acWhrStr1, acWhrStr2,acWhrStr4,acWhrStr3,acWhrStr5,acWhrStr6 ); } if (( !strcmp ( acBeginDate, INITDATE ) ) && ( !strcmp ( acEndDate, INITDATE ) )) { sprintf( acWhrStr, "%s %s",acWhrStr1,acWhrStr6 ); } } strcpy( g_acTrcMsg, acWhrStr ); TRCLOG4 EXEC SQL PREPARE pre_1 FROM :acWhrStr; if ( SQLCODE ) { strcpy( g_acRspCode, "CMS1A7" ); pubCrtRspInfo( SQLCODE ); ERRLOG goto Exit ; } EXEC SQL DECLARE hold_cur CURSOR FOR pre_1; if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS110" ); pubCrtRspInfo("cmsholdm",SQLCODE ); ERRLOG goto Exit ; } SQLOPENCUR(hold_cur,"hold_cur") if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS111" ); pubCrtRspInfo("cmsholdm",SQLCODE ); ERRLOG goto Exit ; } for( ; ; ) { memset( &stPrtdata, 0x00, sizeof( struct prtdata ) ); pubInitCmspcdreg(); EXEC SQL FETCH hold_cur into R_CMSHOLDM; if( SQLCODE == SQLNOTFOUND ) break ; sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS112" ); pubCrtRspInfo("cmsholdm",SQLCODE ); ERRLOG SQLCLOSECUR(hold_cur,"hold_cur") goto Exit ; } sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 /* 转换归还标志 */ strcpy ( acFlag, cmsholdm_retflag ); switch ( acFlag[ BIT1_LEN ] ) { case NORETURN: strcpy( acBuffer , "未归还" ); break; case RETURNED: strcpy( acBuffer , "归还" ); break; default: acBuffer[ BIT1_LEN ] = acFlag[ BIT1_LEN ]; break; } /* 转换原因 */ strcpy ( acHoldReaSon, cmsholdm_holdreason ); switch ( acHoldReaSon[ BIT1_LEN ] ) { case PINWRONG: strcpy( acBuffer1 , "pin错没收" ); break; case ATMHOLD: strcpy( acBuffer1 , "atm吞卡没收" ); break; case BLANKHOLD: strcpy( acBuffer1 , "黑名单吞卡" ); break; case AGSTRULE: strcpy( acBuffer1 , "违反规定没收" ); break; default: acBuffer1[ BIT1_LEN ] = acHoldReaSon[ BIT1_LEN ]; break; } sprintf( g_acTrcMsg,"SQLCODE[%s][%s]", acBuffer, acBuffer1 ); TRCLOG4 /* 转换归还人证件类型 */ strcpy ( acRetoIdType, cmsholdm_retoidtype ); TransMemo( "0001" , acRetoIdType , acBuffer2); strpack ( cmsholdm_retobrname ); strpack ( cmsholdm_retoname ); strcpy ( stPrtdata.acCardNo, cmsholdm_cardno ); strcpy ( stPrtdata.acHoldDate, cmsholdm_holddate ); strcpy ( stPrtdata.acRetFlag, acBuffer ); strcpy ( stPrtdata.acHoldBrc, cmsholdm_holdbrc ); strcpy ( stPrtdata.acRetBrc, cmsholdm_retbrc ); strcpy ( stPrtdata.acRetDate, cmsholdm_retdate ); strncpy( stPrtdata.acRetoName, cmsholdm_retoname, 30 ); strcpy ( stPrtdata.acRetoIdType, acBuffer2 ); strcpy ( stPrtdata.acRetoIdNo, cmsholdm_retoidcode ); strcpy ( stPrtdata.acHoldReaSon, acBuffer1 ); sprintf( g_acTrcMsg, "acCardNo[%s],acHoldDate[%s],acRetFlag[%s],acHoldBrc[%s],acRetBrc[%s]," "acRetDate[%s],acRetoName[%s],acHoldReaSon[%s]", stPrtdata.acCardNo, stPrtdata.acHoldDate, stPrtdata.acRetFlag, stPrtdata.acHoldBrc, stPrtdata.acRetBrc, stPrtdata.acRetDate, cmsholdm_retoname, stPrtdata.acHoldReaSon); TRCLOG4 if( iLine == 0 ) { PRTHEAD } PRTBODY if( iLine % OVERPAGE == 0 ) { PRTFOOT } sprintf( g_acTrcMsg, "%s|%s|%s|%s|%s|%s|%s|%s|%s", \ stPrtdata.acCardNo, stPrtdata.acHoldDate, \ stPrtdata.acRetFlag, stPrtdata.acHoldBrc, \ stPrtdata.acRetDate, \ stPrtdata.acRetBrc, \ stPrtdata.acRetoName, stPrtdata.acHoldReaSon ); \ TRCLOG4 } SQLCLOSECUR(hold_cur,"hold_cur") if( iLine < OVERPAGE && iLine != 0 ) { PRTFOOT } if( iLineCount == 0 ) { strcpy( g_acRspCode, "CMS113" ); sprintf( g_acRspMsg, "无满足条件的纪录!" ); ERRLOG goto Exit ; } Exit: fclose( fmtfp ); fclose( fp ); if( !strcmp( g_acRspCode, RSP_OK ) ) { SetInqFormid(pstPubcom, "") ; return SUCCESS; } else return FAILED ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -