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

⟦b1b0d5166⟧ Ada Source

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

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

    function Make (R : Rule_Names) return Rule_Id is
    begin
        return Rule_Id'(Is_Valid   => True,
                        The_Bundle => The_Bundle,
                        The_Rule   => As_Natural (R));
    end Make;

    procedure Add (The_Rule : Rule_Names; Premiss : Fact.Join_Descriptor) is
    begin
        for I in The_Rules'Range loop
            if not The_Rules (I).The_Id.Is_Valid then
                The_Rules (I) := Rule'(The_Query_Count => Premiss'Length,
                                       The_Id          => Make (The_Rule),
                                       The_Premiss     => Premiss);
                Last_Rule     := I;
                return;
            end if;
        end loop;
        raise Overflow;
    end Add;

    procedure Do_Action (For_Rule : Rule_Id; On_Facts : Fact.Collection) is
    begin
        if For_Rule.The_Bundle = The_Bundle then
            case For_Rule.The_Rule 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, Premiss_1);
    end if;
    if Rule_2 /= Nothing then
        Add (Rule_2, Premiss_2);
    end if;
    if Rule_3 /= Nothing then
        Add (Rule_3, Premiss_3);
    end if;
    if Rule_4 /= Nothing then
        Add (Rule_4, Premiss_4);
    end if;
    if Rule_5 /= Nothing then
        Add (Rule_5, Premiss_5);
    end if;
end Generic_Rule_Bundle;


E3 Meta Data

    nblk1=4
    nid=2
    hdr6=6
        [0x00] rec0=1f rec1=00 rec2=01 rec3=002
        [0x01] rec0=21 rec1=00 rec2=03 rec3=006
        [0x02] rec0=07 rec1=00 rec2=04 rec3=000
        [0x03] rec0=05 rec1=00 rec2=02 rec3=000
    tail 0x21724039083e585510bab 0x42a00088462063c03
Free Block Chain:
  0x2: 0000  00 00 00 20 80 1d 20 20 20 70 72 6f 63 65 64 75  ┆         procedu┆