/* Copyright © Oracle Corporation 1995. All Rights Reserved. */ CALL_OTHER: PROCEDURE (key, req_1); /*********************************************************************/ /* This subroutine is passed the dbkey and transaction handle */ /* from the DELETE_RECORD subroutine. With this information, it */ /* can find and display the employee_record associated with an */ /* employee_id specified in DELETE_RECORD and then return program */ /* control to the DELETE_RECORD subroutine. */ /*********************************************************************/ /* Declare variables. */ DECLARE LAST_NAME CHARACTER(14); DECLARE FIRST_NAME CHARACTER(10) ; DECLARE MIDDLE_INITIAL CHARACTER(1); DECLARE ADDRESS_DATA_1 CHARACTER(25) ; DECLARE ADDRESS_DATA_2 CHARACTER(25) ; DECLARE CITY CHARACTER(20) ; DECLARE STATE CHARACTER(2) ; DECLARE POSTAL_CODE CHARACTER(5) ; DECLARE SEX CHARACTER(1) ; DECLARE STATUS_CODE CHARACTER(1) ; DECLARE CANDIDATE_STATUS CHARACTER(255) VARYING; DECLARE COLLEGE_NAME CHARACTER(25) ; DECLARE COLLEGE_CODE CHARACTER(4); DECLARE employee_id CHARACTER(5); DECLARE err FIXED BINARY(31) EXTERNAL; DECLARE key CHARACTER(8); DECLARE trans_1 FIXED BINARY(31) EXTERNAL; DECLARE req_1 FIXED BINARY(31); DECLARE RDB_COMMAND CHARACTER(1024) VARYING, GET_COMMAND CHARACTER(128), FETCH_COMMAND CHARACTER(10); DECLARE RDB_STATUS FIXED BINARY(31), /* status value */ 1 RDB_STATUS_FIELDS BASED (ADDR(RDB_STATUS)), 2 RDB_STATUS_SUCCESS BIT(1), /* low-order bit */ 2 RDB_STATUS_REST BIT(31); /* bits 1 through 32 */ DECLARE RDB$INTERPRET ENTRY (ANY,ANY,ANY,ANY,ANY,ANY, ANY,ANY,ANY,ANY,ANY,ANY,ANY) OPTIONS (VARIABLE) RETURNS (FIXED BINARY(31)); DECLARE RDB$SIGNAL EXTERNAL ENTRY (ANY); /* Initialize variables. */ err = 0; /* The transaction was started in the DELETE_RECORD */ /* procedure, so there is no need to start a */ /* transaction here. Use the transacton handle */ /* to identify this request with the transaction */ /* started in DELETE_RECORD. Use the dbkey found */ /* in the DELETE_RECORD procedure to locate the */ /* correct employee record. */ RDB_COMMAND = 'START_STREAM ( TRANSACTION_HANDLE !VAL) ED USING ' !! ' E IN EMPLOYEES WITH E.RDB$DB_KEY = !VAL'; RDB_STATUS = RDB$INTERPRET(DESCRIPTOR (RDB_COMMAND), DESCRIPTOR (trans_1), DESCRIPTOR (key)); RDB_COMMAND = 'FETCH ED'; RDB_STATUS = RDB$INTERPRET(DESCRIPTOR (RDB_COMMAND)); /* Display the EMPLOYEES record. */ RDB_COMMAND = 'GET ( TRANSACTION_HANDLE !VAL) !VAL = E.LAST_NAME; ' !! '!VAL = E.FIRST_NAME; ' !! '!VAL = E.ADDRESS_DATA_1; ' !! '!VAL = E.ADDRESS_DATA_2; ' !! '!VAL = E.CITY; ' !! '!VAL = E.STATE; ' !! '!VAL = E.POSTAL_CODE; ' !! '!VAL = E.SEX END_GET;'; RDB_STATUS = RDB$INTERPRET(DESCRIPTOR (RDB_COMMAND), DESCRIPTOR (trans_1), DESCRIPTOR (last_name), DESCRIPTOR (first_name), DESCRIPTOR (address_data_1), DESCRIPTOR (address_data_2), DESCRIPTOR (city), DESCRIPTOR (state), DESCRIPTOR (postal_code), DESCRIPTOR (sex)); PUT SKIP LIST (last_name); PUT SKIP LIST (last_name); PUT SKIP LIST (first_name); PUT SKIP LIST (address_data_1); PUT SKIP LIST (address_data_2); PUT SKIP LIST (city); PUT SKIP LIST (state); PUT SKIP LIST (postal_code); PUT SKIP LIST (sex); RDB_COMMAND = 'END_STREAM ED'; RDB_STATUS = RDB$INTERPRET(DESCRIPTOR (RDB_COMMAND)); /* Return program control to CALL_OTHER. */ END CALL_OTHER;