📄 pcsrestoreapi.c
字号:
/* Result Sets Interface */
#ifndef SQL_CRSR
# define SQL_CRSR
struct sql_cursor
{
unsigned int curocn;
void *ptr1;
void *ptr2;
unsigned long magic;
};
typedef struct sql_cursor sql_cursor;
typedef struct sql_cursor SQL_CURSOR;
#endif /* SQL_CRSR */
/* Thread Safety */
typedef void * sql_context;
typedef void * SQL_CONTEXT;
/* File name & Package Name */
struct sqlcxp
{
unsigned short fillen;
char filnam[17];
};
static struct sqlcxp sqlfpn =
{
16,
"PCSRestoreapi.pc"
};
static unsigned long sqlctx = 5043779;
static struct sqlexd {
unsigned int sqlvsn;
unsigned int arrsiz;
unsigned int iters;
unsigned int offset;
unsigned short selerr;
unsigned short sqlety;
unsigned int unused;
short *cud;
unsigned char *sqlest;
char *stmt;
unsigned char **sqphsv;
unsigned int *sqphsl;
short **sqpind;
unsigned int *sqparm;
unsigned int **sqparc;
unsigned char *sqhstv[3];
unsigned int sqhstl[3];
short *sqindv[3];
unsigned int sqharm[3];
unsigned int *sqharc[3];
} sqlstm = {8,3};
/* Prototypes */
extern sqlcxt (/*_ void **, unsigned long *,
struct sqlexd *, struct sqlcxp * _*/);
extern sqlcx2t(/*_ void **, unsigned long *,
struct sqlexd *, struct sqlcxp * _*/);
extern sqlbuft(/*_ void **, char * _*/);
extern sqlgs2t(/*_ void **, char * _*/);
extern sqlorat(/*_ void **, unsigned long *, void * _*/);
/* Forms Interface */
static int IAPSUCC = 0;
static int IAPFAIL = 1403;
static int IAPFTL = 535;
extern void sqliem(/*_ char *, int * _*/);
static char *sq0002 =
"select FSXH ,SJFL from t_fsrz where SJZT=1 ";
static char *sq0021 =
"select JSXH ,SJFL from t_jsrz where SJZT=1 ";
typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;
typedef struct { unsigned short len; unsigned char arr[1]; } varchar;
/* cud (compilation unit data) array */
static short sqlcud0[] =
{8,4130,
2,0,0,1,0,0,27,124,0,3,3,0,1,0,1,9,0,0,1,9,0,0,1,10,0,0,
28,0,0,2,54,0,9,142,0,0,0,0,1,0,
42,0,0,2,0,0,13,147,0,2,0,0,1,0,2,3,0,0,2,1,0,0,
64,0,0,3,39,0,2,153,0,1,1,0,1,0,1,3,0,0,
82,0,0,4,39,0,2,155,0,1,1,0,1,0,1,3,0,0,
100,0,0,5,39,0,2,160,0,1,1,0,1,0,1,3,0,0,
118,0,0,6,39,0,2,162,0,1,1,0,1,0,1,3,0,0,
136,0,0,7,41,0,2,168,0,1,1,0,1,0,1,3,0,0,
154,0,0,8,39,0,2,170,0,1,1,0,1,0,1,3,0,0,
172,0,0,9,41,0,2,176,0,1,1,0,1,0,1,3,0,0,
190,0,0,10,39,0,2,178,0,1,1,0,1,0,1,3,0,0,
208,0,0,11,39,0,2,183,0,1,1,0,1,0,1,3,0,0,
226,0,0,12,37,0,2,185,0,1,1,0,1,0,1,3,0,0,
244,0,0,13,35,0,2,190,0,1,1,0,1,0,1,3,0,0,
262,0,0,14,37,0,2,195,0,1,1,0,1,0,1,3,0,0,
280,0,0,15,37,0,2,200,0,1,1,0,1,0,1,3,0,0,
298,0,0,16,37,0,2,202,0,1,1,0,1,0,1,3,0,0,
316,0,0,17,33,0,2,210,0,1,1,0,1,0,1,3,0,0,
334,0,0,2,0,0,15,214,0,0,0,0,1,0,
348,0,0,18,0,0,29,215,0,0,0,0,1,0,
362,0,0,19,33,0,2,217,0,0,0,0,1,0,
376,0,0,20,0,0,29,219,0,0,0,0,1,0,
390,0,0,21,54,0,9,237,0,0,0,0,1,0,
404,0,0,21,0,0,13,242,0,2,0,0,1,0,2,3,0,0,2,1,0,0,
426,0,0,22,39,0,2,248,0,1,1,0,1,0,1,3,0,0,
444,0,0,23,39,0,2,250,0,1,1,0,1,0,1,3,0,0,
462,0,0,24,39,0,2,255,0,1,1,0,1,0,1,3,0,0,
480,0,0,25,39,0,2,257,0,1,1,0,1,0,1,3,0,0,
498,0,0,26,41,0,2,263,0,1,1,0,1,0,1,3,0,0,
516,0,0,27,39,0,2,265,0,1,1,0,1,0,1,3,0,0,
534,0,0,28,39,0,2,270,0,1,1,0,1,0,1,3,0,0,
552,0,0,29,37,0,2,272,0,1,1,0,1,0,1,3,0,0,
570,0,0,30,35,0,2,277,0,1,1,0,1,0,1,3,0,0,
588,0,0,31,37,0,2,282,0,1,1,0,1,0,1,3,0,0,
606,0,0,32,37,0,2,284,0,1,1,0,1,0,1,3,0,0,
624,0,0,21,0,0,15,292,0,0,0,0,1,0,
638,0,0,33,33,0,2,294,0,0,0,0,1,0,
652,0,0,34,0,0,30,296,0,0,0,0,1,0,
666,0,0,35,0,0,31,445,0,0,0,0,1,0,
680,0,0,36,0,0,32,456,0,0,0,0,1,0,
};
/*
* File name : PCSRestoreapi.pc
* Module ID : MD-P21-01
* Module Name : PCSRestore.c
* Purpose : Some functions called by PCSRestore.pc
* Author : Mr. Zhujingkun
* Date Created : 1999,07,29
* Version : Version 1.0
* Environment : Digital UNIX
* Portability : UNIX Platform
* Warnings : no
* References :
* Calling Syntax :
* Parameters :
* Returns :
* Calling Function:
* Called Functions: PCSRestore.pc
* Datastores and usages:
* Report : None
* Screens : None
* Messages Files : None
* Change Log :
* Change No. 01 :
*/
#include "stdio.h"
#include "stdlib.h"
#include "PCSRestore.h"
#include "PCSRestoreapi.h"
#include "sqlcpr.h"
/*Errorlog has been changed to ourselves
#include "errlog.h" */
/*
Read a line to a string from a file, \n is excluded.
return 1 if sucessful, 0 otherwise
Do not close the file.
*/
int myapi_ReadALine( char* cLine, FILE* hTable )
{
char cChar;
int i=0;
cLine[0] = '\0';
while( (cChar = fgetc( hTable )) != '\n' )
{
if( cChar == EOF ) return(0);
cLine[i++] = cChar;
/* truncated if superlong */
if( i >= MAX_LINE_LEN ) i=0;
cLine[i] = '\0';
}
return(1);
}
/*
*Record the error message into errorlog file
*Need to truncate or delete as the size grow
*/
void ErrorLog( const char* sErrorMessage )
{
FILE* hErrorFile;
char cDateTime[100];
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( sErrorMessage, hErrorFile );
fclose( hErrorFile );
sprintf( cDateTime, "date >> %s\n", ERROR_LOG_FILE );
system( cDateTime );
}
/*
*Get the file size
*/
size_t GetFileSize( char *cFileName )
{
size_t ulSize;
FILE *hThisFile;
char cNextChar;
char cErrorMessage[500];
hThisFile = fopen( cFileName, "r" );
if( hThisFile == NULL )
{
/* ProcessError(LOG_ERROR, "PCSRestoreapi: GetFileSize- Cannot open the file: %s!\n",cFileName );*/
sprintf( cErrorMessage,"PCSRestoreapi: GetFileSize- Cannot open the file: %s!\n",cFileName );
ErrorLog( cErrorMessage );
return(0);
}
ulSize=0;
while( (cNextChar = fgetc(hThisFile)) != EOF ) ulSize++;
fclose( hThisFile );
return( ulSize );
}
/*
*Initialize the system resource used by this modual
*connect to the database and initialize the errorlog file
*/
void InitPCSRestore()
{
/* define the varible to connect to the database */
/* VARCHAR userid[20]; */
struct { unsigned short len; unsigned char arr[20]; } userid;
/* VARCHAR password[20]; */
struct { unsigned short len; unsigned char arr[20]; } password;
strcpy( userid.arr, "PCSDBA" );
userid.len = strlen( userid.arr );
strcpy( password.arr, "DBA" );
password.len = strlen( password.arr );
/* EXEC SQL WHENEVER SQLERROR DO sqlerror(); */
;
/* EXEC SQL CONNECT :userid IDENTIFIED BY :password; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 3;
sqlstm.iters = (unsigned int )10;
sqlstm.offset = (unsigned int )2;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlstm.sqhstv[0] = (unsigned char *)&userid;
sqlstm.sqhstl[0] = (unsigned int )22;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqhstv[1] = (unsigned char *)&password;
sqlstm.sqhstl[1] = (unsigned int )22;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) sqlerror();
}
printf("Connected to Oracle as user: %s\n\n\n", userid.arr );
}
/*
*Restore send log table and the associated tables from crash
*/
int SndLogRestore()
{
/* EXEC SQL BEGIN DECLARE SECTION; */
long l_fsxh;
char c_sjfl;
/* EXEC SQL END DECLARE SECTION; */
/* EXEC SQL DECLARE fsrz_cursor CURSOR FOR
SELECT FSXH, SJFL
FROM t_fsrz
WHERE SJZT=1; */
/*FSRZ_JSZ*/
/* EXEC SQL OPEN fsrz_cursor; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 3;
sqlstm.stmt = sq0002;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )28;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) sqlerror();
}
while(1)
{
/* EXEC SQL WHENEVER NOT FOUND DO break; */
/* EXEC SQL FETCH fsrz_cursor
INTO :l_fsxh, :c_sjfl; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 3;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )42;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlstm.sqhstv[0] = (unsigned char *)&l_fsxh;
sqlstm.sqhstl[0] = (unsigned int )4;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqhstv[1] = (unsigned char *)&c_sjfl;
sqlstm.sqhstl[1] = (unsigned int )1;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) break;
if (sqlca.sqlcode < 0) sqlerror();
}
switch( c_sjfl )
{
case SJFL_ZDYS:
printf("Delete FS_ZDYS record.\n");
/* EXEC SQL DELETE FROM t_fszdyssj
WHERE FSXH = :l_fsxh; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 3;
sqlstm.stmt = "delete from t_fszdyssj where FSXH=:b0";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )64;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlstm.sqhstv[0] = (unsigned char *)&l_fsxh;
sqlstm.sqhstl[0] = (unsigned int )4;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) break;
if (sqlca.sqlcode < 0) sqlerror();
}
/* EXEC SQL DELETE FROM t_fszdyssm
WHERE FSXH = :l_fsxh; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 3;
sqlstm.stmt = "delete from t_fszdyssm where FSXH=:b0";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )82;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlstm.sqhstv[0] = (unsigned char *)&l_fsxh;
sqlstm.sqhstl[0] = (unsigned int )4;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) break;
if (sqlca.sqlcode < 0) sqlerror();
}
break;
case SJFL_PDYS:
printf("Delete FS_PDYS record.\n");
/* EXEC SQL DELETE FROM t_fspdyssj
WHERE FSXH = :l_fsxh; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 3;
sqlstm.stmt = "delete from t_fspdyssj where FSXH=:b0";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )100;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlstm.sqhstv[0] = (unsigned char *)&l_fsxh;
sqlstm.sqhstl[0] = (unsigned int )4;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) break;
if (sqlca.sqlcode < 0) sqlerror();
}
/* EXEC SQL DELETE FROM t_fspdyssm
WHERE FSXH = :l_fsxh; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 3;
sqlstm.stmt = "delete from t_fspdyssm where FSXH=:b0";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )118;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlstm.sqhstv[0] = (unsigned char *)&l_fsxh;
sqlstm.sqhstl[0] = (unsigned int )4;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) break;
if (sqlca.sqlcode < 0) sqlerror();
}
break;
case SJFL_BKML:
printf("Delete FS_BKML record.\n");
printf("FSXH=%li SJFL=%i\n", l_fsxh, c_sjfl);
/* EXEC SQL DELETE FROM t_fsbkjhmlnr
WHERE FSXH = :l_fsxh; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 3;
sqlstm.stmt = "delete from t_fsbkjhmlnr where FSXH=:b0";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )136;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlstm.sqhstv[0] = (unsigned char *)&l_fsxh;
sqlstm.sqhstl[0] = (unsigned int )4;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) break;
if (sqlca.sqlcode < 0) sqlerror();
}
/* EXEC SQL DELETE FROM t_fsbkjhml
WHERE FSXH = :l_fsxh; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 3;
sqlstm.stmt = "delete from t_fsbkjhml where FSXH=:b0";
sqlstm.iters = (unsigned int )1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -