	SUBROUTINE	SCAN( NSET,QSET )
C////////////////////////////////////////////////////////////////
C/								/
C/	Program-id.	SCAN.FOR				/
C/	Date-written.	11th,Feb,1984				/
C/	Remarks.	Subroutine SCAN controls the scanner 	/
C/			and is called each time the scanner	/
C/			can intettogate a scan point.		/
C/			From page 274				/
C/								/
C////////////////////////////////////////////////////////////////
C
	DIMENSION	NSET(1),QSET(1)
        COMMON/C1/ID,IM,INIT,JEVNT,JMNIT,MFA,MSTOP,MX,MXC,NCLCT,NHIST,
     $  NOQ,NORPT,NOT,NPRMS,NRUN,NRUNS,NSTAT,OUT,ISEED,TNOW,
     $  TBEG,TFIN,MXX,NPRNT,NCRDR,NEP,VNQ(4),IMM,MAXQS,MAXNS
	COMMON /C2/ATRIB(10),ENQ(4),INN(4),JCELS(5,22),KRANK(4),
     $  MAXNQ(4),MFE(4),MLC(4),MLE(4),NCELS(5),NQ(4),PARAM(20,4),
     $  QTIME(4),SSUMA(10,5),SUMA(10,5),NAME(6),NPROJ,MON,NDAY,NYR,
     $  JCLR,JTRIB(12)
	COMMON /U1/ NARC,NSCAN,JBUFF,NSTA(10),JRPLY(10)
	COMMON /U2/ XL,NTER,IBUFF,CDIAL(2),CREAD(2),SRTIM,SCTIM,
     $  TRTIM,DLTIM,COMTIM(2)
C
C	--- Test to see if scan point has a request which is to be 
C	    transferred to the buffer.
C
	K = JRPLY( NSCAN )
	GO TO (4,1,4,4),K
C
C	--- Test to see if buffer is full. If buffer is full, stop 
C	    scanner and set buffer index to full ststus and return
C
1	IF ( NQ(3) - IBUFF ) 3,2,2
2	JBUFF = 1
	RETURN
C
C	--- If buffer is not full, find the request at the scan point
C	    and transfer it to the buffer.
C
3	CALL	FINDN( NSCAN,5,2,2,KCOL,NSET,QSET )
	CALL	RMOVE( KCOL,2,NSET,QSET )
	JTRIB(1) = 30
	CALL	FILEM( 3,NSET,QSET )
C
C	--- File request in file 3, the file of calls in buffer.
C	    Schedule arrival of answer to the request to occur at
C	    current time plus the transfer time from the scanner to 
C	    the buffer and from the buffer to the station plus 
C	    the computer computation time.
C
	JRPLY( NSCAN ) = 3
	ADDTIM = TRTIM + DLTIM
	ATRIB( 1 ) = TNOW + ADDTIM + UNFRM( COMTIM(1),COMTIM(2) )
	JTRIB( 1 ) = 4
	CALL	FILEM( 1,NSET,QSET )
C
C	--- Set scanner delay time as the sum of the transfer time plus
C	    scan time plus movement time.
C
	SUMTIM = SRTIM + SCTIM + TRTIM
	ATRIB( 1 ) = TNOW + SUMTIM
	GO TO 5
C
C	--- Set scan time delay equal to scan time plus movement time
C
4	SUMTIM = SRTIM + SCTIM
	ATRIB( 1 ) = TNOW + SUMTIM
C
C	--- Move scanner to next position and schedule another scan
C
5	IF( NSCAN - NTER ) 7,6,6
6	NSCAN = 0
7	JTRIB( 1 ) = 3
	CALL	FILEM( 1,NSET,QSET )
	NSCAN = NSCAN + 1
	RETURN
	END
