program db_key (input,output);
DATABASE PERS = FILENAME 'PERSONNEL';
type
Rdb_Key_Type = BASED ON EMPLOYEES.RDB$DB_KEY;
Rdb_Name_Type = BASED ON EMPLOYEES.LAST_NAME;
var
Rdb_Key_Array : ARRAY [1..101] OF Rdb_Key_Type;
Rdb_Name_Array : ARRAY [1..101] OF Rdb_Name_Type;
Cnt : INTEGER := 1;
begin
READY PERS;
START_TRANSACTION READ_ONLY;
FOR FIRST 100 E IN EMPLOYEES SORTED BY E.EMPLOYEE_ID
Rdb_Key_Array[Cnt] := E.RDB$DB_KEY;
Rdb_Name_Array[Cnt] := E.LAST_NAME;
WRITELN(E.LAST_NAME, ' - 1st pass');
Cnt := Cnt + 1;
END_FOR;
for Cnt := Cnt - 1 downto 1 do
FOR E IN EMPLOYEES
WITH E.RDB$DB_KEY = Rdb_Key_array[Cnt]
if E.LAST_NAME <> Rdb_Name_Array[Cnt]
then
writeln (E.LAST_NAME, 'DOES NOT MATCH',
Rdb_Name_Array[Cnt])
else
writeln (E.LAST_NAME, ' - 2nd pass');
END_FOR;
COMMIT;
FINISH;
end.