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

📄 pcs_snd_zfjb1.pc

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

# include "/usr/bkfx/include/Pcs_Snd_ZFJB1/Pcs_Snd_ZFJB1.h"

void main( int argc, char *argv[])
{

	signal( SIGTERM, Free_Mem);
   
   	EXEC SQL INCLUDE SQLCA;
   	
	ProcessError(LOG_NORMAL, "Pcs_Snd_ZFJB1.x Is Begin!",END); 

   	rtn_code = InitSndZFJB1();
    	if ( rtn_code < 0 )
     	{
       	   	ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.x: Calling Function \
       	   			InitSndZFJB1() Failed!",END);
	       	exit(0);
        }
 
   	rtn_code = PCSSndZFJB1(argv[1],argv[2]);
	if ( rtn_code < 0 )
      	{
       		ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.x: Calling Function \
       				PCSSndZFJB1() Failed!",END);
       		exit(0);
      	}

   	rtn_code = EndPCSSndZFJB1(argv[1]);
     	if ( rtn_code < 0 )
      	{
        	ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.x: Calling Function \
        			EndPCSSndZFJB1() Failed!",END);
        	exit(0);
      	}
      
} /* end of main program */


  void Free_Mem()
  {
	ProcessError(LOG_NORMAL, "Pcs_Snd_ZFJB1.x Is Terminated By User!",END); 
    	if ( tmp != NULL ) free( tmp );
    	fclose(fp);
    	EXEC SQL ROLLBACK RELEASE;
	exit(0);
  }
   
   
  int PCSSndZFJB1(char * zfj_fp, char * pc)
  {

    	rtn_code = ReadZFJFileData( zfj_fp );
    	if ( rtn_code < 0 )
     	{
       		ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.x: Calling Function \
       				ReadZFJFileData() Failed!",END);
       		if ( buf_zfjb != NULL ) free( buf_zfjb);
       		fclose(fp);
        	return(-1);
     	}
 
    	rtn_code = CreateSndLogAndHZRec(pc);
     	if ( rtn_code < 0 )
      	{
       		ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.x: Calling Function \
       				CreateSndLogAndHZRec() Failed!",END);
       		if ( buf_zfjb != NULL ) free( buf_zfjb);
		return(-1);
 	}
 
 
    	rtn_code = InsertZFJDBRec();
      	if ( rtn_code < 0 )
       	{
        	ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.x: Calling Function \
        			InsertZFJDBRec() Failed!",END);
        	if ( buf_zfjb != NULL ) free( buf_zfjb);
        	return(-1);
       	}


    	rtn_code = InsertSndZFJBDB();
      	if ( rtn_code < 0 )
       	{
        	ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.x: Calling Function \
        			InsertSndZFJBDB() Failed!",END);
        	if ( buf_zfjb != NULL ) free( buf_zfjb);
       		return(-1);
       	}
 
 
    	rtn_code = UpdateSndLogRecStatus();
       	if ( rtn_code < 0 )
        {
        	ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.x: Calling Function \
        			UpdateSndLogRecStatus() Failed!",END);
	        return(-1);
        }
 
    	return(1);
}                 /* end of pcssndzfjb funtion*/
  


int InitSndZFJB1()
{

 	EXEC SQL BEGIN DECLARE SECTION;
      		VARCHAR userid[10];
      		VARCHAR password[10];
 	EXEC SQL END DECLARE SECTION;
 	
	EXEC SQL INCLUDE SQLCA;
 	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:
	EXEC SQL WHENEVER SQLERROR CONTINUE;
	ProcessError(LOG_ERROR,   "DataBase Error:%s!", sqlca.sqlerrm.sqlerrmc );
 	EXEC SQL RollBack;
 	return(-1);

}



