-- Copyright © Oracle Corporation 1995. All Rights Reserved. -- The procedures in this SQL module are called by subroutines, which in -- turn are called by the program SQL$DIST_TRANS.FOR. -- ------------------------------------------------------------------------- -- Header Information Section ------------------------------------------------------------------------- MODULE SQL$DIST_TRANS_FOR -- Module name LANGUAGE FORTRAN -- Language of calling program AUTHORIZATION RDB$DBHANDLE -- Authorization ID PARAMETER COLONS -- Parameter names prefixed with colons ------------------------------------------------------------------------- -- Declare Statement Section -- Declare databases using aliases. ------------------------------------------------------------------------- DECLARE east ALIAS FILENAME 2pceast DECLARE west ALIAS FILENAME 2pcwest ------------------------------------------------------------------------- -- Procedure Section ------------------------------------------------------------------------- -- Start a transaction using the west database. This procedure is called -- from the routine RDB_DEL_WEST. PROCEDURE START_WEST SQLCODE; SET TRANSACTION ON west USING (READ WRITE RESERVING west.EMPLOYEES, west.JOB_HISTORY, west.SALARY_HISTORY, west.DEGREES FOR PROTECTED WRITE); -- Start a transaction using the east database. This procedure is called -- from the routine RDB_ADD_EAST. PROCEDURE START_EAST SQLCODE; SET TRANSACTION ON east USING (READ WRITE NOWAIT RESERVING east.EMPLOYEES FOR PROTECTED WRITE); -- Start a distributed transaction using the west and the east databases. -- This procedure is called from the routine TRANSFER_EAST. PROCEDURE START_2DB SQLCODE; SET TRANSACTION ON west USING (READ WRITE RESERVING west.EMPLOYEES, west.JOB_HISTORY, west.SALARY_HISTORY, west.DEGREES FOR PROTECTED WRITE) AND ON east USING (READ WRITE NOWAIT RESERVING east.EMPLOYEES FOR SHARED WRITE); -- Select the employee record from the west. This procedure is called -- from the routines RDB_DEL_WEST and TRANSFER_EAST. PROCEDURE SELECT_WEST SQLCODE :EMP_ID CHAR(5) :EMP_LASTNAME CHAR(14) :EMP_FIRSTNAME CHAR(10) :EMP_SEX CHAR(1) :EMP_MIDDLE CHAR(1) :EMP_ADDRESS1 CHAR(25) :EMP_ADDRESS2 CHAR(20) :EMP_CITY CHAR(20) :EMP_STATE CHAR(2) :EMP_ZIP CHAR(5) :EMP_BIRTHDAY DATE BY DESCRIPTOR :EMP_STATUS_CODE CHAR(1); SELECT EMPLOYEE_ID, LAST_NAME, FIRST_NAME, SEX, MIDDLE_INITIAL, ADDRESS_DATA_1, ADDRESS_DATA_2, CITY, STATE, POSTAL_CODE, BIRTHDAY, STATUS_CODE INTO :emp_id, :emp_lastname, :emp_firstname, :emp_sex, :emp_middle, :emp_address1, :emp_address2, :emp_city, :emp_state, :emp_zip, :emp_birthday, :emp_status_code FROM west.EMPLOYEES WHERE west.EMPLOYEES.EMPLOYEE_ID = :emp_id; -- Delete the employee record from the west database. This procedure is -- called from the routines RDB_DEL_WEST and TRANSFER_EAST. PROCEDURE DELETE_WEST SQLCODE :EMP_ID CHAR(5); DELETE FROM west.EMPLOYEES E WHERE E.EMPLOYEE_ID = :emp_id; -- Insert the employee record into the east database. This procedure is -- called from the routines RDB_ADD_WEST and TRANSFER_EAST. PROCEDURE INSERT_EAST SQLCODE :EMP_ID CHAR(5) :EMP_LASTNAME CHAR(14) :EMP_FIRSTNAME CHAR(10) :EMP_SEX CHAR(1) :EMP_MIDDLE CHAR(1) :EMP_ADDRESS1 CHAR(25) :EMP_ADDRESS2 CHAR(20) :EMP_CITY CHAR(20) :EMP_STATE CHAR(2) :EMP_ZIP CHAR(5) :EMP_BIRTHDAY DATE BY DESCRIPTOR :EMP_STATUS_CODE CHAR(1); INSERT INTO east.EMPLOYEES (EMPLOYEE_ID, LAST_NAME, FIRST_NAME, SEX, MIDDLE_INITIAL, ADDRESS_DATA_1, ADDRESS_DATA_2, CITY, STATE, POSTAL_CODE, BIRTHDAY, STATUS_CODE) VALUES (:emp_id, :emp_lastname, :emp_firstname, :emp_sex, :emp_middle, :emp_address1, :emp_address2, :emp_city, :emp_state, :emp_zip, :emp_birthday, :emp_status_code);