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

⟦96d0c97b3⟧ Ada Source

    Length: 14336 (0x3800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Tuple, seg_0113a5, seg_0115af

Derivation

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

E3 Source Code



with Instance;

package body Tuple is


    procedure Null_Action (The_Tuple : Tuple.Object) is
    begin
        null;
    end Null_Action;


    function Cardinality (Of_Tuple : Tuple.Object) return Natural is
    begin
        return Of_Tuple.Count;
    end Cardinality;


    function Is_Null (The_Tuple : Tuple.Object) return Boolean is
    begin
        return The_Tuple.Count = 0;
    end Is_Null;


    procedure For_All (The_Tuple : Tuple.Object) is
    begin
        for I in 1 .. The_Tuple.Count loop
            Action (The_Tuple.Cells (I));
        end loop;
    end For_All;


    procedure Split (The_Tuple :     Tuple.Object;
                     In_Ref1   : out Instance.Reference) is
    begin
        In_Ref1 := The_Tuple.Cells (1);
    end Split;


    procedure Split (The_Tuple        :     Tuple.Object;
                     In_Ref1, In_Ref2 : out Instance.Reference) is
    begin
        In_Ref1 := The_Tuple.Cells (1);
        In_Ref2 := The_Tuple.Cells (2);
    end Split;

    procedure Split (The_Tuple                 :     Tuple.Object;
                     In_Ref1, In_Ref2, In_Ref3 : out Instance.Reference) is
    begin
        In_Ref1 := The_Tuple.Cells (1);
        In_Ref2 := The_Tuple.Cells (2);
        In_Ref3 := The_Tuple.Cells (3);
    end Split;

    procedure Split (The_Tuple                          : Tuple.Object;
                     In_Ref1, In_Ref2, In_Ref3, In_Ref4 : out
                        Instance.Reference) is
    begin
        In_Ref1 := The_Tuple.Cells (1);
        In_Ref2 := The_Tuple.Cells (2);
        In_Ref3 := The_Tuple.Cells (3);
        In_Ref4 := The_Tuple.Cells (4);
    end Split;

    procedure Split (The_Tuple : Tuple.Object;
                     In_Ref1, In_Ref2, In_Ref3, In_Ref4, In_Ref5 : out
                        Instance.Reference) is
    begin
        In_Ref1 := The_Tuple.Cells (1);
        In_Ref2 := The_Tuple.Cells (2);
        In_Ref3 := The_Tuple.Cells (3);
        In_Ref4 := The_Tuple.Cells (4);
        In_Ref5 := The_Tuple.Cells (5);
    end Split;

    procedure Split (The_Tuple : Tuple.Object;
                     In_Ref1, In_Ref2, In_Ref3, In_Ref4, In_Ref5, In_Ref6 : out
                        Instance.Reference) is
    begin
        In_Ref1 := The_Tuple.Cells (1);
        In_Ref2 := The_Tuple.Cells (2);
        In_Ref3 := The_Tuple.Cells (3);
        In_Ref4 := The_Tuple.Cells (4);
        In_Ref5 := The_Tuple.Cells (5);
        In_Ref6 := The_Tuple.Cells (6);
    end Split;

    procedure Split (The_Tuple                 :     Tuple.Object;
                     In_Ref1, In_Ref2, In_Ref3, In_Ref4,
                     In_Ref5, In_Ref6, In_Ref7 : out Instance.Reference) is
    begin
        In_Ref1 := The_Tuple.Cells (1);
        In_Ref2 := The_Tuple.Cells (2);
        In_Ref3 := The_Tuple.Cells (3);
        In_Ref4 := The_Tuple.Cells (4);
        In_Ref5 := The_Tuple.Cells (5);
        In_Ref6 := The_Tuple.Cells (6);
        In_Ref7 := The_Tuple.Cells (7);
    end Split;

    procedure Split (The_Tuple                          : Tuple.Object;
                     In_Ref1, In_Ref2, In_Ref3, In_Ref4,
                     In_Ref5, In_Ref6, In_Ref7, In_Ref8 : out
                        Instance.Reference) is
    begin
        In_Ref1 := The_Tuple.Cells (1);
        In_Ref2 := The_Tuple.Cells (2);
        In_Ref3 := The_Tuple.Cells (3);
        In_Ref4 := The_Tuple.Cells (4);
        In_Ref5 := The_Tuple.Cells (5);
        In_Ref6 := The_Tuple.Cells (6);
        In_Ref7 := The_Tuple.Cells (7);
        In_Ref8 := The_Tuple.Cells (8);
    end Split;

    procedure Split (The_Tuple                          : Tuple.Object;
                     In_Ref1, In_Ref2, In_Ref3, In_Ref4, In_Ref5,
                     In_Ref6, In_Ref7, In_Ref8, In_Ref9 : out
                        Instance.Reference) is
    begin
        In_Ref1 := The_Tuple.Cells (1);
        In_Ref2 := The_Tuple.Cells (2);
        In_Ref3 := The_Tuple.Cells (3);
        In_Ref4 := The_Tuple.Cells (4);
        In_Ref5 := The_Tuple.Cells (5);
        In_Ref6 := The_Tuple.Cells (6);
        In_Ref7 := The_Tuple.Cells (7);
        In_Ref8 := The_Tuple.Cells (8);
        In_Ref9 := The_Tuple.Cells (9);
    end Split;

    procedure Split (The_Tuple : Tuple.Object;
                     In_Ref1, In_Ref2, In_Ref3, In_Ref4, In_Ref5,
                     In_Ref6, In_Ref7, In_Ref8, In_Ref9, In_Ref10 : out
                        Instance.Reference) is
    begin
        In_Ref1  := The_Tuple.Cells (1);
        In_Ref2  := The_Tuple.Cells (2);
        In_Ref3  := The_Tuple.Cells (3);
        In_Ref4  := The_Tuple.Cells (4);
        In_Ref5  := The_Tuple.Cells (5);
        In_Ref6  := The_Tuple.Cells (6);
        In_Ref7  := The_Tuple.Cells (7);
        In_Ref8  := The_Tuple.Cells (8);
        In_Ref9  := The_Tuple.Cells (9);
        In_Ref10 := The_Tuple.Cells (10);
    end Split;



    function Get (In_Tuple : Tuple.Object; The_Item : Positive := 1)
                 return Instance.Reference is
        A_Reference : Instance.Reference := Instance.Null_Reference;
    begin
        if The_Item <= In_Tuple.Count then
            A_Reference := In_Tuple.Cells (The_Item);
        end if;  
        return A_Reference;
    end Get;


    procedure Add (In_Tuple      : in out Tuple.Object;
                   The_Reference :        Instance.Reference) is
    begin
        In_Tuple.Count := In_Tuple.Count + 1;
        if In_Tuple.Count > In_Tuple.Unity then
            raise Overflow;
        else
            In_Tuple.Cells (In_Tuple.Count) := The_Reference;
        end if;
    exception
        when Constraint_Error =>
            raise Overflow;
    end Add;


    procedure Merge (In_Tuple   : in out Tuple.Object;
                     With_Size  : Natural;
                     The_Ref_1  : Instance.Reference := Instance.Null_Reference;
                     The_Ref_2  : Instance.Reference := Instance.Null_Reference;
                     The_Ref_3  : Instance.Reference := Instance.Null_Reference;
                     The_Ref_4  : Instance.Reference := Instance.Null_Reference;
                     The_Ref_5  : Instance.Reference := Instance.Null_Reference;
                     The_Ref_6  : Instance.Reference := Instance.Null_Reference;
                     The_Ref_7  : Instance.Reference := Instance.Null_Reference;
                     The_Ref_8  : Instance.Reference := Instance.Null_Reference;
                     The_Ref_9  : Instance.Reference := Instance.Null_Reference;
                     The_Ref_10 : Instance.Reference :=
                        Instance.Null_Reference) is
    begin  
        declare
            use Instance;
        begin  
            if With_Size >= 1 and With_Size <= 10 then
                In_Tuple.Unity := With_Size;
            else
                In_Tuple.Unity := 1;
            end if;
            if The_Ref_1 /= Instance.Null_Reference then
                Add (In_Tuple => In_Tuple, The_Reference => The_Ref_1);
            end if;
            if The_Ref_2 /= Instance.Null_Reference then
                Add (In_Tuple => In_Tuple, The_Reference => The_Ref_2);
            end if;
            if The_Ref_3 /= Instance.Null_Reference then
                Add (In_Tuple => In_Tuple, The_Reference => The_Ref_3);
            end if;
            if The_Ref_4 /= Instance.Null_Reference then
                Add (In_Tuple => In_Tuple, The_Reference => The_Ref_4);
            end if;
            if The_Ref_5 /= Instance.Null_Reference then
                Add (In_Tuple => In_Tuple, The_Reference => The_Ref_5);
            end if;
            if The_Ref_6 /= Instance.Null_Reference then
                Add (In_Tuple => In_Tuple, The_Reference => The_Ref_6);
            end if;
            if The_Ref_7 /= Instance.Null_Reference then
                Add (In_Tuple => In_Tuple, The_Reference => The_Ref_7);
            end if;
            if The_Ref_8 /= Instance.Null_Reference then
                Add (In_Tuple => In_Tuple, The_Reference => The_Ref_8);
            end if;
            if The_Ref_9 /= Instance.Null_Reference then
                Add (In_Tuple => In_Tuple, The_Reference => The_Ref_9);
            end if;
            if The_Ref_10 /= Instance.Null_Reference then
                Add (In_Tuple => In_Tuple, The_Reference => The_Ref_10);
            end if;
        end;
    end Merge;


    function Object_To_Tuple
                (The_Reference : Instance.Reference) return Tuple.Object is
        Result_Tuple : Tuple.Object;
    begin
        Add (In_Tuple => Result_Tuple, The_Reference => The_Reference);
        return Result_Tuple;
    end Object_To_Tuple;



    procedure Sort (The_Tuple : in out Tuple.Object) is
        Index : Integer range The_Tuple.Cells'First - 1 .. The_Tuple.Cells'Last;
        A_Reference : Instance.Reference;
    begin
        for I in The_Tuple.Cells'First + 1 .. The_Tuple.Count - 1 loop
            A_Reference := The_Tuple.Cells (I);
            Index       := I - 1;
            while (Index /= The_Tuple.Cells'First - 1) and then
                     (A_Reference < The_Tuple.Cells (Index)) loop
                The_Tuple.Cells (Index + 1) := The_Tuple.Cells (Index);
                Index                       := Index - 1;
            end loop;
            The_Tuple.Cells (Index + 1) := A_Reference;
        end loop;
    end Sort;

end Tuple;

E3 Meta Data

    nblk1=d
    nid=c
    hdr6=18
        [0x00] rec0=2b rec1=00 rec2=01 rec3=038
        [0x01] rec0=04 rec1=00 rec2=03 rec3=054
        [0x02] rec0=1a rec1=00 rec2=02 rec3=020
        [0x03] rec0=19 rec1=00 rec2=08 rec3=04a
        [0x04] rec0=19 rec1=00 rec2=09 rec3=036
        [0x05] rec0=1c rec1=00 rec2=05 rec3=02a
        [0x06] rec0=1d rec1=00 rec2=06 rec3=01e
        [0x07] rec0=12 rec1=00 rec2=0d rec3=020
        [0x08] rec0=05 rec1=00 rec2=0a rec3=08e
        [0x09] rec0=15 rec1=00 rec2=04 rec3=00c
        [0x0a] rec0=1b rec1=00 rec2=07 rec3=012
        [0x0b] rec0=09 rec1=00 rec2=0b rec3=000
        [0x0c] rec0=0a rec1=40 rec2=00 rec3=000
    tail 0x2150b5434822b4e96c8c9 0x42a00088462063c03
Free Block Chain:
  0xc: 0000  00 00 00 52 80 05 20 74 68 65 6e 05 00 47 20 20  ┆   R   then  G  ┆