DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

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 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦ec2df4468⟧ TextFile

    Length: 3840 (0xf00)
    Types: TextFile
    Names: »B«

Derivation

└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13
    └─ ⟦124ff5788⟧ »DATA« 
        └─⟦this⟧ 
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─ ⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 
└─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16
    └─ ⟦6f12a12be⟧ »DATA« 
        └─⟦this⟧ 
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
    └─ ⟦d65440be7⟧ »DATA« 
        └─⟦this⟧ 

TextFile

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