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

⟦a8868ca31⟧ TextFile

    Length: 2254 (0x8ce)
    Types: TextFile
    Names: »B«

Derivation

└─⟦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 (Generic_Rule_Base)
package body Generic_Rule_Bundle is

    function As_Natural (R : Rule_Names) return Natural is
    begin
        return Rule_Names'Pos (R) + 1;
    end As_Natural;

    procedure Add (The_Rule : Rule_Names;
                   The_Name : String;
                   Premiss  : Fact.Queries) is
        Ce_Ids : Condition_Elements.Ids (Premiss'Range);
    begin  
        if The_Last_Rule = Rule_Id (Max_Rules) then
            raise Overflow;
        else
            Condition_Elements.Add (Premiss, Ce_Ids);
            The_Last_Rule             := The_Last_Rule + 1;
            The_Rules (The_Last_Rule) :=
               Rule'(The_Query_Count => Premiss'Length,
                     The_Bundle      => The_Bundle,
                     The_Rule        => As_Natural (The_Rule),
                     The_Name        => As_Rule_Name (The_Name),
                     The_Premiss     => Ce_Ids);
        end if;
    end Add;


    procedure Do_Action (For_Rule : Rule_Id; On_Facts : Fact.Collection) is
        The_Action_Bundle : Rule_Bundles
            renames The_Rules (For_Rule).The_Bundle;
        The_Rule_Number   : Natural renames The_Rules (For_Rule).The_Rule;
    begin
        if The_Action_Bundle = The_Bundle then
            case The_Rule_Number is
                when 1 =>
                    Action_1 (On_Facts);
                when 2 =>
                    Action_2 (On_Facts);
                when 3 =>
                    Action_3 (On_Facts);
                when 4 =>
                    Action_4 (On_Facts);
                when 5 =>
                    Action_5 (On_Facts);
                when others =>
                    Null_Action (On_Facts);
            end case;
        else
            raise Illegal_Bundle;
        end if;
    end Do_Action;

begin
    if Rule_1 /= Nothing then
        Add (Rule_1, Name_1, Premiss_1);
    end if;
    if Rule_2 /= Nothing then
        Add (Rule_2, Name_2, Premiss_2);
    end if;
    if Rule_3 /= Nothing then
        Add (Rule_3, Name_3, Premiss_3);
    end if;
    if Rule_4 /= Nothing then
        Add (Rule_4, Name_4, Premiss_4);
    end if;
    if Rule_5 /= Nothing then
        Add (Rule_5, Name_5, Premiss_5);
    end if;
end Generic_Rule_Bundle;