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_0505.C < prev    next >
Encoding:
C/C++ Source or Header  |  1991-04-12  |  1.2 KB  |  64 lines

  1. /* Program EX_0505.C
  2.    Listing 10C - 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, 1, 1);
  19.   SIMEND(24.0);
  20.   CREATE(0.0, 0);
  21.   INISTA(1, "Cost", 0, 0, 0.0, 0.0);
  22. }
  23.  
  24. main()
  25. {
  26.   prime();
  27.  
  28.   do
  29.   {
  30.     if ((ecode = NEXTEV()) > 0)
  31.     switch(ecode)
  32.     {
  33.       case ARRIVL :
  34.                 CREATE(EX(1), ++id);
  35.                 SETA(1, T());
  36.                 SCHED(0.0, NEXTAC, IDE());
  37.                 break;
  38.  
  39.       case NEXTAC:
  40.                 if (server) SCHED(0.0, STARTA, IDE());
  41.                 else        QUEUE(1, 0.0);
  42.                 break;
  43.  
  44.       case STARTA:
  45.                 SCHED(RN(0.667, 0.167), ENDACT, IDE());
  46.                 server--;
  47.                 break;
  48.  
  49.       case ENDACT:
  50.                 TALLY(1, (T() - A(1))*(1 + EX(2)));
  51.                 DISPOS();
  52.                 server++;
  53.                 if (NQ(1))
  54.                 {
  55.                   REMVFQ(1, 1);
  56.                   SCHED(0.0, STARTA, IDE());
  57.                 }
  58.                 break;
  59.     }
  60.   } while (ecode);
  61.  
  62.   SUMRY("");
  63. }
  64.