MODULE systeme; IMPORT SIM, STAT, EVENT, RAND, RAND1, RES; FROM EVENT IMPORT EventType, Schedule; FROM groupmac IMPORT Groupe, Create; FROM commande IMPORT BalayageComplet, PlusPres; VAR FinSim : EventType; (* La fin de la simulation. *) Guy, Bob : RES.Resource; G : ARRAY [1..4] OF Groupe; i : CARDINAL; PROCEDURE DFonc () : LONGREAL; BEGIN RETURN RAND1.Expon (100.0, 1) END DFonc; PROCEDURE DRepMan (VAR S : BOOLEAN) : LONGREAL; BEGIN S := TRUE; RETURN 5.0 END DRepMan; PROCEDURE Geo2 (VAR S : BOOLEAN) : LONGREAL; BEGIN IF RAND.Uniform01 (2) <= 0.8 THEN S := TRUE; RETURN 5.0 END; IF RAND.Uniform01 (2) <= 0.8 THEN S := TRUE ELSE S := FALSE END; RETURN 10.0 END Geo2; PROCEDURE ProcFinSim; BEGIN FOR i := 1 TO 4 DO STAT.Report (G [i]^.Prod) END; SIM.Stop END ProcFinSim; BEGIN EVENT.Create (FinSim, ProcFinSim, "Fin de la simulation"); RES.Create (Guy, RES.Fifo, 1, "Le reparateur Guy"); RES.Create (Bob, RES.Fifo, 1, "Le reparateur Bob"); FOR i := 1 TO 3 DO Create (G [i], 10, 5, PlusPres, DFonc, Geo2, DRepMan, Guy) END; Create (G [4], 15, 1, BalayageComplet, DFonc, Geo2, DRepMan, Bob); Schedule (FinSim, 2000.0, NIL); SIM.Start END systeme.