/************************************************************************
*		
* READ THIS SECTION   READ THIS SECTION     READ THIS SECTION	
*  
* Required files: The database referenced below. In this case, 
*                  the database personnel.db
*
* 
*	Compilation instructions (after you copy the sqlpre.com file over to
*                                  your directory):
*
*  This assumes that you have an file named filename.sc in your directory
*  If so, execute the following commands:
***********************************
*  @sqlpre filename (no extension)
*  run filename
************************************
*
*
*************************************************************************/
#include <stdio.h> 
#include <string.h>
#include <descrip.h>

	  
void getinfo(char [], char [], int *);
void sys$putmsg(char *,int,int,int);

 EXEC SQL INCLUDE SQLCA;

 /* Edit this line to declare an alias for a database that you own */
 EXEC SQL declare alias_1 alias filename personnel.db;
 
main()
 {
	char emp_id[8], last_name[20], name[20];
	int salary;

 	printf("\n\n\n******* Disconnect from default ***************\n");
 	EXEC SQL disconnect default;
 	if (SQLCA.SQLCODE != 0) SYS$PUTMSG(&RDB$MESSAGE_VECTOR,0,0,0);
	printf("\n\n\n");

	printf("********* Establish CONNECTION 1 **********\n");

	EXEC SQL connect to 'alias alias_1 filename personnel.db' as 'a1';
	if (SQLCA.SQLCODE !=  0) SYS$PUTMSG(&RDB$MESSAGE_VECTOR,0,0,0);

	printf("********* Insert several records  **********\n");
	getinfo(emp_id, last_name, &salary);

	EXEC SQL insert into alias_1.employees (employee_id, last_name, salary)
	values (:emp_id, :last_name, :salary);
 	if (SQLCA.SQLCODE != 0) SYS$PUTMSG(&RDB$MESSAGE_VECTOR,0,0,0);

        getinfo(emp_id, last_name, &salary);
        EXEC SQL insert into alias_1.employees (employee_id, last_name,salary)
        values (:emp_id, :last_name, :salary);
        if (SQLCA.SQLCODE != 0) SYS$PUTMSG(&RDB$MESSAGE_VECTOR,0,0,0);

	getinfo(emp_id, last_name, &salary);
        EXEC SQL insert into alias_1.employees (employee_id, last_name,salary)
        values (:emp_id, :last_name, :salary);
        if (SQLCA.SQLCODE != 0) SYS$PUTMSG(&RDB$MESSAGE_VECTOR,0,0,0);
        printf("\n\n\n");

        printf("********* Retrieve the record  **********\n");	
	printf("Enter name to locate: ");
	scanf("%s", name);

	EXEC SQL select employee_id, last_name,salary into :emp_id,
	:last_name, :salary from alias_1.employees
         where last_name = :name;

 	if (SQLCA.SQLCODE != 0) SYS$PUTMSG(&RDB$MESSAGE_VECTOR,0,0,0);
	printf("\n\n\n");
	printf ("Employee_id = %s\n",emp_id);
	printf ("Last_name   = %s\n",last_name);
	printf("Salary = %d\n", salary);
	printf("\n\n\n");

	printf("***********COMMITTING CHANGES ***************\n");
	EXEC SQL commit;	

 	printf("*************** DISCONNECT ALL CONNECTIONS ***************\n");
	EXEC SQL disconnect all;
 	if (SQLCA.SQLCODE != 0) SYS$PUTMSG(&RDB$MESSAGE_VECTOR,0,0,0);

}
void getinfo(char id[], char name[], int *salary)
{
   printf("Enter employee id: ");
   scanf("%s", id);

   printf("Enter employee name: ");
   scanf("%s", name);

   printf("Enter salary: ");
   scanf("%d", salary);
}
