home *** CD-ROM | disk | FTP | other *** search
- /* Program EX_0505.C
- Listing 10C - 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, 1, 1);
- SIMEND(24.0);
- CREATE(0.0, 0);
- INISTA(1, "Cost", 0, 0, 0.0, 0.0);
- }
-
- main()
- {
- prime();
-
- do
- {
- if ((ecode = NEXTEV()) > 0)
- switch(ecode)
- {
- case ARRIVL :
- CREATE(EX(1), ++id);
- SETA(1, T());
- SCHED(0.0, NEXTAC, IDE());
- break;
-
- case NEXTAC:
- if (server) SCHED(0.0, STARTA, IDE());
- else QUEUE(1, 0.0);
- break;
-
- case STARTA:
- SCHED(RN(0.667, 0.167), ENDACT, IDE());
- server--;
- break;
-
- case ENDACT:
- TALLY(1, (T() - A(1))*(1 + EX(2)));
- DISPOS();
- server++;
- if (NQ(1))
- {
- REMVFQ(1, 1);
- SCHED(0.0, STARTA, IDE());
- }
- break;
- }
- } while (ecode);
-
- SUMRY("");
- }
-