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

📄 pcs_input_zfjb.pc

📁 unix 下用pro*c tuxedo 开发的东西
💻 PC
字号:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*	File name		: Pcs_Input_ZFJB.pc					*				
*	Module ID		:							*
*	Module Name		:							*
*	Purpose			: Get ZFJ Data from ZFJBFile And Insert into t_ZFJ	*
*	Author             	: Liu Yan Qiu  ( DIMPT )				*
*	Date Created		: 2000.03.20  						*
*	Version			: Version 1.0                 				*
*	Environment		: SCO UNIX                        	             	*
*	Portability		: UNIX Platform                                    	*
*	Warnings		:                                                  	*
*	References1		:                                                  	*
*	Calling Syntax		:                                                  	*
*	Parameters		: None                                             	*
*	Returns			: void                                             	*
*	Calling Function	:                                                     	*
*	Called Functions	: When Broadcase Our Appilications                     	*
*	Datastores and usages:                                                		*
*        	(a) Input                                                          	*
* 	   	(b) OutPut                                                         	*       
*	Report			: None                                             	*
*	Screens			: None                                             	*
*	Messages Files		: None                                             	*
*	Change Log		:                                                  	*
*	Change No. 	Date	Author	Reason For Change               		*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/

#include <stdio.h>
#include <stdlib.h>
#include <sqlca.h>
#include <time.h>
#include <stddef.h>
#include <fcntl.h>
#include <signal.h>
#include "/usr/bkfx/src/CommonAPI/myapi.h"

/*#ifndef DEBUG
#define DEBUG
#endif
*/

#define ThisYearIsDn (dsn==1)||(dsn==3)||(dsn==5)||(dsn==7)||(dsn==9)
#define ThisYearIsSn (dsn==0)||(dsn==2)||(dsn==4)||(dsn==6)||(dsn==8)
#define ERROR_LOG_FILE		"/usr/bkfx/log/errlog"
#define LOG_NORMAL		"LOG_NORMAL		"
#define LOG_ERROR		"LOG_ERROR		"
#define END			""


int mypath();

void ProcessError();

void Free_Mem();

int Init_Input_ZFJB();

int Read_ZFJFile();
 
int Insert_ZFJ_DB();

int End_PCS_Input_ZFJB();


char 	year, fsfbh[3];
int	rtn_code;
char 	* buf_zfjb, * tmp;
FILE 	* fp;

EXEC SQL INCLUDE SQLCA;
void main( int argc, char *argv[])
{

	signal( SIGTERM, Free_Mem);
   
   	EXEC SQL INCLUDE SQLCA;
   	
   	rtn_code = Init_Input_ZFJB();
    	if ( rtn_code < 0 )
     	{
       	   	ProcessError(LOG_ERROR,"Pcs_Input_ZFJB.x: Calling Function \
       	   			Init_Input_ZFJB() Failed!",END);
	       	exit(-1);
        }
 

	rtn_code = Read_ZFJ_File( argv[1] );
    	if ( rtn_code < 0 )
     	{
       		ProcessError(LOG_ERROR,"Pcs_Input_ZFJB.x: Calling Function \
       				Read_ZFJ_File() Failed!",END);
       		if ( buf_zfjb != NULL ) free( buf_zfjb);
       		fclose(fp);
        	exit(-1);
     	}    	
 
    	rtn_code = Insert_ZFJ_DB();
      	if ( rtn_code < 0 )
       	{
        	ProcessError(LOG_ERROR,"Pcs_Input_ZFJB.x: Calling Function \
        			Insert_ZFJ_DB() Failed!",END);
        	if ( buf_zfjb != NULL ) free( buf_zfjb);
        	exit(-1);
       	}

   	rtn_code = End_PCS_Input_ZFJB();
     	if ( rtn_code < 0 )
      	{
        	ProcessError(LOG_ERROR,"Pcs_Input_ZFJB.x: Calling Function \
        			End_PCS_Input_ZFJB() Failed!",END);
        	exit(-1);
      	}
      

} /* end of main program */


  void Free_Mem()
  {
    	if ( tmp != NULL ) free( tmp );
    	fclose(fp);
    	EXEC SQL ROLLBACK RELEASE;
  }
   
   
int Init_Input_ZFJB()
{

 	EXEC SQL BEGIN DECLARE SECTION;
      		VARCHAR userid[10];
      		VARCHAR password[10];
 	EXEC SQL END DECLARE SECTION;
 	

 	EXEC SQL WHENEVER SQLERROR GOTO sqlerror;
 
 	
 	/*****************************
  	| Connect to DataBase	     |
  	*****************************/
  	
 	strcpy( userid.arr,"pcsdba"); 
 	userid.len = strlen (userid.arr);
 	strcpy( password.arr,"dba");
 	password.len = strlen( password.arr);

 	EXEC SQL CONNECT :userid IDENTIFIED BY :password;
  	return (1);

	sqlerror:
 	ProcessError(LOG_ERROR,"Connect To DataBase SQL Error!");
 	EXEC SQL RollBack;
 	return(-1);

}



int Read_ZFJ_File(char *file_name )
{
 	int 	len_zfjb_file;

 	fp = fopen(file_name,"r");
	if (fp == NULL) 
 	{
 		ProcessError(LOG_ERROR,"Pcs_Input_ZFJB.x: Open ZFJB \
 				File Error!",END);
 		return(-1);
 	}
 	
 	file_name = file_name + mypath(file_name);
 	
    	fsfbh[0] = file_name[5];
    	fsfbh[1] = file_name[6];
    	fsfbh[2] = '\0';
    
    	year = file_name[7];

    	fseek( fp,0,2);
    	len_zfjb_file = ftell( fp);           
 
    	buf_zfjb = ( char * )malloc( len_zfjb_file + 1);
    	if (buf_zfjb == NULL) 
 	{
 		ProcessError(LOG_ERROR,"Pcs_Input_ZFJB.x: Malloc ZFJB \
 				Buffer Error!",END);
 		return ( -1);
 	}
 	
 	memset( buf_zfjb, '\0', len_zfjb_file + 1 );
    	
    	fseek( fp,0,0);  
    	fread( buf_zfjb,len_zfjb_file,1,fp ); 
	fclose( fp );
	tmp = buf_zfjb;	
 	return(1);      
 	
}


int Insert_ZFJ_DB()
{
	char 	zfjbh[9], zfjmc[17], sys_year[5];
	int 	i = 0, j = 0, comma = 0, p = 0, nf, dsn, count_zfj;
	int     round_xh;
	

 	sys_year[0] = '\0';
	EXEC SQL SELECT TO_CHAR(SYSDATE,'yyyy') INTO :sys_year FROM SYS.DUAL;
	sys_year[5] = '\0';
	

  	dsn = atoi(sys_year) % 10;  
	
  	if (((ThisYearIsDn ) && (year == '0')) || ((ThisYearIsSn ) && \
  	(year == '1')) ) 
  		nf = atoi(sys_year)+1;
	else 
		nf = atoi(sys_year);  
	
	EXEC SQL select count(*) into count_zfj from t_zfj where sjbh=:fsfbh and yxnf=:nf;
	if ( count_zfj > 0 ) 
		EXEC SQL delete from t_zfj where sjbh=:fsfbh and yxnf=:nf;
	EXEC SQL COMMIT WORK;  /*delete the duplicate records firstly */
	printf("delete ok");

	round_xh=0;
	while ( buf_zfjb[p] != '\0' )
	{	
		if (( buf_zfjb[p] != ' ' ) && ( buf_zfjb[p] != '\t' ) && \
			 ( buf_zfjb[p] != '\n ') )
		{
   			if ( buf_zfjb[p] == ',' ) 
      			{
         			comma++; 
         		
         			if ( comma%2 == 1 ) 
            	   		{ 
            	   			zfjbh[i] = '\0'; 
            	   			i = 0; 
            	   		}
         			else 
            	   		{ 
            	   			zfjmc[j] = '\0'; 
            	   			j = 0;  
            	   		}
            
         			if  ( comma%2 == 0 ) 
            	   		{ 
					round_xh++;
            	   		
            	   			EXEC SQL WHENEVER SQLERROR GOTO sqlerror;
	
					/*ifdef DEBUG*/
						printf("yxnf,sjbh ,zfjbh,zfjmc  is %d,%s,%s, %s\n",nf,fsfbh,zfjbh, zfjmc);
					/*endif*/
			
               	   			
              	   			EXEC SQL INSERT INTO T_ZFJ 
                   			VALUES (:zfjbh, :nf, :fsfbh, :zfjmc, :round_xh );
					EXEC SQL COMMIT WORK;
					
                   
            	   		}            
      			}
   			else 
      			{
      		   		if ( isspace( buf_zfjb[p] ) == 0 ) 
         			{
           				if ( comma%2 == 0 )  
              				{  
              					zfjbh[i] = buf_zfjb[p]; 
              					i++;
              				}
           	   			else 
              	   			{  
              	   				zfjmc[j] = buf_zfjb[p]; 
              	   				j++;  
              	   			}
              	   		
         			}
      			}
      		}
   		buf_zfjb[p++];
 	}
	if ( comma%2 != 0 ) return(-1); 	

 	free( tmp );
/* 	EXEC SQL COMMIT WORK;*/
 	return(1);
 	
 	sqlerror:
	ProcessError(LOG_ERROR,"Pcs_Input_ZFJB.x: Running Function \
				Insert_ZFJ_DB() SQL Error!",END);
    	free( tmp );
    	EXEC SQL ROLLBACK;
	EXEC SQL select count(*) into count_zfj from t_zfj where sjbh=:fsfbh and yxnf=:nf;
	if ( count_zfj > 0 ) 
		EXEC SQL delete from t_zfj where sjbh=:fsfbh and yxnf=:nf;
    	return (-1);
}


