📄 svrf314.ec
字号:
#include "../incl/serverpub.h"
$include sqlca;
#define LEN 3000 //记录行
/********************************************
网点日终轧帐
日期:2003/03/19
参数:操作网点,操作员号,起始日期,终止日期
********************************************/
$struct sSub
{
char subject[7];
int opennum;
int closenum;
double loan_amt;
double repay_amt;
double repay_int;
};
/***************************
查找科目号在结构中的位置
入参:科目,结构数组
出参:位置号(0-)
***************************/
int FindSub(char *pcSub,struct sSub *psSub)
{
int i,iRet;
struct sSub *psOne=NULL;
iRet=-1;
psOne=(struct sSub*)psSub;
for(i=0;i<LEN && strlen(psOne->subject)>0;i++,psOne++)
{
if(atoi(pcSub)==atoi(psOne->subject))
{
iRet=i;
break;
}
}
if(iRet==-1)
{/*科目不存在时自动增加*/
WriteTest("i=[%d],SUBJECT=[%s]\n",i,pcSub);
iRet=i;
strcpy(psOne->subject,pcSub);
psOne->opennum=0;
psOne->closenum=0;
psOne->repay_amt=0.0;
psOne->repay_amt=0.0;
psOne->repay_int=0.0;
}
return iRet;
}
SvrF314(int argc,char *argv[])
{
$char cMinDate[9],cBankNo[11],cSubject[5];
$char cMaxDate[9],cWorkDate[9],cWorkYM[7],e_cSql[800];
int i,iSub,viYear,viMonth;
$char e_bef_sub[7],e_aft_sub[7];
$char e_aft_form[2],e_attribute[3];
$double e_interest,e_corpus,e_bal;
$double vdBeginSum,vdEndSum;
$int viCount,viBeginNum,viEndNum;
char cTemp[80],cFileName[80],cCon[200],cOper[5];
$struct sSub sRows[LEN];
FILE *fp;
#ifdef QDCS
for(i=0;i<argc;i++)
WriteTest("argv[%d]:%s\n",i,argv[i]);
#endif
strcpy(cBankNo,argv[0]);
strcpy(cSubject,argv[1]);
strcpy(cOper,argv[2]);
strcpy(cMinDate,argv[3]);
strcpy(cMaxDate,argv[4]);
strcpy(cWorkDate,argv[5]);
ClipStr(cBankNo);
ClipStr(cSubject);
ClipStr(cOper);
ClipStr(cMinDate);
ClipStr(cMaxDate);
strncpy(cWorkYM,cWorkDate,6);
cWorkYM[6]=0;
$select count(*) into $viCount from sumacct where trade_date[1,6]=$cWorkYM;
if(viCount==0)
{/*取上月数据*/
viMonth=atoi(cWorkYM+4);
cWorkYM[4]=0;
viYear=atoi(cWorkYM);
viMonth--;
if(viMonth<=0)
{
viMonth+=12;
viYear--;
}
sprintf(cWorkYM,"%04d%02d",viYear,viMonth);
}
/*初始化结构数据*/
memset(sRows,0,sizeof(sRows));
strcpy(sRows[0].subject,"1231 ");
strcpy(sRows[1].subject,"1232 ");
strcpy(sRows[2].subject,"1233 ");
strcpy(sRows[3].subject,"1241 ");
strcpy(sRows[4].subject,"1242 ");
strcpy(sRows[5].subject,"1243 ");
strcpy(sRows[6].subject,"1246 ");
strcpy(sRows[7].subject,"1247 ");
strcpy(sRows[8].subject,"1248 ");
strcpy(sRows[9].subject,"1251 ");
strcpy(sRows[10].subject,"1252 ");
strcpy(sRows[11].subject,"1253 ");
strcpy(sRows[12].subject,"1255 ");
strcpy(sRows[13].subject,"1256 ");
strcpy(sRows[14].subject,"1257 ");
strcpy(sRows[15].subject,"1261 ");
strcpy(sRows[16].subject,"1262 ");
strcpy(sRows[17].subject,"1263 ");
strcpy(sRows[18].subject,"1266 ");
strcpy(sRows[19].subject,"1267 ");
strcpy(sRows[20].subject,"1268 ");
strcpy(sRows[21].subject,"1271 ");
strcpy(sRows[22].subject,"1272 ");
strcpy(sRows[23].subject,"1273 ");
strcpy(sRows[24].subject,"1276 ");
strcpy(sRows[25].subject,"1277 ");
strcpy(sRows[26].subject,"1278 ");
strcpy(sRows[27].subject,"1281 ");
strcpy(sRows[28].subject,"1282 ");
strcpy(sRows[29].subject,"1283 ");
strcpy(sRows[30].subject,"1286 ");
strcpy(sRows[31].subject,"1287 ");
strcpy(sRows[32].subject,"1288 ");
sprintf(e_cSql,"select bef_sub,aft_sub,attribute,interest,corpus,banlance,aft_form");
sprintf(cCon,"where attribute in ('11','12','13','14') and state='0'");
if((strlen(cBankNo)>0)&&(strcmp(cBankNo,"002262001 ")!=0))
{/*有网点查询条件*/
sprintf(cTemp," and bank_no='%s'",cBankNo);
strcat(cCon,cTemp);
}
if(strlen(cSubject))
{/*有科目查询条件*/
sprintf(cTemp," and (bef_sub='%s' or aft_sub='%s')",cSubject,cSubject);
strcat(cCon,cTemp);
}
if(strlen(cOper))
{/*有操作员查询条件*/
sprintf(cTemp," and credit_man='%s'",cOper);
strcat(cCon,cTemp);
}
if((strlen(cMinDate)>0)&&(strcmp(cMinDate,cWorkDate)!=0))
{/*查询历史信息*/
sprintf(cTemp," and trade_date>='%s' and trade_date<='%s'",
cMinDate,cMaxDate);
strcat(cCon,cTemp);
strcat(e_cSql," from trade_hislog ");
strcat(e_cSql,cCon);
}
else
{/*查询当天信息*/
strcat(e_cSql," from trade_log ");
strcat(e_cSql,cCon);
}
$prepare SUBJECT from $e_cSql;
if(sqlca.sqlcode)
{
WriteTest("sqlca.sqlcode=%d,LINE=%d\nSQL=%s\n",sqlca.sqlcode,__LINE__,e_cSql);
CreateStruct("返回码","020");
return 0;
}
$declare s_ur cursor for SUBJECT;
if(sqlca.sqlcode)
{
WriteTest("sqlca.sqlcode=%d,LINE=%d\nSQL=%s\n",sqlca.sqlcode,__LINE__,e_cSql);
CreateStruct("返回码","020");
return 0;
}
$open s_ur;
if(sqlca.sqlcode)
{
WriteTest("sqlca.sqlcode=%d,LINE=%d\n",sqlca.sqlcode,__LINE__);
CreateStruct("返回码","020");
return 0;
}
$fetch s_ur into $e_bef_sub,$e_aft_sub,$e_attribute,
$e_interest,$e_corpus,$e_bal,$e_aft_form;
if(sqlca.sqlcode<0)
{
WriteTest("sqlca.sqlcode=%d,LINE=%d\n",sqlca.sqlcode,__LINE__);
CreateStruct("返回码","020");
return 0;
}
FindKey("地区号");strcpy(cTemp,sCurrent->cValue);
FindKey("前置机号");strcat(cTemp,sCurrent->cValue);
FindKey("储蓄所号");strcat(cTemp,sCurrent->cValue);
FindKey("操作员号");strcat(cTemp,sCurrent->cValue);
sprintf(cFileName,"%s/download/%s",getenv("HOME"),cTemp);
if (( fp=fopen(cFileName,"w"))==NULL)
{
WriteTest("[%s]: open file %s error \n",__FILE__,cFileName);
CreateStruct("返回码","020");
return 0;
}
while(sqlca.sqlcode==0)
{
e_bef_sub[4]=0;
e_aft_sub[4]=0;
if(e_interest==NULL) e_interest=0.0;
if(e_corpus==NULL) e_corpus=0.0;
WriteTest("attri[%s]sub[%s][%s]amt[%.2f][%.2f][%.2f]\n",
e_attribute,e_bef_sub,e_aft_sub,e_corpus,e_interest,e_bal,e_aft_form);
switch(atoi(e_attribute))
{
case 11:
iSub=FindSub(e_aft_sub,sRows);
sRows[iSub].opennum++;
sRows[iSub].loan_amt+=e_corpus;
break;
case 12:
case 14:
iSub=FindSub(e_bef_sub,sRows);
sRows[iSub].repay_amt+=e_corpus;
sRows[iSub].repay_int+=e_interest;
if(e_aft_form[0]=='5')
sRows[iSub].closenum++;
break;
case 13:
iSub=FindSub(e_bef_sub,sRows);
sRows[iSub].repay_amt+=e_bal;
iSub=FindSub(e_aft_sub,sRows);
sRows[iSub].loan_amt+=e_bal;
break;
}
$fetch s_ur into $e_bef_sub,$e_aft_sub,$e_attribute,
$e_interest,$e_corpus,$e_bal,$e_aft_form;
}//end while
$close s_ur;
$free s_ur;
CreateStruct("文件标志","1");
fprintf(fp,"科目号,期初户数,期初余额,新增户数,结清户数,借方金额,贷方金额,利息,期末户数,期末余额\n");
for(i=0;i<LEN;i++)
{
if(strlen(sRows[i].subject)==0) break;
if((strlen(cSubject)==0)||(strncmp(cSubject,sRows[i].subject,4)))
{
/*查询期初值*/
$select count(*),sum(loan_num),sum(loan_bal)
into $viCount,$viBeginNum,$vdBeginSum
from sumacct
where trade_date[1,6]=$cWorkYM
and bank_no=$cBankNo
and subject=$sRows[i].subject;
if((sqlca.sqlcode!=0)||(viCount==0))
{
WriteTest("svrf314: select [%s] sumacct err[%ld]\n",
sRows[i].subject,sqlca.sqlcode);
viBeginNum=0;
vdBeginSum=0;
}
/*计算期末值*/
viEndNum=viBeginNum+sRows[i].opennum-sRows[i].closenum;
vdEndSum=vdBeginSum+sRows[i].loan_amt-sRows[i].repay_amt;
fprintf(fp,"%s,%d,%.2f,%d,%d,%.2f,%.2f,%.2f,%d,%.2f\n",
sRows[i].subject,viBeginNum,vdBeginSum,
sRows[i].opennum,sRows[i].closenum,
sRows[i].loan_amt,sRows[i].repay_amt,
sRows[i].repay_int,viEndNum,vdEndSum);
}
}
fclose(fp);
CreateStruct("返回码","000");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -