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

📄 svrf314.ec

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