#include "discsim.h"	int reps=0;    class Test_Proc: public ActiveEntity    {     private:	float start_Time;	int my_no;     public:       Test_Proc(char*,float);       void do_it();    };    Count* tries1, * tries2;    Average* elapsed;    float delay1, delay2;    Resource* shared;	Scheduler * runner;    void Test_Proc::do_it()    {int i;    	cout<<runner->now()<<" "<<title<<" "<<my_no<<" "<<nextEvent<<'\n';		switch (nextEvent)		{case 0:			start_Time = s->now();			tries1->update(1);			new Test_Proc("TP",delay1);			nextEvent = 1;			s->wait(this);			break;case 1:			nextEvent = 2;			shared->acquire(this);			break;case 2:		evTime += delay2;			nextEvent = 3;			s->wait(this);			break;case 3:			shared->release();			nextEvent = 99;			s->wait(this);			break;case 99:			elapsed->update(runner->now() - start_Time);			tries2->update(1);			trace("Terminate");			nextEvent = -1;			break;default:			error("attempt to reactivate terminated Proc ",Title);			break;		}    }    Test_Proc::Test_Proc(char* title, float when): ActiveEntity(runner,title,when)    {    	my_no=reps++;    }    Test_Proc *tp1, *tp2;void main(){	float t;	Collection repts;	Report counts("Counts"), averages("averages");	counts.into(&repts);	averages.into(&repts);	runner 	= new Scheduler(&repts);    tries1 	= new Count("Starts"); counts.add_to(tries1);    tries2 	= new Count("Finishes"); counts.add_to(tries2);    elapsed	= new Average("Duration of Procs"); averages.add_to(elapsed);    shared 	= new Resource("shared");    tp1 	= new Test_Proc("Proc1",0.0);        cout<<"Interarrival Time?\n";cin>>delay1;    cout<<"Service Time?\n";cin>>delay2;    cout<<"Simulation length?\n";cin>>t;        runner->run(t);}