home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: Product
/
Product.zip
/
DBDEMO.ZIP
/
DEMODB.ZIP
/
D30ACBA4.C
< prev
next >
Wrap
Text File
|
1991-07-03
|
15KB
|
550 lines
static unsigned char sqla_program_id[40] =
{111,65,65,66,65,67,66,67,84,71,82,65,89,32,32,32,68,51,48,65,
67,66,65,52,102,66,88,80,74,68,72,72,32,32,32,32,32,32,32,32};
#ifdef LINT_ARGS
short far pascal sqlaaloc(unsigned short,
unsigned short,
unsigned short,
void far *);
short far pascal sqlacall(unsigned short,
unsigned short,
unsigned short,
unsigned short,
void far *);
short far pascal sqladloc(unsigned short,
void far *);
short far pascal sqlasets(unsigned short,
unsigned char far *,
void far *);
short far pascal sqlasetv(unsigned short,
unsigned short,
unsigned short,
unsigned short,
void far *,
void far *,
void far *);
short far pascal sqlastop(void far *);
short far pascal sqlastrt(void far *,
void far *,
struct sqlca far *);
short far pascal sqlausda(unsigned short,
struct sqlda far *,
void far *);
#else
short far pascal sqlaaloc( );
short far pascal sqlacall( );
short far pascal sqladloc( );
short far pascal sqlasets( );
short far pascal sqlasetv( );
short far pascal sqlastop( );
short far pascal sqlastrt( );
short far pascal sqlausda( );
#endif
/* ********************************************************************** */
/* */
/* APPLICATION D30ACBA4.SQC - TEMPORARY FIX FOR SYMPHONY FILE IMPORT */
/* CREATED WITH DEFAULT DATABASE PARAMETERS IN SYMPHONY */
/* */
/* THIS PROGRAM IS BEING USED ON A TEMPORARY BASIS TO DELETE 9 ROWS FROM */
/* THE BOX TABLE AND 5 ROWS FROM THE CUSTOMER TABLE. THESE ROWS WERE */
/* IMPORTED ALONG WITH ALL THE CORRECT DATA FROM SYMPHONY FILES. THE ROWS */
/* BEING DELETED ARE NOT DATA ROWS BUT HEADER ROWS AND TRASH ROWS. */
/* W. BROWN A10/814 10/15/87 */
/* *********************************************************************** */
/* */
/* MODIFICATIONS: */
/* Date Author Change */
/* */
/* 12/10/87 D.J.Grant Added SQLEISIG function call, and */
/* enhances exit_error to also print */
/* SQLERRD[0] - [5] and SQL_ERRP. */
/* 02/03/89 W.B.Brown upgraded to release 3.0 */
/* */
/* *********************************************************************** */
/* Include library functions **** ******** PAGE 3 */
#include <stdio.h>
#include <string.h>
#include <sql.h>
#include <sqlenv.h>
#include <sqlca.h>
#include <stdlib.h>
struct sqlca sqlca;
unsigned char msg_buf[512]; /* SQL error message buffer */
unsigned char dbase[] = "BANK";
unsigned char password[] = "";
unsigned char errfile[] = "D30ACBA4.ERR";
/* Declare rte_label - progress marker */
unsigned char rte_label[16] = " ";
unsigned char sqlerrp_value[9] = " "; /* error value */
int errlevel = 0;
/* *********** TABLES USED IN THIS PROGRAM ****************** */
/* CUSTOMER TABLE BOX TABLE
CU_SSN CHAR(11) NOT NULL B_NUMB CHAR(3) NOT NULL
CU_NAME CHAR(30) NOT NULL B_SIZE CHAR(1) NOT NULL
CU_ADDR1 CHAR(25) NOT NULL B_RENT DEC(3,2) NOT NULL
CU_ADDR2 CHAR(25) NOT NULL B_SSN CHAR(11) NULLABLE
CU_ZIP CHAR(5) NOT NULL B_PAYUP CHAR(3) NULLABLE
*/
/* SQL DECLARE SECTION - Host variables */
/*
EXEC SQL BEGIN DECLARE SECTION;
*/
unsigned char ssn[12]; /* Customer Table variables */
short custcnt;
unsigned char bnumb[4]; /* Box Table variables */
short boxcnt;
/*
EXEC SQL END DECLARE SECTION;
*/
/* END OF SQL DECLARE SECTION - Host variables */
/* ** BEGIN MAIN FUNCTION ******* ******** */
int main (void);
main ()
{
FILE *ptr_errfile;
/* Declare a short integer to receive the return code message length-SQL */
/* Declare a short integer to indicate dbase open(0) or failed (-1). */
/* Declare a short integer to indicate error file open (-1) or closed (0) */
short rc = 0; /* From sqlaintp - initialize to 0 */
short dbas_cls = 0; /* Initialize to open. */
short err_cls = 0;
/* ************************************* */
/* */
/* SQL EXCEPTION HANDLING */
/* */
/* ************************************* */
/*
EXEC SQL
WHENEVER SQLERROR GOTO ret_code;
*/
/*
EXEC SQL
WHENEVER SQLWARNING CONTINUE;
*/
/*
EXEC SQL
WHENEVER NOT FOUND CONTINUE;
*/
/* **************************************** */
strcpy(rte_label,"instal sqleisig");
sqleisig(&sqlca); /* ctrl-break processing */
if (sqlca.sqlcode != 0)
{
goto ret_code;
}
/* **************************************** */
/* ******************************************************************* */
/* */
/* Store the name of the routine in rte_label for error tracking */
/* Start the database using the function "sqlestrd"; check for error on */
/* start-database function. */
/* */
/* ****************************** */
/* */
strcpy(rte_label,"start database ");
start_dbres:
sqlestrd (dbase,password,'S',&sqlca);
if (sqlca.sqlcode == -1015) /* If start db func */
{ /* fails, call restart */
strcpy(rte_label,"restart databas"); /* func. */
sqlerest(dbase,password,&sqlca); /* Check for failed */
if (sqlca.sqlcode != 0) /* restart; on error */
{ /* set dbase closed, */
dbas_cls = -1; /* go to error exit. */
goto ret_code;
}
strcpy(rte_label,"start database2");
sqlestrd (dbase,password,'S',&sqlca); /* Good restart-start */
} /* db again. */
if (sqlca.sqlcode != 0) /* Check 2nd start for */
{ /* failure; if failed, */
dbas_cls = -1; /* set flag to closed. */
goto ret_code; /* Also checks for any */
} /* other error code on */
/* 1st sqlestrd. */
/* ***************************** */
/* DELETE TRASH ROWS FROM CUSTOMER AND BOX TABLES */
strcpy (rte_label,"delt cust name ");
/*
EXEC SQL
DELETE FROM CUSTOMER
WHERE CU_SSN = 'Name ';
*/
{
sqlastrt(sqla_program_id,0L,&sqlca);
sqlacall((unsigned short)24,1,0,0,0L);
if (sqlca.sqlcode < 0)
{
sqlastop(0L);
goto ret_code;
}
sqlastop(0L);
}
strcpy (rte_label,"delt cust ssn ");
/*
EXEC SQL
DELETE FROM CUSTOMER
WHERE CU_SSN = 'ssn ';
*/
{
sqlastrt(sqla_program_id,0L,&sqlca);
sqlacall((unsigned short)24,2,0,0,0L);
if (sqlca.sqlcode < 0)
{
sqlastop(0L);
goto ret_code;
}
sqlastop(0L);
}
strcpy (rte_label,"delete box Nam ");
/*
EXEC SQL
DELETE FROM BOX
WHERE B_NUMB = 'Nam';
*/
{
sqlastrt(sqla_program_id,0L,&sqlca);
sqlacall((unsigned short)24,3,0,0,0L);
if (sqlca.sqlcode < 0)
{
sqlastop(0L);
goto ret_code;
}
sqlastop(0L);
}
strcpy (rte_label,"delete box BNU ");
/*
EXEC SQL
DELETE FROM BOX
WHERE B_NUMB = 'BNU';
*/
{
sqlastrt(sqla_program_id,0L,&sqlca);
sqlacall((unsigned short)24,4,0,0,0L);
if (sqlca.sqlcode < 0)
{
sqlastop(0L);
goto ret_code;
}
sqlastop(0L);
}
strcpy (rte_label,"delete box BRE ");
/*
EXEC SQL
DELETE FROM BOX
WHERE B_NUMB = 'BSS';
*/
{
sqlastrt(sqla_program_id,0L,&sqlca);
sqlacall((unsigned short)24,5,0,0,0L);
if (sqlca.sqlcode < 0)
{
sqlastop(0L);
goto ret_code;
}
sqlastop(0L);
}
strcpy (rte_label,"delete box BRE ");
/*
EXEC SQL
DELETE FROM BOX
WHERE B_NUMB = 'BRE';
*/
{
sqlastrt(sqla_program_id,0L,&sqlca);
sqlacall((unsigned short)24,6,0,0,0L);
if (sqlca.sqlcode < 0)
{
sqlastop(0L);
goto ret_code;
}
sqlastop(0L);
}
strcpy (rte_label,"delete box BSI ");
/*
EXEC SQL
DELETE FROM BOX
WHERE B_NUMB = 'BSI';
*/
{
sqlastrt(sqla_program_id,0L,&sqlca);
sqlacall((unsigned short)24,7,0,0,0L);
if (sqlca.sqlcode < 0)
{
sqlastop(0L);
goto ret_code;
}
sqlastop(0L);
}
strcpy (rte_label,"count cust rows");
/*
EXEC SQL
SELECT COUNT (*)
INTO :custcnt
FROM CUSTOMER;
*/
{
sqlastrt(sqla_program_id,0L,&sqlca);
sqlaaloc(2,1,1,0L);
sqlasetv(2,0,500,2,&custcnt,0L,0L);
sqlacall((unsigned short)24,8,0,2,0L);
if (sqlca.sqlcode < 0)
{
sqlastop(0L);
goto ret_code;
}
sqlastop(0L);
}
printf ("\nNUMBER OF CUSTOMER ROWS AFTER DELETE: %d\n",custcnt);
strcpy (rte_label,"count box rows");
/*
EXEC SQL
SELECT COUNT (*)
INTO :boxcnt
FROM BOX;
*/
{
sqlastrt(sqla_program_id,0L,&sqlca);
sqlaaloc(2,1,2,0L);
sqlasetv(2,0,500,2,&boxcnt,0L,0L);
sqlacall((unsigned short)24,9,0,2,0L);
if (sqlca.sqlcode < 0)
{
sqlastop(0L);
goto ret_code;
}
sqlastop(0L);
}
printf ("\nNUMBER OF BOX ROWS AFTER DELETE: %d\n",boxcnt);
goto end;
/* ******************************* */
/* */
/* EXIT ERROR ROUTINE - Log error information to screen or print file. */
/* */
/* ******************************* */
ret_code:
if ((ptr_errfile = fopen(errfile, "w")) == NULL)
{
printf ("\nUNABLE TO OPEN D30ACBA4.ERR\n");
printf ("%s\n",rte_label);
printf ("SQLCODE IS %ld\n",sqlca.sqlcode);
errlevel = 2;
goto continue_err;
}
fprintf(ptr_errfile,"%15s\n",rte_label);
fprintf(ptr_errfile,"SQLCODE IS %ld\n",sqlca.sqlcode);
errlevel = 2;
fprintf(ptr_errfile,"\nSQLERRD[0] is %ld",sqlca.sqlerrd[0]);
fprintf(ptr_errfile,"\nSQLERRD[1] is %ld",sqlca.sqlerrd[1]);
fprintf(ptr_errfile,"\nSQLERRD[2] is %ld",sqlca.sqlerrd[2]);
fprintf(ptr_errfile,"\nSQLERRD[3] is %ld",sqlca.sqlerrd[3]);
fprintf(ptr_errfile,"\nSQLERRD[4] is %ld",sqlca.sqlerrd[4]);
fprintf(ptr_errfile,"\nSQLERRD[5] is %ld",sqlca.sqlerrd[5]);
memcpy (sqlerrp_value, sqlca.sqlerrp, 8);
fprintf(ptr_errfile,"\nSQLERRP is %s",sqlerrp_value);
rc = sqlaintp(msg_buf,512,0,&sqlca);
if (rc < 0)
{
fprintf (ptr_errfile, "SQLAINTP ERROR. Return Code = %d",rc);
}
else if (rc > 0)
{
fprintf (ptr_errfile,"\n");
fprintf (ptr_errfile,msg_buf);
}
err_cls = -1;
continue_err:
/*
EXEC SQL
WHENEVER SQLERROR CONTINUE;
*/
/*
EXEC SQL
ROLLBACK WORK;
*/
{
sqlastrt(sqla_program_id,0L,&sqlca);
sqlacall((unsigned short)28,0,0,0,0L);
sqlastop(0L);
}
if (sqlca.sqlcode < 0)
{
if ((ptr_errfile = fopen(errfile,"a")) == NULL)
{
printf ("\nUNABLE TO OPEN D30ACBA4.ERR -- ROLLBACK FAILED");
goto end;
}
fprintf (ptr_errfile,"\nSQLCODE IS %ld, ROLLBACK FAILED.",sqlca.sqlcode);
}
/* ************************** ******************* */
/* */
/* END OF PROGRAM - ROUTINE LABEL "END" */
/* */
/* ************************************* */
end:
if (dbas_cls == 0)
{ /* if database is open */
strcpy(rte_label,"stop database ");
sqlestpd (&sqlca); /* Stop using database */
}
if (err_cls == -1) /* If an SQL or 'C' */
{ /* error has occurred */
fclose(ptr_errfile); /* close error file. */
}
return(errlevel);
} /* END MAIN FUNCTION */