📄 cms025.sqc
字号:
/******************************************************************** ** 源码文件名称 : cms025.SQC ** 所属子系统 : CMS ** 当前文件版本 : 4.0.0.0 ** 作者 : guoyun ** 版本创建日期 : 2004/10/25 ** 功能描述 : 按卡号、币种和产品代码获取卡账户信息子交易 ** 修改记录 : ** 修改人 修改日期 修改日期*********************************************************************/#include "code.h"#include "attrdef.h"#include "sysdef.h"#include "pubcom.h"#include "cmscode.h"#include "cmsacctm.h"#include "pubinq.h"#include <stdio.h>#include <fcntl.h>EXEC SQL INCLUDE SQLCA;int cmsGetCardAcctPrdPro( PUBCOM *pstPubcom ){ /* 定义宿主变量 */ EXEC SQL BEGIN DECLARE SECTION; char acPrdName[BIT41_LEN + 1]; char acDecName[BIT41_LEN + 1]; char acChName[BIT17_LEN + 1]; EXEC SQL END DECLARE SECTION; /*定义局部变量*/ FILE *fp; int iRtn; /* 函数返回值 */ int iNumx; /* 数组计数器 */ int iNumy; /* 数组计数器 */ int iCount=0; /* 计数器 */ char acCardNo[ CARDNO_LEN + 1 ]; /* 卡号 */ char acCcy[ CCY_LEN + 1 ]; /* 币种 */ char acPrdCode[ PRDCODE_LEN + 1 ]; /* 产品代码 */ char acBuf[ CONDITION_LEN + 1 ]; /* 临时存储区 */ char acTableName[PRDCODE_LEN + 1]; /* 表名称 */ char acFileName[FILENAME_LEN + 1]; /* 文件名称 */ struct cmsacctm stCmsAcctM; /* 卡帐户对照表 */ BASESUBACCTINFO stAcctInfo; /* 帐户信息 */ strcpy( g_acTrcMsg, "子交易: 按卡号、币种和产品代码获取卡账户信息子交易.." ); TRCLOG4 /* 初始化 */ memset( &stCmsAcctM, 0x00, sizeof( struct cmsacctm ) ); memset( &stAcctInfo, 0x00, sizeof( BASESUBACCTINFO ) ); memset( acCardNo, 0x00, sizeof( acCardNo ) ); memset( acCcy, 0x00, sizeof( acCcy ) ); memset( acPrdCode, 0x00, sizeof( acPrdCode ) ); /* 取数据字典值 */ getstring( "CardNo", acCardNo ); getstring( "Ccy1", acCcy ); getstring( "PrdCode", acPrdCode ); sprintf( g_acTrcMsg,"CardNo[%s]Ccy1[%s]PrdCode[%s]",acCardNo,acCcy,acPrdCode); TRCLOG3 strcpy( acTableName, "cms025" ); sprintf(acFileName, "%s%s%08ld", acTableName, pstPubcom->acTranDate8, pstPubcom->lSerSeqNo); fp = (FILE *)BeginFile( pstPubcom, acFileName ); if ( fp == NULL ) { strcpy( g_acRspMsg, "打开文件句柄出错!" ); pubCrtRspInfo( ); ERRLOG goto Exit ; } /*组织查询字典*/ if (GetInqDict( fp , "210006" )) { ERRLOG goto Exit ; } /* 获取卡帐户对照表信息 */ strcpy( stCmsAcctM.cardno, acCardNo); strcpy( stCmsAcctM.ccy, acCcy); strcpy( stCmsAcctM.prdcod, acPrdCode); stCmsAcctM.status[ BIT1_LEN ] = NORMAL_STS; pubStoVCmsacctm( &stCmsAcctM ); EXEC SQL DECLARE acc_l_cur CURSOR FOR SELECT * FROM CMSACCTM WHERE cardno = :cmsacctm_cardno AND status = :cmsacctm_status AND ccy = :cmsacctm_ccy AND prdcod = :cmsacctm_prdcod ORDER BY acctseqno; /* 定义游标出错 if ( SQLCODE ) { strcpy( g_acRspCode, "CMS110" ); pubCrtRspInfo( "cmsacctm", SQLCODE ); ERRLOG goto Exit; }*/ SQLOPENCUR(acc_l_cur,"acc_l_cur") /* 打开游表出错 */ if ( SQLCODE ) { strcpy( g_acRspCode, "CMS111" ); pubCrtRspInfo( "cmsacctm", SQLCODE ); ERRLOG goto Exit ; } while ( TRUE ) { pubInitCmsacctm(); EXEC SQL FETCH acc_l_cur INTO R_CMSACCTM ; /* 取游表出错 */ if ( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy( g_acRspCode, "CMS112" ); pubCrtRspInfo( "cmsacctm", SQLCODE ); ERRLOG SQLCLOSECUR(acc_l_cur,"acc_l_cur") goto Exit ; } /* 记录不存在 */ else if ( SQLCODE == SQLNOTFOUND ) break; /* 记录存在 */ pubVtoSCmsacctm( &stCmsAcctM ); /* 取币种名称 */ EXEC SQL SELECT chname INTO :acChName FROM pubcurrencyinfo WHERE ccy = :cmsacctm_ccy; if( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy(g_acRspCode,"CMS112"); pubCrtRspInfo("dpssaveprdinfo",SQLCODE); ERRLOG SQLCLOSECUR(acc_l_cur,"acc_l_cur") goto Exit; } /* 取业务种类名称 */ EXEC SQL SELECT description INTO :acDecName FROM cmsbussprd WHERE busskind = :cmsacctm_busskind; if( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy(g_acRspCode,"CMS112"); pubCrtRspInfo("cmsbussprd",SQLCODE); ERRLOG SQLCLOSECUR(acc_l_cur,"acc_l_cur") goto Exit; } /* 根据产品代码取产品名称 */ pubInitDpssaveprdinfo(); pubInitDpstermprdinfo(); EXEC SQL SELECT prdname INTO :acPrdName FROM dpssaveprdinfo WHERE prdcode = :cmsacctm_prdcod; if( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy(g_acRspCode,"CMS112"); pubCrtRspInfo("dpssaveprdinfo",SQLCODE); ERRLOG SQLCLOSECUR(acc_l_cur,"acc_l_cur") goto Exit; } if ( SQLCODE == SQLNOTFOUND ) { EXEC SQL SELECT prdname INTO :acPrdName FROM dpstermprdinfo WHERE prdcode = :cmsacctm_prdcod; if( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy(g_acRspCode,"CMS112"); pubCrtRspInfo("dpstermprdinfo",SQLCODE); ERRLOG SQLCLOSECUR(acc_l_cur,"acc_l_cur") goto Exit; } } /* 按客户账号和款项代码获取账户信息 DPS API */ sprintf( g_acTrcMsg,"stCmsAcctM.acctno[%s]stCmsAcctM.subacct[%s]stCmsAcctM.ccy[%s]",stCmsAcctM.acctno,stCmsAcctM.subacct,stCmsAcctM.ccy); TRCLOG3 iRtn = InqBaseSubAcct( pstPubcom, stCmsAcctM.acctno, stCmsAcctM.subacct, stCmsAcctM.ccy, "1100000000000000", "0","0", &stAcctInfo); if (iRtn) { strcpy( g_acRspCode, RSP_OK ); } /* 拼写文件 */ fprintf( fp, "\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~%.2lf~%.2lf\n", stCmsAcctM.acctseqno, /* 卡内帐户序号 */ stCmsAcctM.busskind, /* 业务种类 */ acDecName, /* 业务种类描述 */ stCmsAcctM.ccy, /* 币种 */ acChName, /* 币种名称 */ stCmsAcctM.prdcod, /* 产品代码 */ acPrdName, /* 产品名称 */ stCmsAcctM.acctno, /* 帐号 */ stCmsAcctM.subacct, /* 款项代码 */ stCmsAcctM.accowner, /* 帐户属主 */ stCmsAcctM.cardbookflag,/* 卡折标志 */ stAcctInfo.dAvailBal, /* 可用余额 */ stAcctInfo.dBal); /* 余额 */ iCount ++; } SQLCLOSECUR(acc_l_cur,"acc_l_cur") EndFile( fp ); if (iCount == 0) { strcpy( g_acRspCode, "CMS1B7" ); pubCrtRspInfo( "卡内帐户"); ERRLOG return FAILED; } /* 出口赋值 */Exit: EndFile( fp ); if( !strcmp( g_acRspCode, RSP_OK ) ) { SetInqFormid(pstPubcom, "216019") ; sprintf( g_acTrcMsg,"子交易: 按卡号、币种和产品代码获取卡账户信息子交易正常结束"); TRCLOG4 return SUCCESS; } else { sprintf( g_acTrcMsg,"子交易: 按卡号、币种和产品代码获取卡账户信息子交易失败"); TRCLOG4 return FAILED ; } /* 子交易出口 SetInqFormid(pstPubcom, "210006") ; setpubstring("FileFlag","2"); setpubstring("FileName",acFileName); strcpy( g_acTrcMsg, "子交易: 按卡号、币种和产品代码获取卡账户信息子交易结束.." ); TRCLOG4 strcpy( g_acRspCode, RSP_OK ); return SUCCESS;*/}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -