home *** CD-ROM | disk | FTP | other *** search
- /* Program EX_0601.C
- Listing 12C - see documentation in TUTOR.SSS
- */
-
- #include "SSSC.H"
-
- #define ARRIVL 1
- #define STARTA 2
- #define ENDACT 3
- #define NEXTAC 4
-
- int id, server, ecode;
-
- void prime()
- {
- server = 1;
- id = 0;
- INIQUE(1, 3, 1);
- SIMEND(24.0);
- CREATE(0.0, 0);
- INISTA(1, "Cost", 0, 0, 0.0, 0.0);
- SETQDC(1, "SVF");
- }
-
- main()
- {
- prime();
-
- do
- {
- if ((ecode = NEXTEV()) > 0)
- switch(ecode)
- {
- case ARRIVL :
- id++;
- CREATE(EX(1.0), id);
- SETA(1, T());
- SETA(2, 1 + EX(2.0));
- SETA(3, RN(.66667, .16667));
- SCHED(0.0, NEXTAC, IDE());
- break;
-
- case NEXTAC:
- if (server) SCHED(0.0, STARTA, IDE());
- else QUEUE(1, A(3)/A(2));
- break;
-
- case STARTA:
- SCHED(A(3), ENDACT, IDE());
- server--;
- break;
-
- case ENDACT:
- TALLY(1, (T() - A(1))*A(2));
- DISPOS();
- server++;
- if (NQ(1))
- {
- REMVFQ(1, 1);
- SCHED(0.0, STARTA, IDE());
- }
- break;
- }
- } while (ecode);
-
- SUMRY("");
- }