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

📄 main_0214.ec

📁 证券交易系统
💻 EC
字号:
#include <fcntl.h>#include <errno.h>#include "../incl/bank.h"#include "../incl/sbsapi.h"#include  <sys/time.h>$include sqlca;#define    MAX_WORKERS     50#define    MAX_COMMENT     50static void       toolong1();jmp_buf    oldenv1;extern WORKER     *wk;extern int        htime_out1;extern $char stockdb1[20];extern int sndrcv_account();SEND_NET_0214   send_net_0214;RECV_NET_0214   recv_net_0214;void     GetFileName();void     GetSystemTime();char     buff_time[26];char     FileName[40];char     FileName1[40];char     FileName2[40];char     command[80];int     net_tohost_0214(sockfd,rcv_data_package,snd_data_package)int     sockfd;char    *rcv_data_package;char    *snd_data_package;{        int    i,j,flag,iLen,k;        char   *tmp;        char   mac[50];        char   manager_id[10];        char   comment[10][80], buf[100];	char   duizh_buffer[3000];        char   rbuf[512];        char   T_buf1[4],T_buf2[12];        FILE   *fp,*fd;        WORKER  wks[ MAX_WORKERS ];        $char   t_acco_type[2] ;        $char   tmp_lsh[16],tmp_buffer[16];        char   str1[80];        char   tmp_str1[80];        char   str3[80];        double f;        int a,b,c,d;        char   dzFlag[2];        int    ret = 0;	memset (tmp_buffer,'\0',sizeof(tmp_buffer));                $connect to $stockdb1;        if ( sqlca.sqlcode ) {             WriteLog ( LOGFILE,"Open database stock err![%d]\n",sqlca.sqlcode );             strcpy ( send_net.retcode,"8999");             strcpy ( send_net.errmsg,"数据库开启错误");             return( -1 );        }/******/	/* dzFlag: 0-不在对帐状态; 1-处于对帐状态 */	memset( dzFlag, 0x00, sizeof(dzFlag) );	ret = GetDzStatus( dzFlag );	if( ret != 0 )	{		WriteLog(LOGFILE, "取对帐状态出错。\n");		strcpy ( send_net.retcode, "8999");                strcpy ( send_net.errmsg, "取对帐状态出错");		return (-1);	}		if( strncmp( dzFlag, "1", 1 ) == 0 )	{		WriteLog(LOGFILE, "系统正处于对帐状态。\n");		strcpy ( send_net.retcode, "8999");                strcpy ( send_net.errmsg, "系统正处于对帐状态");                return (-1);	}		memset( dzFlag, 0x00, sizeof(dzFlag) );	strncpy( dzFlag, "1", 1 );	ret = SetDzStatus( dzFlag );	if( ret != 0 )	{		WriteLog(LOGFILE, "设置对帐状态出错。\n");		strcpy ( send_net.retcode, "8999");        strcpy ( send_net.errmsg, "设置对帐状态出错");		return (-1);	}/****/        tmp = rcv_data_package;         WriteLog(LOGFILE,"********对帐主处理开始*************");        WriteLog(LOGFILE,"接收数据:\n[%s]",rcv_data_package);        memset(rbuf,'\0',512);        k = sndrcv_account(rcv_data_package,rbuf);	if (k < 0){             WriteLog( LOGFILE, "对公下传文件失败" );             strcpy ( send_net_0214.retcode,"8999");             strcpy ( send_net_0214.errmsg,"下传文件失败");             goto aaa1;	}	WriteLog ( LOGFILE,"对公返回数据:[%s]\n",rbuf);        sscanf(rbuf,"%12s%4s",T_buf2,T_buf1);        if(strcmp(T_buf1,"0000"))        {             WriteLog( LOGFILE, "对公下传文件失败" );             strcpy ( send_net_0214.retcode,"8999");             strcpy ( send_net_0214.errmsg,"下传文件失败");             goto aaa1;        }                GetFileName();        fp = fopen( (char *)getfname( WORKDIR, FileName), "a");        if(fp == NULL)        {             WriteLog(LOGFILE,"对私对帐文件不存在");             strcpy ( send_net_0214.retcode,"8999");             strcpy ( send_net_0214.errmsg,"对私对帐文件不存在");             goto aaa1;	}        fd = fopen( (char *)getfname( WORKDIR, FileName2), "r");        if(fd == NULL)        {             WriteLog(LOGFILE,"对公对帐文件不存在");             strcpy ( send_net_0214.retcode,"8999");             strcpy ( send_net_0214.errmsg,"对公对帐文件不存在");             goto aaa1;	}	memset(duizh_buffer,'\0',2048);        	/* added by si xiao jun 2001 10 09   */	fseek(fd,0L,SEEK_SET);	while(!feof(fd))	{                memset(str1,'\0',sizeof(str1));                memset(tmp_lsh,'\0',sizeof(tmp_lsh));		fgets(str1,80,fd);		/* add by lyf 2001 10 26 */		c = 0;		b = 0;                d = strlen(str1);                if(d <= 0)                    break;                for(a=0;a<d;a++)		{		    if(str1[a] == '|')		    {			 b ++;			 continue;		    }		    if(b > 4)		    {			 tmp_lsh[c] = '\0';			 break;		    }                    if(b < 4)			 continue;		    tmp_lsh[c] = str1[a];		    c ++;		}                if(!strcmp(tmp_buffer,tmp_lsh))                    continue;                strcpy(tmp_buffer,tmp_lsh);              $select acco_type into $t_acco_type                    from   t_stock_serial                   where  req_serial = $tmp_lsh;              if ( sqlca.sqlcode )                      continue;              str1[5] = t_acco_type[0];             fprintf(fp, "%s", str1); 	}	/*   added end by si xiao jun *//* deleted by si xiao jun 2001 10.09          while(fscanf(fd, "%26s|%lf|%15s|%16s\n", str1,&f, tmp_lsh, str3)!=EOF)	{              $select acco_type into $t_acco_type                    from   t_stock_serial                   where  req_serial = $tmp_lsh;              if ( sqlca.sqlcode )                      continue;              str1[5] = t_acco_type[0];             fprintf(fp, "%26s|%.2lf|%15s|%16s\n", str1, f, tmp_lsh, str3); 	}*/	fclose(fp);	fclose(fd);        sprintf(command, "PutFile %s 010", FileName1);        if(system(command) == 0)        {             strcpy ( send_net_0214.retcode,"0000");             strcpy ( send_net_0214.errmsg,"交易成功");             strcpy ( send_net_0214.FileName,FileName1);             iLen = strlen(FileName1);             send_net_0214.FileName[iLen] = '\0';             if ((iLen = GetFileMac((char *)getfname(WORKDIR,FileName),mac)) != 0)             {                 WriteLog ( LOGFILE,"iLen = %d\n",iLen);                 /*return -1;*/                 goto aaa1;             }             strcpy ( send_net_0214.mac,mac);        }        else        {             WriteLog( LOGFILE, "下传文件失败" );             strcpy ( send_net_0214.retcode,"8999");             strcpy ( send_net_0214.errmsg,"下传文件失败");             goto aaa1;        }        signal( SIGALRM, SIG_IGN );        alarm ( 0 );        $delete from t_stock_serial;        if ( sqlca.sqlcode )        {             WriteLog ( LOGFILE,"删除日志流水出错![%d]\n",sqlca.sqlcode );             strcpy ( send_net_0214.retcode,"8999");             strcpy ( send_net_0214.errmsg,"删除日志流水出错");        }aaa1:                $disconnect current;        if ( sqlca.sqlcode )         {             WriteLog ( LOGFILE, "Close database stock err![%d]\n",sqlca.sqlcode );        }                pktonet_stock_0214(snd_data_package);                /****/        memset( dzFlag, 0x00, sizeof(dzFlag) );		strncpy( dzFlag, "0", 1 );		ret = SetDzStatus( dzFlag );		if( ret != 0 )		{			WriteLog(LOGFILE, "设置对帐状态出错。\n");			strcpy ( send_net.retcode, "8999");        	strcpy ( send_net.errmsg, "设置对帐状态出错");			return (-1);		}        /****/                WriteLog(LOGFILE,"向代理集中点发送数据结束");        return(0);}static  void  toolong1 (){        htime_out1 = 1;        alarm ( 0 );        signal ( SIGALRM, SIG_IGN );        longjmp( oldenv1, 1 );}void GetFileName(){     struct timeval tv;     time_t clock;     struct tm *tm1;     gettimeofday(&tv,0);     clock = tv.tv_sec;     tm1 = localtime( &clock );     strftime(FileName,40,"/data/%Y%m%d.SBS",tm1);     strftime(FileName2,40,"/data/%Y%m%d.SBS1",tm1);     strftime(FileName1,19,"%Y%m%d.SBS",tm1);}int GetDzStatus( char* dzStatus ){   FILE *fp;   int   fd, ret = 0;   struct stat fileStat;   char fileName[100+1];   char lineBuf[100+1];   memset(fileName,0,sizeof(fileName));   sprintf(fileName,"%s/etc/DZStatus.cfg",getenv("WORKDIR"));   ret = fstat( fileName, &fileStat);   if ( (ret<0) && (errno==ENOENT) )   {   		strncpy( dzStatus, "0", 1 );   		fp = fopen( fileName, "w" );   		if ( fp == NULL )    			return -1;   	   		fd = fileno(fp);   		lockf(fd, F_LOCK, 0l);   		fprintf( fp, "%s\n", dzStatus );   		   		lockf(fd, F_ULOCK, 0l);   		fclose(fp);   }   else   {   		fp = fopen( fileName, "r" );   		if ( fp == NULL )    			return -1;   		   		fd = fileno(fp);   		lockf(fd, F_LOCK, 0l);   		   		memset(lineBuf,0,sizeof(lineBuf));   		if ( fgets(lineBuf, 100, fp) == NULL )   		{   		   fclose(fp);   		   return -1;   		}   		   		strncpy( dzStatus, lineBuf, 1 );   		   		lockf(fd, F_ULOCK, 0l);   		fclose(fp);   }   WriteLog( LOGFILE, "DzStatus=[%s]\n",dzStatus );   return 0;}int SetDzStatus( const char* dzStatus ){   FILE *fp;   int  fd;   char fileName[100+1];   char lineBuf[100+1];   memset(fileName,0,sizeof(fileName));   sprintf(fileName,"%s/etc/DZStatus.cfg",getenv("WORKDIR"));   fp = fopen( fileName, "w" );   if ( fp == NULL )    	return -1;   	   fd = fileno(fp);   lockf(fd, F_LOCK, 0l);   fprintf( fp, "%s\n", dzStatus );   lockf(fd, F_ULOCK, 0l);   fclose(fp);   return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -