|
|
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: 6144 (0x1800)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Systexpertse4, seg_00c812
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
package body Systexpertse4 is
-- les variables internes :
type Tcontexte is (Contexte0, Contexte1, Contexte2);
Contexte : Tcontexte := Contexte0;
-- les variables de l'application :
Couples : Tuplecollection.Object;
Coupleideal : Tuple.Object;
-- les fonctions necessaires pour les regles intra-fait :
function Caentre (R1, R2 : Reference) return Boolean is
begin
return (Boites.Taille (R1) > Briques.Taille (R2));
end Caentre;
function Apparier is new Tuplecollection.Join2 (Caentre);
function Ecartminimal (Lemeilleur, Unautre : Tuple.Object) return Boolean is
begin
return Boites.Taille (Tuple.First (Lemeilleur)) -
Briques.Taille (Tuple.Second (Lemeilleur)) <
Boites.Taille (Tuple.First (Unautre)) -
Briques.Taille (Tuple.Second (Unautre));
end Ecartminimal;
function Lemeilleurcouple is new Tuplecollection.Themost (Ecartminimal);
-- regles a utiliser dans le contexte 0 :
function Regle0 return Boolean is
begin
-- domaine d'application des regles 0:
-- si il existe des couples (brique, boite) dans les ensembles de boites et de
-- briques qui sont libres tel que la brique rentre dans la boite alors choisir
-- le couple le mieux adapte (le moins de place perdue) et mettre la brique
-- dans la boite
-- preparation de la condition
-- 1ere restriction : cherche les boites libres
--\x09\x09 cherche les briques libres
-- SI EXISTE BOITES <BO> LIBRES ...
Cboite := Lesboites;
-- SI EXISTE BRIQUES <BR> LIBRES ...
Cbrique := Lesbriques;
-- on essaye d'apparier 2 a 2
-- SI BOITE <BO> CONVIENT PHYSIQUEMENT AVEC BRIQUE <BR> ...
Couples := Apparier (Cboite, Cbrique, 2000);
-- evaluation de la condition :
-- (REGLE 0-A)
-- SI IL NE RESTE PLUS DE PAIRES <BO>,<BR> ALORS CHANGEMENT DE CONTEXTE
if Tuplecollection.Isnull (Couples) then
Contexte := Contexte1;
return (True);
end if;
-- REGLE 0-B
-- SI IL Y A DES PAIRES <BO>,<BR> ALORS CHERCHER LA MEILLEUR DE CES PAIRES ...
if not Tuplecollection.Isnull (Couples) then
Coupleideal := Lemeilleurcouple (Couples);
-- ET ATTRIBUER L'UN A L'AUTRE ...
Put_Line (" MEILLEUR COUPLE ACTUEL ");
Occuper (Tuple.First (Coupleideal));
Emballer (Tuple.Second (Coupleideal));
return (True);
end if;
-- REGLE 0-C ...
-- etc ... autres regles du contexte 0
return (False); -- fin des regles de REGLE0
end Regle0;
function Regle1 return Boolean is
begin
-- prepa conditions
-- REGLE 1-A
-- SI BUT NON ATTEINT ALORS CONTINUER VERS LE BUT
if not Butatteint then
Continuer;
return (True);
end if;
-- REGLE 1-B
-- SI BUT ATTEINT ALORS CALCULER LES RESULTATS GLOBAUX PUIS AFFICHER CELUI
-- QUI ETAIT RECHERCHE
if Butatteint then
Calculerfact;
Afficherfact;
return (False); -- fini
end if;
-- REGLE 1-C ...
return (False); -- fin des regles de REGLE 1
end Regle1;
-- MISE EN ROUTE DU MOTEUR DU S-E
procedure Enroute is
begin
-- creation des objets : REGLE 0
Boites.Enroute;
Briques.Enroute;
-- creation des objets : REGLE 1
Nombres.Enroute;
end Enroute;
-- ENTRETIENT DU MOTEUR DU S-E
function Continue return Boolean is
Resu : Boolean;
begin
case Contexte is
when Contexte0 =>
Resu := Regle0;
when Contexte1 =>
Resu := Regle1;
when others =>
Resu := False;
end case;
return (Resu);
end Continue;
end Systexpertse4;
nblk1=5
nid=0
hdr6=a
[0x00] rec0=25 rec1=00 rec2=01 rec3=05e
[0x01] rec0=25 rec1=00 rec2=02 rec3=042
[0x02] rec0=2b rec1=00 rec2=03 rec3=02c
[0x03] rec0=2f rec1=00 rec2=04 rec3=020
[0x04] rec0=0a rec1=00 rec2=05 rec3=001
tail 0x21709851082074fede44b 0x42a00088462060003