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