SUBROUTINE ENDSV(NSET) C//////////////////////////////////////////////////////////////// C/ / C/ Program-id. ENDSV / C/ Date-written. Jan. 26th 1984 / C/ File-name. ENDSV4.FOR / C/ Remarks. Subroutine ENDSV page 151 / C/ In ENDSV (END of SerVice) it is first / C/ necessary to collect statiscal infor- / C/ mation about the item completing / C/ processing. / C/ This is the version for Examle 4. / C/ / C//////////////////////////////////////////////////////////////// C C * Default size of INTEGER = 2 bytes in F80 C INTEGER*4 NSET(6,1) C COMMON /C1/ID,IM,INIT,JEVNT,JMNIT,MFA,MSTOP,MX,MXC,NCLCT,NHIST, 1 NOQ,NORPT,NOT,NPRMS,NRUN,NRUNS,NSTAT,OUT,SCALE,ISEED, 2 TNOW,TBEG,TFIN,MXX,NPRNT,NCRDR,NEP,VNQ(4) C COMMON /C2/ATRIB(4),ENQ(4),INN(4),JCELS(5,22),KRANK(4),MAXNQ(4), 1 MFE(4),MLC(4),MLE(4),NCELS(5),NQ(4),PARAM(20,4), 2 QTIME(4),SSUMA(10,5),SUMA(10,5),NAME(6),NPROJ,MON, 3 NDAY,NYR,JCLR C COMMON /C3/ XL,XMU(2),XBUZ(2),XISYS,CBALK,TCUST,TLD C C --- Service is completed. Decrement number in system. C Collect ststistics on customer time in system and C time between departure. C CALL TMST(XISYS,TNOW,3,NSET) XISYS = XISYS - 1.0 TISYS = TNOW - ATRIB(3) CALL COLCT(TISYS,1,NSET) TBD = TNOW - TLD TLD = TNOW CALL COLCT(TBD,2,NSET) C C --- J = number of queue of server with completed service. C M = server number, K = number of queue of the other server C J = JEVNT M = J - 1 IF (J - 2) 15,2,3 2 K = 3 GO TO 1 3 K = 2 1 IF (NQ(J)) 15,4,6 4 IF (NQ(K)) 15,5,9 5 CALL TMST(XBUZ(M),TNOW,M,NSET) XBUZ(M) = 0.0 RETURN C C --- Put first customer of queue J in service C 6 CALL RMOVE(MFE(J),J,NSET) C C --- Cause end of service event C 10 CALL DRAND(ISEED,RNUM) ATRIB(1) = TNOW - XMU(M) * ALOG(RNUM) ATRIB(2) = J CALL FILEM(1,NSET) C C --- Test difference in queue length to determine if C jockeying to take place C IF (NQ(K) - NQ(J) - 2) 7,8,8 7 RETURN 8 CALL RMOVE(MLE(K),K,NSET) ATRIB(4) = TNOW CALL FILEM(J,NSET) RETURN C C --- Since queue of server M is empty, last customer in queue C of other server is served by M C 9 CALL RMOVE(MLE(K),K,NSET) GO TO 10 15 CALL ERROR(86,NSET) CALL EXIT END