! auto.sim; ! comme autotraV.sim mais avec demos4; begin external class demos="demos4"; demos begin ref(rdist)chargement,dechargement,traversee,tourile; ref(waitq)array cq(1:2); entity class car; begin arriver: cq(1).wait; livrer: hold(tourile.sample); retourner: cq(2).wait; end****car***; entity class ferry; begin integer C,Cote; ref(queue)cargo; ref(entity)E; cargo:-new queue("cargo"); loop: for Cote:=1,2 do begin charger: C:= 0; while C<6 and cq(Cote).length >0 do begin E:-cq(Cote).coopt; E.into(cargo); hold(chargement.sample); C:=C+1; end; traverser: hold(traversee.sample); decharger: while cargo.length > 0 do begin hold(chargement.sample); E:-cargo.first; E.out; E.schedule(0.0); end; end; repeat; end***ferry***; trace; cq(1):- new waitq("principal"); cq(2):- new waitq("ile"); chargement:-new normal("chargement",0.01,0.0); dechargement:- new normal("dechargement",0.01,0.0); traversee:- new normal("traversee",1.0,0.0); tourile:-new normal("tourile",1.0,0.0); new ferry("traversier").schedule(0.0); new car("auto").schedule(0.0); hold(10.0); end; end;