home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Reference Guide / C-C++ Interactive Reference Guide.iso / c_ref / csource5 / 349_01 / sss.arc / EX_0601.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1991-04-10  |  1.5 KB  |  76 lines

  1. Program EX_0601;
  2. {Listing 12P - see documentation in TUTOR.SSS }
  3.  
  4. uses SSS;
  5. { For Pascal other than Turbo/Quick erase above line }
  6.  
  7. const
  8.   ARRIVL = 1;
  9.   STARTA = 2;
  10.   ENDACT = 3;
  11.   NEXTAC = 4;
  12.  
  13. { For MS Pascal $include:'SSSP1.H' }
  14.  
  15. var
  16.   id, server, ecode    : integer;
  17.  
  18. { For MS Pascal $include:'SSSP2.H' }
  19.  
  20. procedure prime;
  21. begin
  22.   server := 1;
  23.   id     := 0;
  24.   INIQUE(1,3,1);
  25.   SIMEND(24);
  26.   CREATE(0.0, 0);
  27.   INISTA(1,'Cost',0,0,0,0);
  28.   SETQDC(1,'SVF');
  29. end;
  30.  
  31. begin
  32.  
  33.   prime;
  34.  
  35.   repeat
  36.     ecode := NEXTEV;
  37.     if ecode > 0 then
  38.     begin
  39.       case ecode of
  40.  
  41.       ARRIVL: begin
  42.                 id := id + 1;
  43.                 CREATE(EX(1), id);
  44.                 SETA(1, T);
  45.                 SETA(2, 1 + EX(2));
  46.                 SETA(3, RN(0.66667, 0.16667));
  47.                 SCHED(0,     NEXTAC, IDE);
  48.               end;
  49.  
  50.       NEXTAC: if server > 0 then SCHED(0, STARTA, IDE)
  51.               else               QUEUE(1, A(3)/A(2));
  52.  
  53.       STARTA: begin
  54.                 SCHED(A(3), ENDACT, IDE);
  55.                 server := server - 1;
  56.               end;
  57.  
  58.       ENDACT: begin
  59.                 TALLY(1, (T - A(1))*A(2));
  60.                 DISPOS;
  61.                 server := server + 1;
  62.                 if NQ(1) > 0 then
  63.                 begin
  64.                   REMVFQ(1,1);
  65.                   SCHED(0, STARTA, IDE);
  66.                 end;
  67.               end;
  68.  
  69.       end;
  70.     end;
  71.   until ecode = 0;
  72.  
  73.   SUMRY('');
  74.  
  75. end.
  76.