📄 mtestfee.c
字号:
/* MGETFEE(MQRYFEE):取费用(或查询费用)(该文件有改动需要同步更新mqryfee.cpp,完全一致,只有函数名不相同) Input : 序号 说明 长度 备注 1 客户编号 10 2 查询类别 1 0-只取该客户编号费用1-按该户合同号取费用 3 起始日期 8 YYYYMMDD,空白--不限制 4 截止日期 8 YYYYMMDD,空白--不限制 5 电费类别 2 00-全部(查询使用) 11-所有应收(收费使用) 6 强制标志 2 00--不返回费用明细数据包;且超过阈值也不返回费用记录结果集,但返回记录数; 10--返回费用明细数据包;但超过阈值只返回记录数; 01-强制返回费用记录结果集,不返回费用明细数据; 11-强制返回所有结果 (缴费时默认给11,查询时默认给00) Output: 1 返回状态(可以转换成int型) 8 >0-返回的费用记录数 =0-没有费用记录 <0-访问失败 -100-该客户编号不存在 2 实际的结果记录数n 4 如不等于上面的值,则认为查询结果太多 3 费用明细记录数m 4 用于校验 4 费用记录结果集 226 * n 将各费用记录以一定格式拼成的字符串,格式:附 5 费用明细数据包 37 * m 结果集的格式: 电费流水 CHAR(15) 费用月份 CHAR(6) YYYYMM 电费总额 CHAR(13) ##########.## 违约金额 CHAR(13) ##########.## 户名 CHAR(40) 用电地址 CHAR(80) 表号 CHAR(20) 平起码 CHAR(10) #######.## 平止码 CHAR(10) #######.## 客户编号 CHAR(10) 抄表顺序 CHAR(6) 明细结果的格式: 电费流水 CHAR(15) 项目代码 CHAR(2) 将电费中的各个项目进行编码,每一项都代表一个实际的名称 项目值 CHAR(20) 可以为金额、数量、说明等*/#include "public.h"#include "feeid.h"#define SIZE_OF_MAIN 223 /*主结构的大小*/#define SIZE_OF_DETAIL 37 /*明细结构的大小*/#define MAX_RESULT 100 /*最大的结果数,如不是强制处理,则大于该数则不处理*/#define MAX_DETAIL_ONE 40 /*每条记录的最大明细数*/#ifdef __cplusplusextern "C"#endifvoid#ifdef MW_CICSmain(MW_SVCINFO * transb)#endif#ifdef MW_TUXEDOMTESTFEE(MW_SVCINFO * transb)#endif{ /*定义输入参数*/ char szKHBH[11] = ""; char szDateFrom[9] = ""; char szDateTo[9] = ""; int iFlag = 0; int iFeeFlag = 0; int iForceFlag = 0; /*定义输出参数*/ int iResultCount = 0; /*结果记录数*/ int iDetailCount = 0; /*明细记录数*/char szKHBHTmp[11] = "";char szTemp1[100] = "";char szPara1[13]="";char szPara2[13]=""; /*定义临时变量*/ void *ppVar[100]; unsigned char pParam[] = TYPE_CHAR TYPE_CHAR TYPE_CHAR TYPE_INT TYPE_INT TYPE_INT TYPE_CHAR TYPE_CHAR; int nStatus = 0; int i,j; BOOL bRet; CMiddleWare mwMidWare; char *szInBuf; char *szOutBuf; char szTemp[1000]= ""; int iReturn; int nBufferSize = 0; /*输出的Buffer大小*/ MW_Init(&mwMidWare,transb); szInBuf = MW_GetInBuf(&mwMidWare); if (szInBuf == NULL) { gf_Return(&mwMidWare,-1,"没有输入参数!"); return; }/* MW_Trace("OK1");*/ /*取输入参数*/ strncpy(szKHBH,szInBuf,10); szKHBH[10] = '\0'; strncpy(szTemp,szInBuf + 10,1); szTemp[1] = '\0'; iFlag = atoi(szTemp); strncpy(szDateFrom,szInBuf + 11,8); szDateFrom[8] = '\0'; strncpy(szDateTo ,szInBuf + 11 + 8,8); szDateTo[8] = '\0'; strncpy(szTemp,szInBuf + 11 + 8 + 8,2); szTemp[2] = '\0'; iFeeFlag = atoi(szTemp); strncpy(szTemp,szInBuf + 11 + 8 + 8 + 2,2); szTemp[2] = '\0'; iForceFlag = atoi(szTemp); /*建费用临时表*/ /* 输入参数:客户编号;起始日期;截止日期; 根据合同号:0-否,1-是; 电费类别:0-全部(欠费表与历史表中), 11-所有应收应退, 21-所有欠费(超过收费期限), 22-当年欠费, 23-历欠(非当年欠费) 输出参数:查询结果:0-正常结束, -100-客户编号不存在或重复@ac_khbh VARCHAR(10),@act_from CHAR(8),@act_to CHAR(8),@ai_gjhth INT,@ai_dflb INT,@ai_cxjg INT output */ iReturn=0; sprintf(szPara1,"%13s","123456789012"); sprintf(szPara2,"%13s","123456789012"); ppVar[0] = &iReturn; ppVar[1] = szPara1; ppVar[2] = szPara2; /*执行取费用存储过程*/ bRet = DB_ExecuteStoredProcedureWithResult(&theDatabase, "Up_c_test_fee", &nStatus, ppVar,1, pParam,szKHBH,szDateFrom,szDateTo,iFlag,iFeeFlag,0,"xxxxxxxx","yyyyyyyy"); if(!bRet || nStatus) //失败 { gf_Return(&mwMidWare,-1,"APP Error:call procedure Up_c_test_fee failure!"); return; } /*根据数据量分配内存空间*/ iResultCount=2; iForceFlag = 0; if (iForceFlag == 0) { if (iResultCount <= MAX_RESULT) nBufferSize = SIZE_OF_MAIN * iResultCount; } if (iForceFlag == 10) { nBufferSize = SIZE_OF_MAIN * iResultCount; if (iResultCount <= MAX_RESULT) nBufferSize += SIZE_OF_DETAIL * iResultCount * MAX_DETAIL_ONE; } if (iForceFlag == 1) { nBufferSize = SIZE_OF_MAIN * iResultCount; } if (iForceFlag == 11) { nBufferSize = SIZE_OF_MAIN * iResultCount + SIZE_OF_DETAIL * iResultCount * MAX_DETAIL_ONE; } MW_AllocateString(&mwMidWare,nBufferSize + 40); /*最大设置32K的空间*/ szOutBuf = MW_GetOutBuf(&mwMidWare); if (szOutBuf == NULL) { gf_Return(&mwMidWare,-1,"分配空间失败!"); return; } if (iResultCount > 0 && (iForceFlag > 0 || (iForceFlag ==0 && iResultCount <= MAX_RESULT))) { sprintf(szTemp,"%13s%13s%4d",szPara1,szPara2,iReturn); memcpy(szOutBuf,szTemp,8+26); MW_Trace(szTemp); } gf_Return(&mwMidWare,iResultCount,""); return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -