⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svrf334.ec

📁 一个银行业务的程序
💻 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 + -