globalvalue RDB$_LOCK_CONFLICT;
globalvalue RDB$_DEADLOCK;
#include <stdio.h>
DATABASE PERS = FILENAME "PERSONNEL";
void handle_error()
{
if (RDB$STATUS == RDB$_LOCK_CONFLICT)
printf("database unavailable right now\n");
else
{
printf("Unexpected Error, Application Terminating\n");
RDML$SIGNAL_ERROR(RDB$MESSAGE_VECTOR);
}
return;
}
void access_employees()
{
READY PERS
ON ERROR
handle_error();
return;
END_ERROR;
START_TRANSACTION READ_WRITE NOWAIT
RESERVING EMPLOYEES FOR EXCLUSIVE WRITE
ON ERROR
handle_error();
return;
END_ERROR;
/* perform some read_write operation on the EMPLOYEES relation */
printf ("Accessing EMPLOYEES...\n");
COMMIT;
FINISH;
}
main()
{
int i;
for (i=0; i<=100; i++)
access_employees();
}