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