📄 pcs_input_zfjb.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 + -