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

📄 pcs_input_fbkj.pc

📁 unix 下用pro*c tuxedo 开发的东西
💻 PC
字号:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*	File name		: Pcs_Input_FBKJ.pc					*				
*	Module ID		:							*
*	Module Name		:							*
*	Purpose			: Get FBKJ Data from FBKJFile And Insert into T_FBKJ	*
*	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 <stddef.h>
#include <fcntl.h>
#include <signal.h>
#include "/usr/bkfx/src/CommonAPI/myapi.h"

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

#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_FBKJ();

int Read_FBKJ_File();
 
int Insert_FBKJ_DB();

int End_PCS_Input_FBKJ();


int	rtn_code;
char 	* buf_fbkj, * tmp;
FILE 	* fp;


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

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

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

   	rtn_code = End_PCS_Input_FBKJ();
     	if ( rtn_code < 0 )
      	{
        	ProcessError(LOG_ERROR,"Pcs_Input_FBKJ.x: Calling Function \
        			End_PCS_Input_FBKJ() 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_FBKJ()
{

 	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:
 	ProcessError(LOG_ERROR,"Connect To DataBase SQL Error!");
 	EXEC SQL RollBack;
 	return(-1);

}



int Read_FBKJ_File(char *file_name )
{
 	int 	len_fbkj_file;

 	fp = fopen(file_name,"r");
	if (fp == NULL) 
 	{
 		ProcessError(LOG_ERROR,"Pcs_Input_FBKJ.x: Open FBKJ \
 				File Error!",END);
 		return(-1);
 	}
 	
 	file_name = file_name + mypath(file_name);
 	
    	fseek( fp,0,2);
    	len_fbkj_file = ftell( fp);           
 
    	buf_fbkj = ( char * )malloc( len_fbkj_file + 1);
    	if (buf_fbkj == NULL) 
 	{
 		ProcessError(LOG_ERROR,"Pcs_Input_FBKJ.x: Malloc FBKJ \
 				Buffer Error!",END);
 		return ( -1);
 	}
 	
 	memset( buf_fbkj, '\0', len_fbkj_file + 1 );
    	
    	fseek( fp,0,0);  
    	fread( buf_fbkj,len_fbkj_file,1,fp ); 
	fclose( fp );
	tmp = buf_fbkj;	
 	return(1);      
 	
}


int Insert_FBKJ_DB()
{
	char 	fbkjbh[3], fbkjmc[17], jsfs[2];
	int 	i = 0, j = 0, k = 0, comma = 0, p = 0;

	
	while ( buf_fbkj[p] != '\0' )
	{	
	
		if (( buf_fbkj[p] != ' ' ) && ( buf_fbkj[p] != '\t' ) && \
			 ( buf_fbkj[p] != '\n ') )
		{
   			if ( buf_fbkj[p] == ',' ) 
      			{
         			comma++; 
         		
         			if ( comma%3 == 1 ) 
            	   		{ 
            	   			fbkjbh[i] = '\0'; 
            	   			i = 0; 
            	   		}
         			else if ( comma%3 == 2 )
            	   		{ 
            	   			fbkjmc[j] = '\0'; 
            	   			j = 0;  
            	   		}
            			else
				{
					jsfs[k] = '\0';
					k = 0;
				}

         			if  ( comma%3 == 0 ) 
            	   		{ 
            	   		
            	   			EXEC SQL WHENEVER SQLERROR GOTO sqlerror;
	
					#ifdef DEBUG
						printf("fbkjbh,fbkjmc,jsfs  is %s,%s,%s\n",fbkjbh, \
							fbkjmc,jsfs);
					#endif
			
               	   			
              	   			EXEC SQL INSERT INTO T_FBKJ 
                   			VALUES (:fbkjbh, :fbkjmc, :jsfs );
                   
            	   		}            
      			}
   			else 
      			{
      		   		if ( isspace( buf_fbkj[p] ) == 0 ) 
         			{
           				if ( comma%3 == 0 )  
              				{  
              					fbkjbh[i] = buf_fbkj[p]; 
              					i++;
              				}
           	   			else if (comma%3 == 1 )
              	   			{  
              	   				fbkjmc[j] = buf_fbkj[p]; 
              	   				j++;  
              	   			}
					else
					{
						jsfs[k] = buf_fbkj[p];
						k++;
					}
              	   		
         			}
      			}
      		}
   		buf_fbkj[p++];
 	}
 	
 	free( tmp );
 	EXEC SQL COMMIT;
 	return(1);
 	
 	sqlerror:
	ProcessError(LOG_ERROR,"Pcs_Input_SJBH.x: Running Function \
				Insert_SJBH_DB() SQL Error!",END);
    	free( tmp );
    	EXEC SQL ROLLBACK;
    	return (-1);
}


int End_PCS_Input_FBKJ()
{

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

 	return(1);

	sqlerror:
 	ProcessError(LOG_ERROR,"Pcs_Input_FBKJ.x: Running Function \
 				End_PCS_Input_FBKJ() 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 + -