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

⟦af15a03d1⟧ Ada Source

    Length: 60416 (0xec00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Bricks_And_Boxes, procedure Mise_En_Casier_M, seg_00e36d

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



with Expertsystem;
use Expertsystem;
with Robot_New, Brick_New;

procedure Mise_En_Casier_M is

    package Bricks_And_Boxes is
        procedure Find_The_Bricks;
    end Bricks_And_Boxes;

    package body Bricks_And_Boxes is

-----------------------------------------------------------------------------
--          RULES
-----------------------------------------------------------------------------

--  Rule 1
------------
        function Match_1 (R : Robot_New.Object; B : Brick_New.Object)
                         return Boolean is
        begin
            return Robot_New.Is_The_Task
                      (Of_Robot => R, The_Task => Robot_New.Prendre) and then
                   not Robot_New.Is_Occupied (The_Robot => R) and then
                   Brick_New.Is_The_Place (Of_Brick => B,
                                           The_Place => Brick_New.Tas) and then
                   Brick_New.The_Greatest_On_Heap (Brick => B);
        end Match_1;

        function Rule_1 is new Tuplecollection.Join2 (Match_1);

        function Condition_Saisir return Tuplecollection.Object is
        begin
            return Rule_1 (Robot_New.All_Robots, Brick_New.All_Bricks);
        end Condition_Saisir;

        procedure Action_Saisir (Mg : Tuple.Object) is
            A_Robot, A_Brick : Reference;
        begin  
            A_Robot := Tuple.First (Mg);
            A_Brick := Tuple.Second (Mg);
            Brick_New.Modify (A_Brick, The_Place => Brick_New.Pince);
            Robot_New.Modify (A_Robot, The_Occupation => True);

            Put_Line ("RegleSaisir  : " & Robot_New.Name (A_Robot) &
                      " prend brique (" &
                      Integer'Image (Brick_New.Size (A_Brick)) & " / " &
                      Brick_New.Tcolor'Image (Brick_New.Color (A_Brick)) & ")");
        end Action_Saisir;

-----------------------------------------------------------------------------
--  Rule 2
------------
        function Match_2 (R : Robot_New.Object; B : Brick_New.Object)
                         return Boolean is
        begin
            return Robot_New.Is_The_Task
                      (Of_Robot => R, The_Task => Robot_New.Prendre) and then
                   Robot_New.Is_Occupied (The_Robot => R) and then
                   Brick_New.Is_The_Place (Of_Brick => B,
                                           The_Place => Brick_New.Pince);
        end Match_2;

        function Rule_2 is new Tuplecollection.Join2 (Match_2);

        function Condition_Tenir return Tuplecollection.Object is
        begin
            return Rule_2 (Robot_New.All_Robots, Brick_New.All_Bricks);
        end Condition_Tenir;

        procedure Action_Tenir (Mg : Tuple.Object) is
            A_Robot, A_Brick : Reference;
        begin  
            A_Robot := Tuple.First (Mg);  
            A_Brick := Tuple.Second (Mg);
            Robot_New.Modify (A_Robot, The_Task => Robot_New.Deposer);
            Put_Line ("RegleTenir   : " & Robot_New.Name (A_Robot) &
                      " tient brique (" &
                      Integer'Image (Brick_New.Size (A_Brick)) & " / " &
                      Brick_New.Tcolor'Image (Brick_New.Color (A_Brick)) & ")");
        end Action_Tenir;


-----------------------------------------------------------------------------
--  Rule 3
--------------
        function Match_3 (R : Robot_New.Object; B : Brick_New.Object)
                         return Boolean is
        begin
            return Robot_New.Is_The_Task
                      (Of_Robot => R, The_Task => Robot_New.Deposer) and then
                   Brick_New.Is_The_Place (Of_Brick => B,
                                           The_Place => Brick_New.Pince);
        end Match_3;
        function Rule_3 is new Tuplecollection.Join2 (Match_3);

        function Condition_Caser return Tuplecollection.Object is
        begin
            return Rule_3 (Robot_New.All_Robots, Brick_New.All_Bricks);
        end Condition_Caser;

        procedure Action_Caser (Mg : Tuple.Object) is
            A_Brick, A_Robot : Reference;
        begin  
            A_Robot := Tuple.First (Mg);
            A_Brick := Tuple.Second (Mg);
            Robot_New.Modify (A_Robot, The_Task => Robot_New.Prendre);
            Robot_New.Modify (A_Robot, The_Box => Robot_New.Last_Box);
            Brick_New.Modify (A_Brick, The_Place => Brick_New.Boite);
            Brick_New.Modify (A_Brick,
                              The_Box => Robot_New.Box_Number (A_Robot));

            Put_Line ("RegleCaser   : " & Robot_New.Name (A_Robot) &
                      " depose brique (" &
                      Integer'Image (Brick_New.Size (A_Brick)) & " / " &
                      Brick_New.Tcolor'Image (Brick_New.Color (A_Brick)) &
                      ")" & " dans case " &
                      Integer'Image (Robot_New.Box_Number (A_Robot)));
            Put_Line (" ");

            Robot_New.Modify (A_Robot, The_Occupation => False);
        end Action_Caser;

-----------------------------------------------------------------------------
--  Rule 4
------------
        function Match_4 (B : Brick_New.Object) return Boolean is
        begin
            return Brick_New.Is_The_Place
                      (Of_Brick => B, The_Place => Brick_New.Tas);
        end Match_4;
        function Rule_4 is new Tuplecollection.Join1 (Match_4);

        function Condition_Arreter return Tuplecollection.Object is
        begin
            return Rule_4 (Robot_New.All_Robots);
        end Condition_Arreter;

        procedure Action_Arreter (Mgo : Tuple.Object) is
        begin
            Put_Line ("RegleArreter : Fin de recherche");
            Put_Line (" ");
        end Action_Arreter;

-----------------------------------------------------------------------------
        package Look_For_Bricks is new Engine (Context_Name => "BricAndBox",
                                               Resolution => Mea,
                                               Used_Rules => 4,
                                               Name_1 => "saisir         ",
                                               Condition_1 => Condition_Saisir,
                                               Action_1 => Action_Saisir,
                                               Name_2 => "tenir          ",
                                               Condition_2 => Condition_Tenir,
                                               Action_2 => Action_Tenir,
                                               Name_3 => "caser          ",
                                               Condition_3 => Condition_Caser,
                                               Action_3 => Action_Caser,
                                               Name_4 => "arreter        ",
                                               Condition_4 => Condition_Arreter,
                                               Action_4 => Action_Arreter);



        procedure Find_The_Bricks is
            Result : Boolean;
        begin
            Put_Line ("-------------------------------------------------");
            Robot_New.Create;
            Brick_New.Create;
            Result := Look_For_Bricks.Inference (Any);
            Put_Line ("-------------------------------------------------");
        end Find_The_Bricks;
    end Bricks_And_Boxes;

begin

    Debugger.Resetdebug (Debugger.Text);
    Debugger.Setdebugon (Debugger.Completly);
    Debugger.Refreshdebug;
    Debugger.Setdebugoff (Debugger.Conditionevalued);

    Bricks_And_Boxes.Find_The_Bricks;

end Mise_En_Casier_M;

E3 Meta Data

    nblk1=3a
    nid=2c
    hdr6=12
        [0x00] rec0=1d rec1=00 rec2=01 rec3=01c
        [0x01] rec0=00 rec1=00 rec2=21 rec3=004
        [0x02] rec0=18 rec1=00 rec2=31 rec3=014
        [0x03] rec0=18 rec1=00 rec2=02 rec3=05e
        [0x04] rec0=17 rec1=00 rec2=03 rec3=00c
        [0x05] rec0=13 rec1=00 rec2=2d rec3=074
        [0x06] rec0=1c rec1=00 rec2=04 rec3=02c
        [0x07] rec0=0d rec1=00 rec2=2e rec3=058
        [0x08] rec0=1b rec1=00 rec2=2b rec3=000
        [0x09] rec0=1b rec1=00 rec2=2c rec3=000
        [0x0a] rec0=15 rec1=00 rec2=09 rec3=044
        [0x0b] rec0=17 rec1=00 rec2=0a rec3=010
        [0x0c] rec0=17 rec1=00 rec2=0b rec3=01c
        [0x0d] rec0=11 rec1=00 rec2=0c rec3=030
        [0x0e] rec0=16 rec1=00 rec2=0d rec3=07a
        [0x0f] rec0=12 rec1=00 rec2=0e rec3=01a
        [0x10] rec0=14 rec1=00 rec2=34 rec3=094
        [0x11] rec0=16 rec1=00 rec2=10 rec3=03e
        [0x12] rec0=12 rec1=00 rec2=11 rec3=036
        [0x13] rec0=15 rec1=00 rec2=12 rec3=022
        [0x14] rec0=15 rec1=00 rec2=13 rec3=010
        [0x15] rec0=14 rec1=00 rec2=36 rec3=012
        [0x16] rec0=15 rec1=00 rec2=14 rec3=082
        [0x17] rec0=15 rec1=00 rec2=16 rec3=05c
        [0x18] rec0=15 rec1=00 rec2=15 rec3=006
        [0x19] rec0=01 rec1=00 rec2=17 rec3=04e
        [0x1a] rec0=17 rec1=00 rec2=18 rec3=02a
        [0x1b] rec0=15 rec1=00 rec2=19 rec3=08c
        [0x1c] rec0=16 rec1=00 rec2=1a rec3=082
        [0x1d] rec0=17 rec1=00 rec2=38 rec3=01a
        [0x1e] rec0=17 rec1=00 rec2=1b rec3=008
        [0x1f] rec0=16 rec1=00 rec2=1c rec3=050
        [0x20] rec0=18 rec1=00 rec2=1d rec3=02c
        [0x21] rec0=15 rec1=00 rec2=1e rec3=07a
        [0x22] rec0=19 rec1=00 rec2=1f rec3=018
        [0x23] rec0=16 rec1=00 rec2=39 rec3=032
        [0x24] rec0=19 rec1=00 rec2=20 rec3=030
        [0x25] rec0=1a rec1=00 rec2=21 rec3=022
        [0x26] rec0=13 rec1=00 rec2=22 rec3=010
        [0x27] rec0=11 rec1=00 rec2=24 rec3=00a
        [0x28] rec0=13 rec1=00 rec2=25 rec3=006
        [0x29] rec0=12 rec1=00 rec2=26 rec3=056
        [0x2a] rec0=11 rec1=00 rec2=27 rec3=03c
        [0x2b] rec0=12 rec1=00 rec2=28 rec3=042
        [0x2c] rec0=10 rec1=00 rec2=29 rec3=07a
        [0x2d] rec0=12 rec1=00 rec2=2a rec3=032
        [0x2e] rec0=16 rec1=00 rec2=2b rec3=01e
        [0x2f] rec0=11 rec1=00 rec2=30 rec3=07a
        [0x30] rec0=10 rec1=00 rec2=2f rec3=05c
        [0x31] rec0=12 rec1=00 rec2=2e rec3=06e
        [0x32] rec0=16 rec1=00 rec2=2d rec3=02c
        [0x33] rec0=1c rec1=00 rec2=2c rec3=000
        [0x34] rec0=02 rec1=02 rec2=02 rec3=010
        [0x35] rec0=10 rec1=10 rec2=10 rec3=080
        [0x36] rec0=80 rec1=80 rec2=80 rec3=404
        [0x37] rec0=04 rec1=04 rec2=04 rec3=020
        [0x38] rec0=20 rec1=80 rec2=00 rec3=000
        [0x39] rec0=48 rec1=00 rec2=07 rec3=38b
    tail 0x21509ffe2821d7e4ee0eb 0x42a00088462060003
Free Block Chain:
  0x2c: 0000  00 2f 03 0c 80 03 65 72 2c 03 00 4b 20 20 20 20  ┆ /    er,  K    ┆
  0x2f: 0000  00 30 00 29 80 26 20 20 20 20 20 20 20 20 20 20  ┆ 0 ) &          ┆
  0x30: 0000  00 2a 03 f9 80 24 20 20 20 20 20 20 20 20 4e 61  ┆ *   $        Na┆
  0x2a: 0000  00 29 03 fc 80 01 3b 01 00 1a 20 20 20 20 20 20  ┆ )    ;         ┆
  0x29: 0000  00 28 00 be 80 37 20 20 20 20 20 20 20 20 20 20  ┆ (   7          ┆
  0x28: 0000  00 27 03 fc 80 21 20 20 20 20 20 20 20 20 20 20  ┆ '   !          ┆
  0x27: 0000  00 26 03 fc 80 07 64 64 65 72 2c 20 20 07 00 3f  ┆ &    dder,    ?┆
  0x26: 0000  00 25 02 6d 80 27 20 20 20 20 20 4d 6f 6e 6b 65  ┆ % m '     Monke┆
  0x25: 0000  00 24 01 99 80 26 20 20 20 20 20 4d 6f 6e 6b 65  ┆ $   &     Monke┆
  0x24: 0000  00 22 00 6f 80 13 62 61 6e 61 6e 61 73 22 29 2c  ┆ " o  bananas"),┆
  0x22: 0000  00 20 03 fc 80 17 20 67 6f 61 6c 73 20 61 72 65  ┆       goals are┆
  0x20: 0000  00 39 02 a9 80 06 68 5f 32 34 29 3b 06 00 00 00  ┆ 9    h_24);    ┆
  0x39: 0000  00 1f 03 fc 80 41 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ┆     A----------┆
  0x1f: 0000  00 1e 00 7b 80 12 20 28 22 20 29 20 63 61 72 72  ┆   {   (" ) carr┆
  0x1e: 0000  00 1d 02 7e 80 31 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ┆   ~ 1----------┆
  0x1d: 0000  00 1c 03 fc 00 1c 20 20 20 20 20 20 20 20 20 20  ┆                ┆
  0x1c: 0000  00 1b 00 0c 80 09 47 6f 61 6c 29 2e 59 29 3b 09  ┆      Goal).Y); ┆
  0x1b: 0000  00 38 01 f2 80 01 73 01 00 1f 20 20 20 20 20 20  ┆ 8    s         ┆
  0x38: 0000  00 1a 03 fc 00 00 00 00 46 20 20 20 20 20 20 20  ┆        F       ┆
  0x1a: 0000  00 19 00 1e 80 1b 6f 6c 6c 65 63 74 69 6f 6e 2e  ┆      ollection.┆
  0x19: 0000  00 18 02 29 00 3b 20 20 20 20 20 20 20 20 20 20  ┆   ) ;          ┆
  0x18: 0000  00 17 03 fc 80 14 65 63 74 2e 49 6e 73 74 61 6e  ┆      ect.Instan┆
  0x17: 0000  00 15 00 46 80 19 6e 73 74 61 6e 63 65 73 2c 20  ┆   F  nstances, ┆
  0x15: 0000  00 16 03 fc 80 05 20 31 29 29 3b 05 00 37 2d 2d  ┆       1));  7--┆
  0x16: 0000  00 14 02 09 80 27 41 5f 4d 6f 6e 6b 65 79 29 20  ┆     'A_Monkey) ┆
  0x14: 0000  00 36 03 fc 80 31 20 20 20 20 20 20 20 20 20 20  ┆ 6   1          ┆
  0x36: 0000  00 13 00 68 80 26 2e 49 73 5f 4f 6e 20 28 41 6e  ┆   h &.Is_On (An┆
  0x13: 0000  00 12 02 ff 80 2b 6c 2c 20 41 6e 5f 4f 62 6a 65  ┆     +l, An_Obje┆
  0x12: 0000  00 11 03 fc 80 21 79 2e 48 6f 6c 64 73 20 28 41  ┆     !y.Holds (A┆
  0x11: 0000  00 10 01 88 80 17 5f 4e 61 6d 65 20 28 41 5f 47  ┆      _Name (A_G┆
  0x10: 0000  00 34 03 d8 80 24 2e 4e 61 6d 65 20 28 41 6e 5f  ┆ 4   $.Name (An_┆
  0x34: 0000  00 0e 03 fc 00 3d 20 20 20 20 20 20 20 20 20 20  ┆     =          ┆
  0xe: 0000  00 0d 02 c3 80 17 5f 4e 61 6d 65 20 28 41 5f 47  ┆      _Name (A_G┆
  0xd: 0000  00 0c 03 fc 80 27 69 73 20 6e 65 77 20 54 75 70  ┆     'is new Tup┆
  0xc: 0000  00 0b 01 14 80 1b 41 5f 4d 6f 6e 6b 65 79 29 20  ┆      A_Monkey) ┆
  0xb: 0000  00 0a 03 87 80 26 69 65 64 5f 43 20 72 65 74 75  ┆     &ied_C retu┆
  0xa: 0000  00 09 03 fc 80 1a 49 6e 73 74 61 6e 63 65 73 2c  ┆      Instances,┆
  0x9: 0000  00 07 01 81 80 1a 6d 65 20 28 41 5f 47 6f 61 6c  ┆      me (A_Goal┆
  0x7: 0000  00 32 03 fc 00 0d 20 20 20 20 20 20 20 20 62 65  ┆ 2            be┆
  0x32: 0000  00 06 03 fc 80 1b 20 4d 6f 6e 6b 65 79 2e 49 73  ┆       Monkey.Is┆
  0x6: 0000  00 05 02 55 80 05 20 31 29 29 3b 05 00 3d 2d 2d  ┆   U   1));  =--┆
  0x5: 0000  00 3a 00 27 80 24 20 66 75 6e 63 74 69 6f 6e 20  ┆ : ' $ function ┆
  0x3a: 0000  00 23 00 04 80 01 20 01 20 20 20 20 20 20 20 20  ┆ #              ┆
  0x23: 0000  00 37 01 e3 80 24 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ┆ 7   $----------┆
  0x37: 0000  00 35 00 53 80 26 5f 31 36 20 28 4d 6f 6e 6b 65  ┆ 5 S &_16 (Monke┆
  0x35: 0000  00 0f 00 53 80 09 20 61 6e 64 20 74 68 65 6e 09  ┆   S   and then ┆
  0xf: 0000  00 33 00 a3 00 46 20 20 20 20 20 20 20 20 66 75  ┆ 3   F        fu┆
  0x33: 0000  00 08 03 fc 00 28 20 20 20 20 20 20 20 20 20 20  ┆     (          ┆
  0x8: 0000  00 00 00 f3 80 1c 62 6a 65 63 74 5f 4e 61 6d 65  ┆      bject_Name┆