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

⟦c2e7071b1⟧ Ada Source

    Length: 7168 (0x1c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Number_Manager, seg_02615f, seg_026ce7

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 
└─⟦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 Text_Io;

package body Number_Manager is


    Number_Table : array (From .. To) of Element;


    procedure Init_Number is
    begin
        Text_Io.Put_Line ("number_manager.init : from : " &
                          Number_Range'Image (From) &
                          " to : " & Number_Range'Image (To));
        for I in From .. To loop
            Number_Table (I) := Free_Element;
        end loop;
    end Init_Number;


    procedure Allocate (Value : in Element;
                        Number : out Number_Range;
                        Success : out Boolean) is
        Found : Boolean := False;
        I : Number_Range := From;  
    begin  
        Show_Number_Status;

        for I in From .. To loop
            if Number_Table (I) = Free_Element then
                Number_Table (I) := Value;
                Found := True;
                Number := I;
            end if;
            exit when Found;
        end loop;
        Success := Found;

    exception
        when Numeric_Error =>
            Text_Io.Put_Line ("Exception : Numeric_Error");
            Success := False;
        when others =>
            Text_Io.Put_Line ("Exception OTHERS: in Number_Manager.Allocate");
            Success := False;

    end Allocate;


    procedure Deallocate (Number : in Number_Range) is
    begin
        Number_Table (Number) := Free_Element;
    end Deallocate;


    procedure Show_Number_Status is
    begin
        Text_Io.Put_Line ("------------- Number allocator ---------------");
        Text_Io.Put ("From : " & Number_Range'Image (From) &
                     "  to : " & Number_Range'Image (To));
        for I in From .. To loop
            Text_Io.Put_Line ("Number " & Number_Range'Image (I) &
                              Ascii.Ht & Element_Image (Number_Table (I)));
        end loop;
    end Show_Number_Status;


    procedure Show_Value (Number : in Number_Range;
                          Value : out Element;
                          Success : out Boolean) is

    begin  
        if Number_Table (Number) /= Free_Element then
            Success := True;
        else
            Success := False;
        end if;

        Value := Number_Table (Number);
    end Show_Value;


end Number_Manager;

E3 Meta Data

    nblk1=6
    nid=6
    hdr6=8
        [0x00] rec0=24 rec1=00 rec2=01 rec3=022
        [0x01] rec0=07 rec1=00 rec2=02 rec3=00e
        [0x02] rec0=1e rec1=00 rec2=05 rec3=05c
        [0x03] rec0=0b rec1=00 rec2=03 rec3=000
        [0x04] rec0=06 rec1=00 rec2=05 rec3=000
        [0x05] rec0=05 rec1=00 rec2=04 rec3=000
    tail 0x2152011aa83a56f1d18d7 0x42a00088462060003
Free Block Chain:
  0x6: 0000  00 04 00 22 80 05 6c 6f 6f 70 3b 05 00 17 20 20  ┆   "  loop;     ┆
  0x4: 0000  00 00 00 54 80 01 3b 01 00 11 20 20 20 20 20 20  ┆   T  ;         ┆