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

📄 pcs_snd_gh1.pc

📁 unix 下用pro*c tuxedo 开发的东西
💻 PC
字号:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*	File name		: Pcs_Snd_GH1.pc	                       	*				
*	Module ID		:				        	*
*	Module Name		:                                       	*
*	Purpose			: Get GH Data From GHFile 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		:                                           	*
*	References		:                                           	*
*	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_GH1/Pcs_Snd_GH1.h"


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

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

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

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


  int PCSSndGH1(char * gh_fp, char * pc)
  { 
     
     	rtn_code = ReadGHFileData( gh_fp);
    	if ( rtn_code < 0 )
     	{
      	   	ProcessError(LOG_ERROR,"Pcs_Snd_GH1.x: Calling Function \
      	   			ReadGHFileData() Failed!",END);
	   	if ( buf_gh != NULL ) free( buf_gh);
	   	fclose(fp);
      	 	return(-1);
     	}
 
    	rtn_code = CreateSndLogAndHZRec( pc );
     	if ( rtn_code < 0 )
      	{
       	   	ProcessError(LOG_ERROR,"Pcs_Snd_GH1.x: Calling Function \
       	   			CreateSndLogAndHZRec() Failed!",END);
      	   	return(-1);
      	}
 
    	rtn_code = InsertSndGHRec();
      	if ( rtn_code < 0 )
        {
             	ProcessError(LOG_ERROR,"Pcs_Snd_GH1.x: Calling Function \
             			InsertSndGHRec() Failed!",END);
            	return(-1);
        }
 
    	rtn_code = UpdateSndLogRecStatus();
       	if ( rtn_code < 0 )
        {
             	ProcessError(LOG_ERROR,"Pcs_Snd_GH1.x: Calling Function \
             			UpdateSndLogRecStatus() Failed!",END);
            	return(-1);
        }
 
    	return(1);
  }                 /* end of pcssndzfjb funtion*/
  
  
  void Free_Mem()
  {
	ProcessError(LOG_NORMAL, "Pcs_Snd_GH1.x Is Terminated By User!",END);
  	if ( buf_gh != NULL )  free( buf_gh);
  	fclose(fp);
  	EXEC SQL ROLLBACK RELEASE;
	exit(0);
  }


  int InitSndGH1()
  {
  	
 	EXEC SQL BEGIN DECLARE SECTION;
      		VARCHAR  userid[20];
      		VARCHAR  password[20];
 	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 ReadGHFileData(char *file_name )  
  {
 	
 	int	len_gh_file;
 	
 	fp = fopen(file_name,"r");
 	if (fp == NULL) 
 	{
 		ProcessError(LOG_ERROR,"Pcs_Snd_GH1.x: Open GH File Error!",END);
  		return(-1);
 	}
 	
 	file_name = file_name + mypath(file_name);
 	
 	file_name += 2;
    	strncpy(fsfbh,file_name,2);
    	fsfbh[2] = '\0';
    
    	file_name += 2;
    	strncpy(jsfbh,file_name,2);
    	jsfbh[2] = '\0';
    
    	file_name += 2;
    	strncpy(ghxl,file_name,2);
    	ghxl[2] = '\0';

    	file_name += 3;
    	strncpy(ghbh,file_name,3);
    	ghbh[3] = '\0';
    
    	fseek( fp,0,2);
    	len_gh_file = ftell( fp);  
        
      
    	buf_gh = (char *)malloc( len_gh_file + 1 );
    	if (buf_gh == NULL) 
 	{
 		ProcessError(LOG_ERROR,"Malloc GH Buffer Error!",END);
 		return ( -1);
 	}
 	
    	memset( buf_gh, '\0', len_gh_file + 1 );
    	fseek( fp,0,0);  
    	fread(buf_gh,len_gh_file,1,fp); 

    	strcat( nr, buf_gh);
    	free( buf_gh );
    	fclose(fp);
  
    	#ifdef DEBUG
	    	printf("ghbh ghxl fsfbh jsfbh is %s,%s,%s,%s\n",ghbh,ghxl,fsfbh,jsfbh); 
    	#endif
    	return(1);      
  }


  int CreateSndLogAndHZRec(char * hz_pc)
  {
 	int 	sj_count,i,pc;
 	char 	jsfbh_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, '5', '1', sysdate );
 	
	#ifdef DEBUG
 		printf("fsxh is %ld\n",sequ);
 	#endif

      	pc = atoi( hz_pc );

 	if ((jsfbh[0] == '9' ) && (jsfbh[1] == '9'))
    	{

		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;	

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

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

		}
			EXEC SQL CLOSE sjbh_cursor;

    	}
   	else
     	{	

     		EXEC SQL INSERT INTO T_HZ VALUES \
     			(sysdate, :jsfbh, '1', :sequ,'',:pc);

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


  int InsertSndGHRec()
  {

 	EXEC SQL WHENEVER SQLERROR GOTO sqlerror;

 	EXEC SQL INSERT INTO T_FSGH 
          	VALUES(:ghbh, :ghxl, :nr, :sequ);

 	return(1);

	sqlerror:
	EXEC SQL WHENEVER SQLERROR CONTINUE;
	ProcessError(LOG_ERROR,   "DataBase Error:%s!", sqlca.sqlerrm.sqlerrmc );
   	ProcessError(LOG_ERROR,"Pcs_Snd_GH1.x: Running Function InsertSndGHRec() \
   				SQL Error!",END);
   	EXEC SQL RollBack;
   	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_GH1.x: Running Function \
  				UpdateSndLogRecStatus() SQL Error!",END);
	EXEC SQL RollBack;
   	return (-1);

  }



  int EndPCSSndGH1(char *file_name)
  {
	char cCommand[100];

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

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

 	return(1);

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


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

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

⌨️ 快捷键说明

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