home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol268 / scan.for < prev    next >
Text File  |  1986-05-22  |  2KB  |  79 lines

  1.     SUBROUTINE    SCAN( NSET,QSET )
  2. C////////////////////////////////////////////////////////////////
  3. C/                                /
  4. C/    Program-id.    SCAN.FOR                /
  5. C/    Date-written.    11th,Feb,1984                /
  6. C/    Remarks.    Subroutine SCAN controls the scanner     /
  7. C/            and is called each time the scanner    /
  8. C/            can intettogate a scan point.        /
  9. C/            From page 274                /
  10. C/                                /
  11. C////////////////////////////////////////////////////////////////
  12. C
  13.     DIMENSION    NSET(1),QSET(1)
  14.         COMMON/C1/ID,IM,INIT,JEVNT,JMNIT,MFA,MSTOP,MX,MXC,NCLCT,NHIST,
  15.      $  NOQ,NORPT,NOT,NPRMS,NRUN,NRUNS,NSTAT,OUT,ISEED,TNOW,
  16.      $  TBEG,TFIN,MXX,NPRNT,NCRDR,NEP,VNQ(4),IMM,MAXQS,MAXNS
  17.     COMMON /C2/ATRIB(10),ENQ(4),INN(4),JCELS(5,22),KRANK(4),
  18.      $  MAXNQ(4),MFE(4),MLC(4),MLE(4),NCELS(5),NQ(4),PARAM(20,4),
  19.      $  QTIME(4),SSUMA(10,5),SUMA(10,5),NAME(6),NPROJ,MON,NDAY,NYR,
  20.      $  JCLR,JTRIB(12)
  21.     COMMON /U1/ NARC,NSCAN,JBUFF,NSTA(10),JRPLY(10)
  22.     COMMON /U2/ XL,NTER,IBUFF,CDIAL(2),CREAD(2),SRTIM,SCTIM,
  23.      $  TRTIM,DLTIM,COMTIM(2)
  24. C
  25. C    --- Test to see if scan point has a request which is to be 
  26. C        transferred to the buffer.
  27. C
  28.     K = JRPLY( NSCAN )
  29.     GO TO (4,1,4,4),K
  30. C
  31. C    --- Test to see if buffer is full. If buffer is full, stop 
  32. C        scanner and set buffer index to full ststus and return
  33. C
  34. 1    IF ( NQ(3) - IBUFF ) 3,2,2
  35. 2    JBUFF = 1
  36.     RETURN
  37. C
  38. C    --- If buffer is not full, find the request at the scan point
  39. C        and transfer it to the buffer.
  40. C
  41. 3    CALL    FINDN( NSCAN,5,2,2,KCOL,NSET,QSET )
  42.     CALL    RMOVE( KCOL,2,NSET,QSET )
  43.     JTRIB(1) = 30
  44.     CALL    FILEM( 3,NSET,QSET )
  45. C
  46. C    --- File request in file 3, the file of calls in buffer.
  47. C        Schedule arrival of answer to the request to occur at
  48. C        current time plus the transfer time from the scanner to 
  49. C        the buffer and from the buffer to the station plus 
  50. C        the computer computation time.
  51. C
  52.     JRPLY( NSCAN ) = 3
  53.     ADDTIM = TRTIM + DLTIM
  54.     ATRIB( 1 ) = TNOW + ADDTIM + UNFRM( COMTIM(1),COMTIM(2) )
  55.     JTRIB( 1 ) = 4
  56.     CALL    FILEM( 1,NSET,QSET )
  57. C
  58. C    --- Set scanner delay time as the sum of the transfer time plus
  59. C        scan time plus movement time.
  60. C
  61.     SUMTIM = SRTIM + SCTIM + TRTIM
  62.     ATRIB( 1 ) = TNOW + SUMTIM
  63.     GO TO 5
  64. C
  65. C    --- Set scan time delay equal to scan time plus movement time
  66. C
  67. 4    SUMTIM = SRTIM + SCTIM
  68.     ATRIB( 1 ) = TNOW + SUMTIM
  69. C
  70. C    --- Move scanner to next position and schedule another scan
  71. C
  72. 5    IF( NSCAN - NTER ) 7,6,6
  73. 6    NSCAN = 0
  74. 7    JTRIB( 1 ) = 3
  75.     CALL    FILEM( 1,NSET,QSET )
  76.     NSCAN = NSCAN + 1
  77.     RETURN
  78.     END
  79.