DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

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 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦343a59763⟧ TextFile

    Length: 5500 (0x157c)
    Types: TextFile
    Names: »B«

Derivation

└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13
    └─ ⟦124ff5788⟧ »DATA« 
        └─⟦this⟧ 
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─ ⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 
└─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16
    └─ ⟦6f12a12be⟧ »DATA« 
        └─⟦this⟧ 
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
    └─ ⟦d65440be7⟧ »DATA« 
        └─⟦this⟧ 

TextFile

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;