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

⟦3189b0adf⟧ Ada Source

    Length: 7168 (0x1c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Tuple, seg_00c7db, separate Expertsystem

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



separate (Expertsystem)

package body Tuple is

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

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

    function Isnotnull (Thetuple : Tuple.Object) return Boolean is
    begin
        return Thetuple.Count /= 0;
    end Isnotnull;

    procedure Forall (Thetuple : Tuple.Object) is
    begin
        for I in 1 .. Thetuple.Count loop
            Action (Get (Thetuple, I));
        end loop;
    end Forall;

    function First (Thetuple : Tuple.Object) return Expertsystem.Reference is
    begin
        return Get (Thetuple, 1);
    end First;

    function Second (Thetuple : Tuple.Object) return Expertsystem.Reference is
    begin
        return Get (Thetuple, 2);
    end Second;

    function Third (Thetuple : Tuple.Object) return Expertsystem.Reference is
    begin
        return Get (Thetuple, 3);
    end Third;

    function Fourth (Thetuple : Tuple.Object) return Expertsystem.Reference is
    begin
        return Get (Thetuple, 4);
    end Fourth;

    function Fifth (Thetuple : Tuple.Object) return Expertsystem.Reference is
    begin
        return Get (Thetuple, 5);
    end Fifth;

    function Sixth (Thetuple : Tuple.Object) return Expertsystem.Reference is
    begin
        return Get (Thetuple, 6);
    end Sixth;

    function Seventh (Thetuple : Tuple.Object) return Expertsystem.Reference is
    begin
        return Get (Thetuple, 7);
    end Seventh;

    function Eighth (Thetuple : Tuple.Object) return Expertsystem.Reference is
    begin
        return Get (Thetuple, 8);
    end Eighth;

    function Ninth (Thetuple : Tuple.Object) return Expertsystem.Reference is
    begin
        return Get (Thetuple, 9);
    end Ninth;

    function Tenth (Thetuple : Tuple.Object) return Expertsystem.Reference is
    begin
        return Get (Thetuple, 10);
    end Tenth;

    function Get (Thetuple : Tuple.Object; Item : Positive := 1)
                 return Expertsystem.Reference is
    begin
        if Item > Thetuple.Count then
            return Nullreference;
        else
            return Thetuple.Cells (Item);
        end if;
    end Get;

    procedure Add (Thetuple : in out Tuple.Object;
                   Aref : Expertsystem.Reference) is
    begin
        if Thetuple.Count = Thetuple.Size then
            declare
                Bigtuple : Tuple.Object (Thetuple.Size + Thetuple.Size / 2);
            begin
                Bigtuple.Cells (1 .. Thetuple.Size) :=
                   Thetuple.Cells (1 .. Thetuple.Size);
                Bigtuple.Count := Thetuple.Count;
                Bigtuple.Unity := Thetuple.Unity;
                Thetuple := Bigtuple;
            end;
        end if;       Thetuple.Count := Thetuple.Count + 1;
        Thetuple.Cells (Thetuple.Count) := Aref;
    end Add;

    procedure Merge (Thetuple : in out Tuple.Object;
                     R1 : Expertsystem.Reference := Nullreference;
                     R2 : Expertsystem.Reference := Nullreference;
                     R3 : Expertsystem.Reference := Nullreference;
                     R4 : Expertsystem.Reference := Nullreference;
                     R5 : Expertsystem.Reference := Nullreference;
                     R6 : Expertsystem.Reference := Nullreference;
                     R7 : Expertsystem.Reference := Nullreference;
                     R8 : Expertsystem.Reference := Nullreference;
                     R9 : Expertsystem.Reference := Nullreference;
                     R10 : Expertsystem.Reference := Nullreference) is
    begin
        if R1 /= Nullreference then
            Add (Thetuple, R1);
        end if;
        if R2 /= Nullreference then
            Add (Thetuple, R2);
        end if;
        if R3 /= Nullreference then
            Add (Thetuple, R3);
        end if;
        if R4 /= Nullreference then
            Add (Thetuple, R4);
        end if;
        if R4 /= Nullreference then
            Add (Thetuple, R4);
        end if;
        if R5 /= Nullreference then
            Add (Thetuple, R5);
        end if;
        if R6 /= Nullreference then
            Add (Thetuple, R6);
        end if;
        if R7 /= Nullreference then
            Add (Thetuple, R7);
        end if;
        if R8 /= Nullreference then
            Add (Thetuple, R8);
        end if;
        if R9 /= Nullreference then
            Add (Thetuple, R9);
        end if;
        if R10 /= Nullreference then
            Add (Thetuple, R10);
        end if;
    end Merge;

    function Asobject (Aref : Expertsystem.Reference) return Tuple.Object is
        Result : Tuple.Object;
    begin
        Add (Result, Aref);
        return Result;
    end Asobject;

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

end Tuple;

E3 Meta Data

    nblk1=6
    nid=0
    hdr6=c
        [0x00] rec0=26 rec1=00 rec2=01 rec3=060
        [0x01] rec0=23 rec1=00 rec2=02 rec3=02a
        [0x02] rec0=1d rec1=00 rec2=03 rec3=002
        [0x03] rec0=14 rec1=00 rec2=04 rec3=018
        [0x04] rec0=22 rec1=00 rec2=05 rec3=02a
        [0x05] rec0=15 rec1=00 rec2=06 rec3=000
    tail 0x2170982ca8207490f5323 0x42a00088462060003