-- Copyright © Oracle Corporation 1995. All Rights Reserved. -- The procedures in this SQL module are called by subprograms which -- in turn are called by the program SQL$DIST_TRANS.COB. -- ------------------------------------------------------------------------- -- Header Information Section ------------------------------------------------------------------------- MODULE SQL$DIST_TRANS_COB -- Module name LANGUAGE COBOL -- Language of calling program AUTHORIZATION RDB$DB_HANDLE -- Default authorization ID PARAMETER COLONS -- Parameters are prefixed with colons ------------------------------------------------------------------------- -- Declare Statement Section -- Attach to 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_RECORD RECORD EMP_ID CHAR(5) EMP_LASTNAME CHAR(14) EMP_FIRSTNAME CHAR(10) 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_SEX CHAR(1) EMP_BIRTHDAY DATE EMP_STATUS_CODE CHAR(1) END RECORD; SELECT * INTO :EMP_RECORD FROM west.EMPLOYEES WHERE west.EMPLOYEES.EMPLOYEE_ID = :emp_record.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 :EMPLOYEE_ID CHAR(5); DELETE FROM west.EMPLOYEES E WHERE E.EMPLOYEE_ID = :employee_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_RECORD RECORD EMP_ID CHAR(5) EMP_LASTNAME CHAR(14) EMP_FIRSTNAME CHAR(10) 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_SEX CHAR(1) EMP_BIRTHDAY DATE EMP_STATUS_CODE CHAR(1) END RECORD; INSERT INTO east.EMPLOYEES VALUES (:emp_record);