with Dbms_Declarations, Dbms, Text_Io; use Dbms_Declarations, Dbms, Text_Io; procedure Test is use Table_Operations, Index_Operations, Record_Operations, Field_Operations; Testfields : Create_Fields; Test_Database : Table; Test_Options : Dbms_Declarations.Open_Options := (Save_Every_Change => True, Id => 0); Test_Record : Table_Record; Short_Field : Record_Field; Short_Field_Name : Field_Name := (others => ' '); Real_Field : Record_Field; Real_Field_Name : Field_Name := (others => ' '); package Real_Io is new Float_Io (Dbms_Real_Type); use Real_Io; procedure Where_Am_I is Current_Rec : constant String := Record_Number'IMAGE ( Is_Current_Record_Number (Test_Database)); begin Put_Line ("Current Record Number:"); Put_Line (Current_Rec); end Where_Am_I; procedure How_Many_Am_I is begin Put_Line ("Number of Records:"); Put_Line (Long_Integer'IMAGE (Is_Number_Of_Records (Test_Database))); end How_Many_Am_I; procedure Who_Am_I is Short_Value : Dbms_Short_Numeric; Real_Value : Dbms_Real_Type; begin Get_Current_Record (Test_Database, Test_Record); Get_Short (Short_Value, Short_Field, Test_Record); Get_Real (Real_Value, Real_Field, Test_Record); Put ("Hello, my name is"); Put (Dbms_Short_Numeric'IMAGE (Short_Value)); Put (Real_Value, Fore => 2, Aft => 1, Exp => 0); New_Line; end Who_Am_I; procedure Am_I_Blank is begin Put ("Is Short_Field blank? "); if Is_Field_Blank (Short_Field, In_Record => Test_Record) then Put_Line ("Yes."); else Put_Line ("No."); end if; end Am_I_Blank; begin Impart; -- Create Test database and its index. if Table_Exists ("Test") then Put_Line ("Database exists."); return; end if; Create_Fields_Builder.Initialize (Testfields, 2); Create_Fields_Builder.Set (Testfields, "Short Value", (Kind => Short)); Create_Fields_Builder.Set (Testfields, "Real Value", (Kind => Real)); Create ("test", Testfields); Create_Index ("test", Primary, 1); Create_Fields_Builder.Dispose_Of (Testfields); -- Open Test and put in data. Open ("test", Test_Database, Test_Options); Initialize_Table_Record (Test_Database, Test_Record); Initialize_Record_Field (Test_Database, "Short Value", Short_Field); Initialize_Record_Field (Test_Database, "Real Value", Real_Field); Put_Short (1, Short_Field, Test_Record); Put_Real (1.0, Real_Field, Test_Record); Append (Test_Record, Test_Database); Put_Short (2, Short_Field, Test_Record); Put_Real (2.0, Real_Field, Test_Record); Append (Test_Record, Test_Database); Put_Short (3, Short_Field, Test_Record); Put_Real (3.0, Real_Field, Test_Record); Append (Test_Record, Test_Database); Put_Short (4, Short_Field, Test_Record); Put_Real (4.0, Real_Field, Test_Record); Append (Test_Record, Test_Database); Put_Line ("moving to record 2 ..."); Goto_Record (2, Test_Database); Where_Am_I; -- Display some information. Put_Line ("Database name:"); Put (Is_Table_Name (Test_Database)); New_Line; Put_Line ("Number of Fields:"); Put_Line (Dbms_Field_Count'IMAGE (Is_Number_Of_Fields (Test_Database))); Put_Line ("Number of Index Fields:"); Put_Line (Natural'IMAGE (Is_Number_Of_Index_Fields (Test_Database))); -- Delete current record and show its departure. How_Many_Am_I; Put_Line ("deleting a record ..."); Delete_Current_Record (Test_Database); How_Many_Am_I; Put_Line ("moving to first record ..."); Goto_First_Record (Test_Database); Where_Am_I; Put_Line ("moving to last record ..."); Goto_Last_Record (Test_Database); Where_Am_I; Put_Line ("moving to previous record ..."); Goto_Previous_Record (Test_Database); Where_Am_I; Put_Line ("moving to next record ..."); Goto_Next_Record (Test_Database); Where_Am_I; Put_Short (5, Short_Field, Test_Record); Put_Real (5.0, Real_Field, Test_Record); Update_Current_Record (Test_Database, Test_Record); Who_Am_I; Where_Am_I; Put_Short (6, Short_Field, Test_Record); Put_Real (6.0, Real_Field, Test_Record); Insert (Test_Database, Test_Record); Who_Am_I; Where_Am_I; How_Many_Am_I; Am_I_Blank; Erase (Short_Field, In_Record => Test_Record); Am_I_Blank; Put_Short (6, Short_Field, Test_Record); Am_I_Blank; Erase (Test_Record); Am_I_Blank; Put ("Short_Field's name is: "); Put_Line (Is_Field_Name (Short_Field, Test_Database)); Dispose_Of (Test_Record); Close (Test_Database); -- Check/Perform Copy, Delete, Rename, and Erase. Put_Line ("copying table ..."); Copy_Table ("test", "testcopy"); Put_Line ("deleting primary index ..."); Delete_Index ("test", 0); Put_Line ("deleting the test database ..."); Delete_Table ("test"); Put_Line ("renaming testcopy to test and erasing test ..."); Rename_Table ("testcopy", "test"); Erase_Table ("test"); -- Check the above. Put_Line ("opening test to verify no records ..."); Open ("test", Test_Database, Test_Options); How_Many_Am_I; Close (Test_Database); Put_Line ("deleting test ..."); Delete_Table ("test"); Depart; Put_Line ("Fin."); end Test;