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

⟦685bb380d⟧ TextFile

    Length: 4034 (0xfc2)
    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 Systexpertr is
    -- les variables internes :

    type Tcontexte is (Contexte0, Contexte1, Contexte2);
    Contexte : Tcontexte := Contexte0;

    -- les variables de l'application :
    Buts : Collection.Object;
    Solutions : Collection.Object;
    Situation : Expertsystem.Reference;
    Affdemande : Boolean := True; -- affichage demande ?

    -- regles a utiliser dans le contexte 0 :
    function Regle0 return Boolean is
    begin

-- R-0-A
--    SI    LE RANG COURANT DANS L'ECHIQUIER EST EGAL AU RANG A ATTEINDRE
-- ET SI    L'ENSEMBLE DES SOLUTIONS EST VIDE
--    ALORS REMPLIR L'ENSEMBLE DES SOLUTIONS AVEC LES SITUATIONS DE NIVEAU
--	    COURANT (QUI ONT DEJA ETE OUVERTES)

        Regletrouversolution:
            begin
                if Rangcourant = Rangfinal and
                   Collection.Cardinality (Solutions) = 0 then
                    Solutions := Niveaufinal (Rangfinal);
                    return (True);
                end if;
            end Regletrouversolution;

-- R-0-B
--    SI    L'ENSEMBLE DES SOLUTIONS N'EST PAS VIDE
--    ALORS AFFICHER SON CONTENU

        Regleaffichersol:
            begin
                if Collection.Cardinality (Solutions) /= 0 then
                    Chrono.Stop (0);
                    if Affdemande then
                        Affichersol (Solutions);
                    end if;
                    return (False);   -- F I N I !
                end if;
            end Regleaffichersol;

-- R-0-C
--    SI    LE RANG COURANT DANS L'ECHIQUIER EST DIFFERENT DU RANG A ATTEINDRE
-- ET SI    L'ENSEMBLE DES BUTS EST VIDE
--    ALORS REMPLIR L'ENSEMBLE DES BUTS AVEC LES SITUATIONS DE NIVEAU COURANT
--          NON ENCORE OUVERTES

        Reglechercherbut:
            begin
                if Rangcourant /= Rangfinal and
                   Collection.Cardinality (Buts) = 0 then
                    Buts := Niveaunonouvert (Rangcourant);
                    Put (" Nb buts niveau courant :");
                    Put (Integer (Collection.Cardinality (Buts)));
                    Put_Line ("  ");
                    return (True);
                end if;
            end Reglechercherbut;

-- R-0-D
--    SI    L'ENSEMBLE DES BUTS N'EST PAS VIDE
--    ALORS COMMENCER / CONTINUER A TRAITER SON CONTENU

        Regletraiterbut:
            begin
                if Collection.Cardinality (Buts) /= 0 then
                    Rangcourant := Rangcourant + 1;
                    Situation := Collection.First (Buts);
                    for Essai in 1 .. Rangfinal loop
                        if Situationcorrecte
                              (Situation, Rangcourant, Essai) then
                            Ajoutsituation (Situation, Rangcourant, Essai);
                        end if;
                    end loop;
                    Fermesituation (Situation);
                    Collection.Remove (Buts, Situation);
                    if Collection.Cardinality (Buts) /= 0 then
                        Rangcourant := Rangcourant -
                                          1; -- continuer au meme niveau
                    end if;       -- tq ens Buts pas vide
                    return (True);
                end if;
            end Regletraiterbut;

-- etc ... autres regles du contexte 0


        return (False);  -- fin des regles de REGLE0

    end Regle0;


-- MISE EN ROUTE DU MOTEUR DU S-E

    procedure Enroute (Nbrereine : Natural; Affdem : Boolean) is
    begin

        -- initialisations

        Affdemande := Affdem;
        Collection.Clear (Buts);
        Collection.Clear (Solutions);
        Reines.Enroute (Nbrereine);

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