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_0601.C < prev    next >
Text File  |  1991-04-10  |  1KB  |  68 lines

  1. /* Program EX_0601.C
  2.    Listing 12C - see documentation in TUTOR.SSS
  3. */
  4.  
  5. #include "SSSC.H"
  6.  
  7. #define ARRIVL  1
  8. #define STARTA  2
  9. #define ENDACT  3
  10. #define NEXTAC  4
  11.  
  12. int id, server, ecode;
  13.  
  14. void prime()
  15. {
  16.   server = 1;
  17.   id     = 0;
  18.   INIQUE(1, 3, 1);
  19.   SIMEND(24.0);
  20.   CREATE(0.0, 0);
  21.   INISTA(1, "Cost", 0, 0, 0.0, 0.0);
  22.   SETQDC(1, "SVF");
  23. }
  24.  
  25. main()
  26. {
  27.   prime();
  28.  
  29.   do
  30.   {
  31.     if ((ecode = NEXTEV()) > 0)
  32.     switch(ecode)
  33.     {
  34.       case ARRIVL :
  35.                 id++;
  36.                 CREATE(EX(1.0), id);
  37.                 SETA(1, T());
  38.                 SETA(2, 1 + EX(2.0));
  39.                 SETA(3, RN(.66667, .16667));
  40.                 SCHED(0.0, NEXTAC, IDE());
  41.                 break;
  42.  
  43.       case NEXTAC:
  44.                 if (server) SCHED(0.0, STARTA, IDE());
  45.                 else        QUEUE(1, A(3)/A(2));
  46.                 break;
  47.  
  48.       case STARTA:
  49.                 SCHED(A(3), ENDACT, IDE());
  50.                 server--;
  51.                 break;
  52.  
  53.       case ENDACT:
  54.                 TALLY(1, (T() - A(1))*A(2));
  55.                 DISPOS();
  56.                 server++;
  57.                 if (NQ(1))
  58.                 {
  59.                   REMVFQ(1, 1);
  60.                   SCHED(0.0, STARTA, IDE());
  61.                 }
  62.                 break;
  63.     }
  64.   } while (ecode);
  65.  
  66.   SUMRY("");
  67. }
  68.