home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
vol_300
/
349_01
/
sss.arc
/
EX_0804.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-04-10
|
2KB
|
85 lines
Program EX_0804;
{Listing 16P - see documentation in TUTOR.SSS}
uses SSS;
{ For Pascal other than Turbo/Quick erase above line }
const
ARRIVL = 1;
STARTA = 2;
ENDACT = 3;
NEXTAC = 4;
TIMEL = 150;
{ For MS Pascal $include:'SSSP1.H' }
var
n, server, ecode : integer;
f : text;
{ For MS Pascal $include:'SSSP2.H' }
procedure prime;
begin
n := 0;
server := 1;
INIQUE(1,0,1);
CREATE(0, n);
SIMEND(TIMEL);
assign(f, 'sss.prn');
rewrite(f);
end;
begin
prime;
repeat
ecode := NEXTEV;
if ecode > 0 then
begin
case ecode of
ARRIVL: begin
n := n + 1;
CREATE(EX(1), n);
SCHED(0, NEXTAC, IDE);
end;
NEXTAC: if server > 0 then SCHED(0, STARTA, IDE)
else
begin
QUEUE(1, 0);
writeln(f, T:7:2,' ',NQ(1):3,' ',
QAVG(1):4:1,' ',QSTD(1):5:2);
writeln('At',T:7:2,' q-size incr to:',NQ(1):3,
' ave q=',QAVG(1):4:1,' std q=',
QSTD(1):5:2);
end;
STARTA: begin
SCHED(EX(0.9), ENDACT, IDE);
server := server - 1;
end;
ENDACT: begin
DISPOS;
server := server + 1;
if NQ(1) > 0 then
begin
REMVFQ(1,1);
SCHED(0, STARTA, IDE);
writeln(f, T:7:2,' ',NQ(1):3,' ',
QAVG(1):4:1,' ',QSTD(1):5:2);
writeln('At',T:7:2,' q-size dicr to:',
NQ(1):3,' ave q=',QAVG(1):4:1,
' std q=',QSTD(1):5:2);
end;
end;
end;
end;
until ecode = 0;
end.