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

📄 pcsrestoreapi.c

📁 unix 下用pro*c tuxedo 开发的东西
💻 C
📖 第 1 页 / 共 3 页
字号:

/* 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 + -