int ReadZFJFileData(char *file_name )
{
 	int 	len_zfjb_file;

 	fp = fopen(file_name,"r");
	if (fp == NULL) 
 	{
 		ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.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_Snd_ZFJB1.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 CreateSndLogAndHZRec(char * hz_pc)
{
	int 	sj_count,i=1, pc;
	char 	sjbh_99[3];

	EXEC SQL WHENEVER SQLERROR GOTO sqlerror;

	EXEC SQL SELECT s_fsxh.nextval INTO :sequ FROM SYS.DUAL;


	EXEC SQL INSERT INTO T_FSRZ 
     		VALUES( :sequ, '4', '1', sysdate );

	EXEC SQL SELECT count(*) INTO :sj_count FROM T_SJBH 
			WHERE SJBH<>'99' AND SJBH<>:fsfbh ;
		

	EXEC SQL DECLARE sjbh_cursor CURSOR FOR
        		SELECT SJBH FROM T_SJBH 
			WHERE SJBH<>'99' AND SJBH<>:fsfbh ;

	EXEC SQL OPEN sjbh_cursor;	

	pc = atoi( pc );

	for (i=1; i <= sj_count; i++) 
	{
			
		EXEC SQL FETCH sjbh_cursor INTO :sjbh_99;

		#ifdef DEBUG
			printf("insert t_hz jssjbh is %s\n",sjbh_99);
		#endif
	     		
		EXEC SQL INSERT INTO T_HZ VALUES \
			(sysdate, :sjbh_99, '1', :sequ,'', :pc);

	}

	EXEC SQL CLOSE sjbh_cursor;

     	return(1);
     
	sqlerror:
	EXEC SQL WHENEVER SQLERROR CONTINUE;
	ProcessError(LOG_ERROR,   "DataBase Error:%s!", sqlca.sqlerrm.sqlerrmc );
   	ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.x: Running Function \
   				CreateSndLogAndHZRec() SQL Error!",END);
	free( tmp );
   	EXEC SQL RollBack;
   	return (-1);
}


int InsertZFJDBRec()
{
 	int 		dsn;     
	char		sys_year[5];
 	
	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 WHENEVER SQLERROR GOTO sqlerror;
  	EXEC SQL INSERT INTO T_FSZFJB VALUES(:nf, :sequ);

  	return(1);
 
 	sqlerror:
	EXEC SQL WHENEVER SQLERROR CONTINUE;
	ProcessError(LOG_ERROR,   "DataBase Error:%s!", sqlca.sqlerrm.sqlerrmc );
    	ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.x: Running Function \
    				InsertZFJDBRec() SQL Error!",END);
        free( tmp );
    	EXEC SQL RollBack;
    	return (-1);
}


int InsertSndZFJBDB()
{
	char 	zfjbh[9], zfjmc[17];
	int 	i = 0, j = 0, comma = 0, p = 0, count_zfj, count_fszfjbnr;
	long	ll_zfjxh;   /*Added by Mr. zjk, to add zfjxh column*/
	
	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*/

	ll_zfjxh = 1;  /* by Mr. zjk 2000.05.11 */
	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 ) 
            	   		{ 
            	   		
            	   			EXEC SQL WHENEVER SQLERROR GOTO sqlerror;
	
					#ifdef DEBUG
						printf("zfjbh and zfjmc is %s %s\n",\
							zfjbh,zfjmc);
					#endif
			
             	   			EXEC SQL INSERT INTO T_FSZFJBNR 
                   			VALUES (:fsfbh, :zfjbh, :zfjmc, :sequ, :ll_zfjxh );
/*					EXEC SQL COMMIT WORK;*/
					
					EXEC SQL INSERT INTO T_ZFJ 
                   			VALUES (:zfjbh, :nf, :fsfbh, :zfjmc, :ll_zfjxh );

/*					EXEC SQL COMMIT WORK;*/

					ll_zfjxh++;  /* by Mr. zjk 2000.05.11 */
                   
            	   		}            
      			}
   			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++];
 	}
					EXEC SQL COMMIT WORK;
	if ( comma%2 != 0 ) return(-1);
 	
 	free( tmp );
 	return(1);
 	
 	sqlerror:
	EXEC SQL WHENEVER SQLERROR CONTINUE;
	ProcessError(LOG_ERROR,   "DataBase Error:%s!", sqlca.sqlerrm.sqlerrmc );
	ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.x: Running Function \
				InsertSndZFJBDB() 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;

	EXEC SQL select count(*) into count_fszfjbnr from t_fszfjbnr where sjbh=:fsfbh and fsxh=:sequ;
	if ( count_fszfjbnr > 0 ) 
		EXEC SQL delete from t_fszfjbnr where sjbh=:fsfbh and fsxh=:sequ;

	EXEC SQL delete from t_hz where fsxh=:sequ and sjbh=:fsfbh;
	EXEC SQL delete from t_fsrz where fsxh=:sequ and sjbh=:fsfbh;
	EXEC SQL COMMIT WORK;

    	return (-1);
}


int UpdateSndLogRecStatus()
{

	EXEC SQL WHENEVER SQLERROR GOTO sqlerror;
	
	EXEC SQL UPDATE T_FSRZ SET sjzt='2' WHERE fsxh=:sequ;
	
	EXEC SQL COMMIT WORK;

	return(1);

	sqlerror:
	EXEC SQL WHENEVER SQLERROR CONTINUE;
	ProcessError(LOG_ERROR,   "DataBase Error:%s!", sqlca.sqlerrm.sqlerrmc );
   	ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.x: Running Function \
   				UpdateSndLogRecStatus() SQL Error!",END);
	EXEC SQL RollBack;
   	return (-1);
   	
}



int EndPCSSndZFJB1(char *source_file)
{

	char cCommand[100];

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

	/*delete the source data file */
	sprintf( cCommand, "rm %s ", source_file );
	system( cCommand );

 	return(1);

	sqlerror:
	EXEC SQL WHENEVER SQLERROR CONTINUE;
	ProcessError(LOG_ERROR,   "DataBase Error:%s!", sqlca.sqlerrm.sqlerrmc );
 	ProcessError(LOG_ERROR,"Pcs_Snd_ZFJB1.x: Running Function \
 				EndPCSSndZFJB1() SQL Error!",END);
 	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 + -