📄 svrf334.ec
字号:
/*****************************
*联社日终统计函数 *
******************************/
#include <stdio.h>
#include <stdlib.h>
/*最大10户贷款结构*/
$struct {
char id[17];
char name[61];
char lic[21];
double idLoanSum;
double idLoanBal;
double idOverBal;
double idSlackBal;
double idBadBal;
} struMaxL[10];
SvrF334(int argc,char *argv[])
{
$char cProcBank[11],cWorkDate[9],cWorkYM[7];
$char vcTempId[17],vcCustName[61],vcTradeLic[21];
$char vcTradeDate[9],vcBankNo[11];
int i;
$char cSql[256];
double vdIdLoanSum,vdIdLoanBal,vdIdOverBal,vdIdSlackBal,vdIdBadBal;
$double vdNorSum,vdBadSum,vdBankNorSum,vdBankBadSum;
$struct {
char tradedate[9];
char bankno[11];
char custno[17];
char custname[61];
char tradelic[21];
double loansum;
double loanbal;
double overbal;
double slackbal;
double badbal;
double banknorsum;
double bankbadsum;
double subsum;
} struMax;
sprintf(cWorkDate,"%s",argv[0]);
sprintf(cProcBank,"%s",argv[1]);
strncpy(cWorkYM,cWorkDate,6);
cWorkYM[6]=0;
/*删除当月最大10户贷款户*/
$delete from stat_maxloan
where bank_no=$cProcBank and trade_date[1,6]=$cWorkYM;
if(sqlca.sqlcode!=0)
WriteTest("svrf334:delete stat_maxloan err[%ld]\n",sqlca.sqlcode);
/*删除当月最大10户不良贷款户*/
$delete from stat_maxbadloan
where bank_no=$cProcBank and trade_date[1,6]=$cWorkYM;
if(sqlca.sqlcode!=0)
WriteTest("svrf334:delete stat_maxbadloan err[%ld]\n",sqlca.sqlcode);
sprintf(cSql,"select unique trade_date,bank_no,bank_norsum,bank_badsum from stat_maxloan where trade_date[1,6]='%s'",cWorkYM);
$prepare selid from $cSql;
if(sqlca.sqlcode<0)
{
WriteTest("svrf334:prepare[%s] err[%ld]\n",cSql,sqlca.sqlcode);
CreateStruct("返回码","020");
$free selid;
return 0;
}
$declare cursel cursor for selid;
if(sqlca.sqlcode!=0)
{
WriteTest("svrf334:declare err[%ld]\n",sqlca.sqlcode);
CreateStruct("返回码","020");
$free selid;
return 0;
}
$open cursel;
if(sqlca.sqlcode!=0)
{
WriteTest("svrf334:open declare err[%ld]\n",sqlca.sqlcode);
CreateStruct("返回码","020");
$free selid;
return 0;
}
$fetch cursel into $vcTradeDate,$vcBankNo,$vdNorSum,$vdBadSum;
if(sqlca.sqlcode<0)
{
WriteTest("svrf334:fetch err[%ld]\n",sqlca.sqlcode);
CreateStruct("返回码","020");
$close cursel;
$free cursel;
$free selid;
return 0;
}
vdBankNorSum=0;
vdBankBadSum=0;
while(sqlca.sqlcode==0)
{
vdBankNorSum+=vdNorSum;
vdBankBadSum+=vdBadSum;
$fetch cursel into $vcTradeDate,$vcBankNo,$vdNorSum,$vdBadSum;
}
$close cursel;
$free cursel;
$free selid;
for(i=0;i<10;i++)
{
strcpy(struMaxL[i].id," ");
struMaxL[i].idLoanSum=0;
struMaxL[i].idLoanBal=0;
struMaxL[i].idOverBal=0;
struMaxL[i].idSlackBal=0;
struMaxL[i].idBadBal=0;
}
sprintf(cSql,"select * from stat_maxloan order by cust_no");
$prepare selid1 from $cSql;
if(sqlca.sqlcode<0)
{
WriteTest("svrf334:prepare[%s] err[%ld]\n",cSql,sqlca.sqlcode);
CreateStruct("返回码","020");
$free selid1;
return 0;
}
$declare cursel1 cursor for selid1;
if(sqlca.sqlcode!=0)
{
WriteTest("svrf334:declare err[%ld]\n",sqlca.sqlcode);
CreateStruct("返回码","020");
$free selid1;
return 0;
}
$open cursel1;
if(sqlca.sqlcode!=0)
{
WriteTest("svrf334:open declare err[%ld]\n",sqlca.sqlcode);
CreateStruct("返回码","020");
$free selid1;
return 0;
}
$fetch cursel1 into $struMax;
if(sqlca.sqlcode<0)
{
WriteTest("svrf334:fetch err[%ld]\n",sqlca.sqlcode);
CreateStruct("返回码","020");
$close cursel1;
$free cursel1;
$free selid1;
return 0;
}
strcpy(vcTempId," ");
while(sqlca.sqlcode==0)
{
if(strcmp(vcTempId,struMax.custno)==0)
{/*当前记录与上一记录为同一客户*/
vdIdLoanSum+=struMax.loansum;
vdIdLoanBal+=struMax.loanbal;
vdIdOverBal+=struMax.overbal;
vdIdSlackBal+=struMax.slackbal;
vdIdBadBal+=struMax.badbal;
}
else
{
if(strcmp(vcTempId," ")==0)
{
vdIdLoanSum=struMax.loansum;
vdIdLoanBal=struMax.loanbal;
vdIdOverBal=struMax.overbal;
vdIdSlackBal=struMax.slackbal;
vdIdBadBal=struMax.badbal;
strcpy(vcTempId,struMax.custno);
strcpy(vcCustName,struMax.custname);
strcpy(vcTradeLic,struMax.tradelic);
}
else
{/*根据当前贷款户累加值更新10大贷款户*/
MaxLoan(vcTempId,vcCustName,vcTradeLic,vdIdLoanSum,vdIdLoanBal,vdIdOverBal,vdIdSlackBal,vdIdBadBal);
vdIdLoanSum=struMax.loansum;
vdIdLoanBal=struMax.loanbal;
vdIdOverBal=struMax.overbal;
vdIdSlackBal=struMax.slackbal;
vdIdBadBal=struMax.badbal;
strcpy(vcTempId,struMax.custno);
strcpy(vcCustName,struMax.custname);
strcpy(vcTradeLic,struMax.tradelic);
}
}
$fetch cursel1 into $struMax;
}
$close cursel1;
$free cursel1;
$free selid1;
if(strcmp(vcTempId," ")!=0)
MaxLoan(vcTempId,vcCustName,vcTradeLic,vdIdLoanSum,vdIdLoanBal,vdIdOverBal,vdIdSlackBal,vdIdBadBal);
for(i=0;i<10;i++)
{
if(strcmp(struMaxL[i].id," ")==0)
break;
$insert into stat_maxloan values($cWorkDate,$cProcBank,
$struMaxL[i].id,$struMaxL[i].name,$struMaxL[i].lic,
$struMaxL[i].idLoanSum,$struMaxL[i].idLoanBal,
$struMaxL[i].idOverBal,$struMaxL[i].idSlackBal,
$struMaxL[i].idBadBal,$vdBankNorSum,$vdBankBadSum,0);
if(sqlca.sqlcode!=0)
WriteTest("svrf334:insert stat_maxloan err[%ld]\n",sqlca.sqlcode);
}
for(i=0;i<10;i++)
{
strcpy(struMaxL[i].id," ");
struMaxL[i].idLoanSum=0;
struMaxL[i].idLoanBal=0;
struMaxL[i].idOverBal=0;
struMaxL[i].idSlackBal=0;
struMaxL[i].idBadBal=0;
}
sprintf(cSql,"select * from stat_maxbadloan order by cust_no");
$prepare selid2 from $cSql;
if(sqlca.sqlcode<0)
{
WriteTest("svrf334:prepare[%s] err[%ld]\n",cSql,sqlca.sqlcode);
CreateStruct("返回码","020");
$free selid2;
return 0;
}
$declare cursel2 cursor for selid2;
if(sqlca.sqlcode!=0)
{
WriteTest("svrf334:declare err[%ld]\n",sqlca.sqlcode);
CreateStruct("返回码","020");
$free selid2;
return 0;
}
$open cursel2;
if(sqlca.sqlcode!=0)
{
WriteTest("svrf334:open declare err[%ld]\n",sqlca.sqlcode);
CreateStruct("返回码","020");
$free selid2;
return 0;
}
$fetch cursel2 into $struMax;
if(sqlca.sqlcode<0)
{
WriteTest("svrf334:fetch err[%ld]\n",sqlca.sqlcode);
CreateStruct("返回码","020");
$close cursel2;
$free cursel2;
$free selid2;
return 0;
}
strcpy(vcTempId," ");
while(sqlca.sqlcode==0)
{
if(strcmp(vcTempId,struMax.custno)==0)
{/*当前记录与上一记录为同一客户*/
vdIdLoanSum+=struMax.loansum;
vdIdLoanBal+=struMax.loanbal;
vdIdOverBal+=struMax.overbal;
vdIdSlackBal+=struMax.slackbal;
vdIdBadBal+=struMax.badbal;
}
else
{
if(strcmp(vcTempId," ")==0)
{
vdIdLoanSum=struMax.loansum;
vdIdLoanBal=struMax.loanbal;
vdIdOverBal=struMax.overbal;
vdIdSlackBal=struMax.slackbal;
vdIdBadBal=struMax.badbal;
strcpy(vcTempId,struMax.custno);
strcpy(vcCustName,struMax.custname);
strcpy(vcTradeLic,struMax.tradelic);
}
else
{/*根据当前贷款户累加值更新10大贷款户*/
MaxBadLoan(vcTempId,vcCustName,vcTradeLic,vdIdLoanSum,vdIdLoanBal,vdIdOverBal,vdIdSlackBal,vdIdBadBal);
vdIdLoanSum=struMax.loansum;
vdIdLoanBal=struMax.loanbal;
vdIdOverBal=struMax.overbal;
vdIdSlackBal=struMax.slackbal;
vdIdBadBal=struMax.badbal;
strcpy(vcTempId,struMax.custno);
strcpy(vcCustName,struMax.custname);
strcpy(vcTradeLic,struMax.tradelic);
}
}
$fetch cursel2 into $struMax;
}
$close cursel2;
$free cursel2;
$free selid2;
if(strcmp(vcTempId," ")!=0)
MaxBadLoan(vcTempId,vcCustName,vcTradeLic,vdIdLoanSum,vdIdLoanBal,vdIdOverBal,vdIdSlackBal,vdIdBadBal);
for(i=0;i<10;i++)
{
if(strcmp(struMaxL[i].id," ")==0)
break;
$insert into stat_maxbadloan values($cWorkDate,$cProcBank,
$struMaxL[i].id,$struMaxL[i].name,$struMaxL[i].lic,
$struMaxL[i].idLoanSum,$struMaxL[i].idLoanBal,
$struMaxL[i].idOverBal,$struMaxL[i].idSlackBal,
$struMaxL[i].idBadBal,$vdBankNorSum,$vdBankBadSum,0);
if(sqlca.sqlcode!=0)
WriteTest("svrf334:insert stat_maxloan err[%ld]\n",sqlca.sqlcode);
}
CreateStruct("返回码","000");
return 0;
}
int MaxLoan(vcId,vcName,vcLic,vdIdLoanSum,vdIdLoanBal,vdIdOverBal,vdIdSlackBal,vdIdBadBal)
char *vcId,*vcName,*vcLic;
double vdIdLoanSum,vdIdLoanBal,vdIdOverBal,vdIdSlackBal,vdIdBadBal;
{
int i,j;
for(i=0;i<10;i++)
{
if((vdIdLoanBal+vdIdOverBal+vdIdSlackBal+vdIdBadBal)>
(struMaxL[i].idLoanBal+struMaxL[i].idOverBal
+struMaxL[i].idSlackBal+struMaxL[i].idBadBal))
{
for(j=9;j>i;j--)
{
strcpy(struMaxL[j].id,struMaxL[j-1].id);
strcpy(struMaxL[j].name,struMaxL[j-1].name);
strcpy(struMaxL[j].lic,struMaxL[j-1].lic);
struMaxL[j].idLoanSum=struMaxL[j-1].idLoanSum;
struMaxL[j].idLoanBal=struMaxL[j-1].idLoanBal;
struMaxL[j].idOverBal=struMaxL[j-1].idOverBal;
struMaxL[j].idSlackBal=struMaxL[j-1].idSlackBal;
struMaxL[j].idBadBal=struMaxL[j-1].idBadBal;
}
strcpy(struMaxL[i].id,vcId);
strcpy(struMaxL[i].name,vcName);
strcpy(struMaxL[i].lic,vcLic);
struMaxL[i].idLoanSum=vdIdLoanSum;
struMaxL[i].idLoanBal=vdIdLoanBal;
struMaxL[i].idOverBal=vdIdOverBal;
struMaxL[i].idSlackBal=vdIdSlackBal;
struMaxL[i].idBadBal=vdIdBadBal;
break;
}
}
return(0);
}
int MaxBadLoan(vcId,vcName,vcLic,vdIdLoanSum,vdIdLoanBal,vdIdOverBal,vdIdSlackBal,vdIdBadBal)
char *vcId,*vcName,*vcLic;
double vdIdLoanSum,vdIdLoanBal,vdIdOverBal,vdIdSlackBal,vdIdBadBal;
{
int i,j;
for(i=0;i<10;i++)
{
if((vdIdOverBal+vdIdSlackBal+vdIdBadBal)>
(struMaxL[i].idOverBal
+struMaxL[i].idSlackBal+struMaxL[i].idBadBal))
{
for(j=9;j>i;j--)
{
strcpy(struMaxL[j].id,struMaxL[j-1].id);
strcpy(struMaxL[j].name,struMaxL[j-1].name);
strcpy(struMaxL[j].lic,struMaxL[j-1].lic);
struMaxL[j].idLoanSum=struMaxL[j-1].idLoanSum;
struMaxL[j].idLoanBal=struMaxL[j-1].idLoanBal;
struMaxL[j].idOverBal=struMaxL[j-1].idOverBal;
struMaxL[j].idSlackBal=struMaxL[j-1].idSlackBal;
struMaxL[j].idBadBal=struMaxL[j-1].idBadBal;
}
strcpy(struMaxL[i].id,vcId);
strcpy(struMaxL[i].name,vcName);
strcpy(struMaxL[i].lic,vcLic);
struMaxL[i].idLoanSum=vdIdLoanSum;
struMaxL[i].idLoanBal=vdIdLoanBal;
struMaxL[i].idOverBal=vdIdOverBal;
struMaxL[i].idSlackBal=vdIdSlackBal;
struMaxL[i].idBadBal=vdIdBadBal;
break;
}
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -