        SUBROUTINE      ENDSV(NSET)
C////////////////////////////////////////////////////////////////
C/                                                              /
C/      Program-id.     ENDSV                                   /
C/      Date-written.   Jan. 23rd 1984				/
C/      File-name.      ENDSV3.FOR                              /
C/      Remarks.        Subroutine ENDSV page 126               /
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 3.	/
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/ XISYS,BUS
C
C	--- Compute time in system equal to current time minus arrival
C	    time of customer finishing service. Cmpute statistics on
C	    in system.
C
	TISYS = TNOW - ATRIB(3)
	CALL	COLCT(TISYS,1,NSET)
	CALL	HISTO(TISYS,2.0,1.0,1)
C
C	--- Since a customer will depart from the system due to the
C	    end of service collect ststistics on number in system
C	    and decrement the number in the system by one.
C
	CALL	TMST(XISYS,TNOW,1,NSET)
	XISYS = XISYS - 1.0
C
C	--- Test to see if customer are waiting for service. If none
C	    collect statistics on the busy time of the server and set
C	    his status to idle by making bus equal zero.
C	    If customer are waiting for service remove first customer
C	    from the queue of the server which is file two.
C
	IF (NQ(2)) 7,8,9
    7	CALL	ERROR(41,NSET)
	RETURN
C
    8	CALL	TMST(BUS,TNOW,2,NSET)
	BUS = 0.0
	RETURN
C
    9	CALL 	RMOVE(MFE(2),2,NSET)
C
C	--- Compute waiting time of customer and collect statistics
C	    on waiting time. Put customer in service by scheduling
C	    and end of service event for the customer.
C
	WT = TNOW - ATRIB(3)
	CALL	COLCT(WT,2,NSET)
	CALL	DRAND(ISEED,RNUM)
	ATRIB(1) = TNOW - PARAM(2,1) * ALOG(RNUM)
	ATRIB(2) = 2.0
	CALL	FILEM(1,NSET)
	RETURN
	END