int End_PCS_Input_ZFJB()
{

 	EXEC SQL WHENEVER SQLERROR GOTO sqlerror;
 	EXEC SQL COMMIT WORK RELEASE;

 	return(1);

	sqlerror:
 	ProcessError(LOG_ERROR,"Pcs_Input_ZFJB.x: Running Function \
 				End_PCS_Input_ZFJB() SQL Error!",END);
 	EXEC SQL RollBack RELEASE;
 	return(-1);
 	
}

int mypath( char *filename )
{
	int len, i;

	len = strlen(filename);
	
	for( i = len-1 ; i >= 0 ; i-- )
	if( filename[i] == '/' ) break;
	
	return (i+1);
}

void ProcessError( char *LOG, char *sErrorMessage1, char *sErrorMessage2 )
{
	FILE* hErrorFile;
	char cDateTime[100],tempstr[100];
	int i,j,len,n;
	
	tempstr[0]='\0';
	len=strlen(sErrorMessage1);
	for(i=0;i<=len;i++)
	{
		if(sErrorMessage1[i]=='%')
		{			
			n=i;
			if(len!=i+1)
			{
				for(j=0;j<200&&sErrorMessage1[i+2]!='\0';j++,i++)
				tempstr[j]=sErrorMessage1[i+2];
				tempstr[j]='\0';
			}	
			break;
		}
		if(sErrorMessage1[i]=='\0')
		{
			n=i;
			tempstr[0] = '\0';
			break;
		}
			
	}
	
	
	sErrorMessage1[n]='\0';
	hErrorFile = fopen( ERROR_LOG_FILE, "a" );
	if( hErrorFile == NULL )
	{
		printf( "Critical! Cannot open ERROR_LOG_FILE for append or cannot create!\n");
		return;
	}
	fseek( hErrorFile, 0 ,SEEK_END );
	fputs( "\n",hErrorFile);
	fputs( LOG ,hErrorFile);
	printf("\n%s",LOG);
	fputs( sErrorMessage1,hErrorFile );
	printf("%s",sErrorMessage1);
	fputs( sErrorMessage2,hErrorFile );
	printf("%s",sErrorMessage2);
	fputs( tempstr,hErrorFile );
	printf("%s\n",tempstr);
	fputs( "\n",hErrorFile);
	fclose( hErrorFile );
	sprintf( cDateTime, "date >> %s\n", ERROR_LOG_FILE );
	system( cDateTime );
}

⌨️ 快捷键说明

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