|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 11264 (0x2c00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Robotetbrique, procedure Ne_Mise_En_Casier, seg_00e33e
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
--=========================================
with Expertsystem;
use Expertsystem;
with Ne_Robot, Ne_Brique;
use Ne_Robot, Ne_Brique;
procedure Ne_Mise_En_Casier is
package Robotetbrique is
procedure Miseenboite;
end Robotetbrique;
package body Robotetbrique is
A_Brick, A_Robot : Expertsystem.Reference;
function Peutmettreenboite return Boolean is
begin
Reglesaisir:
declare
function Robot_Match (R : Reference) return Boolean is
begin
return Peutprendre (R) and then not Tientbrique (R);
end Robot_Match;
function Brick_Match (B : Reference) return Boolean is
begin
return Surtas (B) and then Laplusgrandedutas (B);
end Brick_Match;
function Robot_Ok is
new Expertsystem.Collection.Findone (Robot_Match);
function Brick_Ok is
new Expertsystem.Collection.Findone (Brick_Match);
begin
A_Brick := Brick_Ok (Ne_Brique.All_Bricks);
A_Robot := Robot_Ok (Ne_Robot.All_Robots);
if Expertsystem.Collection.Isnotnull (A_Robot) and
Expertsystem.Collection.Isnotnull (A_Brick) then
Ne_Robot.Modifierpince (A_Robot, True);
Ne_Brique.Modifierlieu (A_Brick, Pince);
Put ("Le ");
Put (Ne_Robot.Nom (A_Robot));
Put (" prend la plus grande brique (taille=");
Put (Integer (Ne_Brique.Taille (A_Brick)));
Put_Line (") du tas dans sa pince ");
return True;
end if;
end Reglesaisir;
---------------------
Regletenir:
declare
function Robot_Match (R : Reference) return Boolean is
begin
return Peutprendre (R) and then Tientbrique (R) and then
Un_Plus_Ancien_Robot (R);
end Robot_Match;
function Brick_Match (B : Reference) return Boolean is
begin
return Danspince (B);
end Brick_Match;
function Robot_Ok is
new Expertsystem.Collection.Findone (Robot_Match);
function Brick_Ok is
new Expertsystem.Collection.Findone (Brick_Match);
begin
A_Brick := Brick_Ok (Ne_Brique.All_Bricks);
A_Robot := Robot_Ok (Ne_Robot.All_Robots);
if Expertsystem.Collection.Isnotnull (A_Robot) and
Expertsystem.Collection.Isnotnull (A_Brick) then
Ne_Robot.Modifiertache (A_Robot, Deposer);
Ne_Robot.Modifieranc (A_Robot, Ne_Robot.Anciennete);
Put ("Le ");
Put (Ne_Robot.Nom (A_Robot));
Put_Line (" va deposer la brique");
return True;
end if;
end Regletenir;
---------------------------------
Reglecaser:
declare
Rb : Tuple.Object;
Unebrique, Unrobot : Reference;
function Robot_Match (R : Reference) return Boolean is
begin
return Peutdeposer (R) and then
Un_Plus_Ancien_Robot (R);
end Robot_Match;
function Brick_Match (B : Reference) return Boolean is
begin
return Danspince (B);
end Brick_Match;
function Robot_Ok is
new Expertsystem.Collection.Findone (Robot_Match);
function Brick_Ok is
new Expertsystem.Collection.Findone (Brick_Match);
begin
A_Brick := Brick_Ok (Ne_Brique.All_Bricks);
A_Robot := Robot_Ok (Ne_Robot.All_Robots);
if Expertsystem.Collection.Isnotnull (A_Robot) and
Expertsystem.Collection.Isnotnull (A_Brick) then
Ne_Brique.Modifierlieu (A_Brick, Boite);
Ne_Robot.Modifiertache (A_Robot, Prendre);
Ne_Robot.Modifierboite (A_Robot,
Ne_Robot.Derniereboite);
Ne_Brique.Modifierboite
(A_Brick, Ne_Robot.Numeroboite (A_Robot));
Ne_Robot.Modifieranc (A_Robot, Ne_Robot.Anciennete);
Put ("Le ");
Put (Ne_Robot.Nom (A_Robot));
Put (" depose la brique dans la case");
Put (Integer (Ne_Robot.Numeroboite (A_Robot)));
Put_Line ("");
Ne_Robot.Modifierpince (A_Robot, False);
return True;
end if;
end Reglecaser;
------------------------------------
Reglearreter:
declare
Rb : Tuple.Object;
Unrobot : Reference;
function Robot_Match (R : Reference) return Boolean is
begin
return Peutprendre (R) and then not Tientbrique (R);
end Robot_Match;
function Brick_Match (B : Reference) return Boolean is
begin
return not Surtas (B);
end Brick_Match;
function Robot_Ok is
new Expertsystem.Collection.Findone (Robot_Match);
function Brick_Ok is
new Expertsystem.Collection.Findone (Brick_Match);
begin
A_Brick := Brick_Ok (Ne_Brique.All_Bricks);
A_Robot := Robot_Ok (Ne_Robot.All_Robots);
if Expertsystem.Collection.Isnotnull (A_Robot) and
Expertsystem.Collection.Isnotnull (A_Brick) then
Put ("Le ");
Put (Ne_Robot.Nom (A_Robot));
Put_Line (" se suicide (plus de briques)");
Ne_Robot.Sesuicide (A_Robot);
return True;
end if;
end Reglearreter;
------------------------------------
return False;
end Peutmettreenboite;
procedure Mettreenboite is
begin
loop
exit when not Peutmettreenboite;
end loop;
end Mettreenboite;
procedure Miseenboite is
begin
Ne_Robot.Creer;
Ne_Brique.Creer;
loop
Mettreenboite;
-- autres contextes a traiter
exit;
end loop;
end Miseenboite;
end Robotetbrique;
begin
Robotetbrique.Miseenboite;
end Ne_Mise_En_Casier;
nblk1=a
nid=0
hdr6=14
[0x00] rec0=1f rec1=00 rec2=01 rec3=048
[0x01] rec0=16 rec1=00 rec2=02 rec3=006
[0x02] rec0=1c rec1=00 rec2=03 rec3=03e
[0x03] rec0=16 rec1=00 rec2=04 rec3=014
[0x04] rec0=00 rec1=00 rec2=0a rec3=020
[0x05] rec0=12 rec1=00 rec2=05 rec3=04c
[0x06] rec0=18 rec1=00 rec2=06 rec3=024
[0x07] rec0=00 rec1=00 rec2=09 rec3=00a
[0x08] rec0=16 rec1=00 rec2=07 rec3=046
[0x09] rec0=22 rec1=00 rec2=08 rec3=000
tail 0x2170afb26821d7ac275c3 0x42a00088462063c03