home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: Product
/
Product.zip
/
DBDEMO.ZIP
/
DEMODB.ZIP
/
D30ACBA4.SQC
< prev
next >
Wrap
Text File
|
1991-06-03
|
11KB
|
320 lines
/* ********************************************************************** */
/* */
/* 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 ';
strcpy (rte_label,"delt cust ssn ");
EXEC SQL
DELETE FROM CUSTOMER
WHERE CU_SSN = 'ssn ';
strcpy (rte_label,"delete box Nam ");
EXEC SQL
DELETE FROM BOX
WHERE B_NUMB = 'Nam';
strcpy (rte_label,"delete box BNU ");
EXEC SQL
DELETE FROM BOX
WHERE B_NUMB = 'BNU';
strcpy (rte_label,"delete box BRE ");
EXEC SQL
DELETE FROM BOX
WHERE B_NUMB = 'BSS';
strcpy (rte_label,"delete box BRE ");
EXEC SQL
DELETE FROM BOX
WHERE B_NUMB = 'BRE';
strcpy (rte_label,"delete box BSI ");
EXEC SQL
DELETE FROM BOX
WHERE B_NUMB = 'BSI';
strcpy (rte_label,"count cust rows");
EXEC SQL
SELECT COUNT (*)
INTO :custcnt
FROM CUSTOMER;
printf ("\nNUMBER OF CUSTOMER ROWS AFTER DELETE: %d\n",custcnt);
strcpy (rte_label,"count box rows");
EXEC SQL
SELECT COUNT (*)
INTO :boxcnt
FROM BOX;
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;
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 */