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

⟦78142200b⟧ Ada Source

    Length: 5120 (0x1400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Generic_Rule_Bundle, seg_02bad5, separate Generic_Rule_Base

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



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;
            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;

E3 Meta Data

    nblk1=4
    nid=2
    hdr6=6
        [0x00] rec0=1e rec1=00 rec2=01 rec3=006
        [0x01] rec0=1e rec1=00 rec2=03 rec3=00c
        [0x02] rec0=0d rec1=00 rec2=04 rec3=000
        [0x03] rec0=0e rec1=00 rec2=02 rec3=000
    tail 0x21724636c83ec80d48958 0x42a00088462063c03
Free Block Chain:
  0x2: 0000  00 00 01 70 80 08 69 6e 67 20 74 68 65 6e 08 00  ┆   p  ing then  ┆