DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦8195a4efa⟧ Ada Source

    Length: 5120 (0x1400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Float_Io, seg_04ba79, separate Text_Io

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



with Number_Io;
use Number_Io;

separate (Text_Io)
package body Float_Io is
    pragma Suppress (Access_Check);
    pragma Suppress (Discriminant_Check);
    pragma Suppress (Index_Check);
    pragma Suppress (Length_Check);
    pragma Suppress (Division_Check);
    pragma Suppress (Overflow_Check);
    pragma Suppress (Elaboration_Check);

    Max_Float_Length : constant Natural := 64;

    procedure Get (File : in File_Type;
                   Item : out Num;
                   Width : in Field := 0) is
        Result : Io_Float;
    begin
        Safe_Support.File_Lock (File);
        Get_Float (File, Result, Width);
        begin
            Item := Num (Result);
        exception
            when Constraint_Error =>
                raise Data_Error;
        end;
        Safe_Support.File_Unlock (File);
    exception
        when others =>
            Safe_Support.File_Unlock (File);
            raise;
    end Get;

    procedure Get (Item : out Num; Width : in Field := 0) is
    begin
        -- Called get() does file_lock()/file_unlock()
        Get (Current_Input, Item, Width);
    end Get;

    procedure Put (File : in File_Type;
                   Item : in Num;
                   Fore : in Field := Default_Fore;
                   Aft : in Field := Default_Aft;
                   Exp : in Field := Default_Exp) is
        Str : String (1 .. Max_Float_Length);
        Len : Integer := Max_Float_Length;
    begin
        Safe_Support.File_Lock (File);
        Put_Float (Str, Io_Float (Item), Fore, Aft, Exp, Len);
        Put_String_On_One_Line (File, Str (1 .. Len));
        Safe_Support.File_Unlock (File);
    exception
        when others =>
            Safe_Support.File_Unlock (File);
            raise;
    end Put;

    procedure Put (Item : in Num;
                   Fore : in Field := Default_Fore;
                   Aft : in Field := Default_Aft;
                   Exp : in Field := Default_Exp) is
    begin
        -- Called put() does file_lock()/file_unlock()
        Put (Current_Output, Item, Fore, Aft, Exp);
    end Put;

    procedure Get (From : in String; Item : out Num; Last : out Positive) is
        Result : Io_Float;
        Error : Boolean := False;
        I : Integer;
    begin
        --
        -- test for end_error
        --
        I := From'First;
        loop
            if I > From'Last then
                raise End_Error;
            end if;
            exit when From (I) /= ' ' and then From (I) /= Ascii.Ht;
            I := I + 1;
        end loop;
        Getnum (From, Result, Last, Error);
        if Error then
            raise Data_Error;
        end if;
        begin
            Item := Num (Result);
        exception
            when Constraint_Error =>
                raise Data_Error;
        end;
    end Get;

    procedure Put (To : out String;
                   Item : in Num;
                   Aft : in Field := Default_Aft;
                   Exp : in Field := Default_Exp) is
        Len : Integer := To'Length;
    begin
        Put_Float (To, Io_Float (Item), -1, Aft, Exp, Len);
        if Len /= To'Length then
            Put_Line ("VADS internal error: cvtnum failed");
            raise Program_Error;
        end if;
    end Put;

end Float_Io;

E3 Meta Data

    nblk1=4
    nid=0
    hdr6=8
        [0x00] rec0=25 rec1=00 rec2=01 rec3=014
        [0x01] rec0=1b rec1=00 rec2=02 rec3=01c
        [0x02] rec0=23 rec1=00 rec2=03 rec3=010
        [0x03] rec0=0d rec1=00 rec2=04 rec3=000
    tail 0x21750c11a86843c12e143 0x42a00088462060003