home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / modcomp / bufill. < prev    next >
Text File  |  2020-01-01  |  6KB  |  154 lines

  1.       INTEGER FUNCTION BUFILL (BUFFER)
  2. C
  3. C     ****************************************************************
  4. C
  5. C              KERMIT for the MODCOMP MAXIV operating system
  6. C
  7. C        Compliments of:
  8. C
  9. C                         SETPOINT, Inc.
  10. C                      10245 Brecksville Rd.
  11. C                      Brecksville, Ohio 44141
  12. C
  13. C
  14. C      KERMIT is a copyrighted protocol of Columbia Univ. The authors
  15. C      of this version hereby grant permission to copy this software
  16. C      provided that it is not used for an explicitly commercial
  17. C      purpose and that proper credit be given. SETPOINT, Inc. makes
  18. C      no warranty whatsoever regarding the accuracy of this package
  19. C      and will assume no liability resulting from it's use.
  20. C
  21. C     ****************************************************************
  22. C
  23. C     Abstract:  Fill up the buffer with character bytes from the
  24. C                sending disk file.
  25. C
  26. C     MODIFICATION HISTORY
  27. C
  28. C     BY            DATE     REASON            PROGRAMS AFFECTED
  29. C
  30. C
  31. C     ****************************************************************
  32. C
  33. C     Author: BOB BORGESON          Version: A.0    Date: Oct-86
  34. C
  35. C     Calling Parameters:
  36. C
  37. C     R    BUFFER       - Data array to be filled from the disk file
  38. C
  39. C     ****************************************************************
  40. C
  41. C     Messages generated by this module :  None
  42. C
  43. C     ****************************************************************
  44. C
  45. C     Subroutines called directly : CTL, DGETCH
  46. C
  47. C     ****************************************************************
  48. C
  49. C     Files referenced :  None
  50. C
  51. C     ****************************************************************
  52. C
  53. C     Local variable definitions :
  54. C
  55. C     ****************************************************************
  56. C
  57. C     Commons referenced :  KER, KERPAR
  58. C
  59. C     ****************************************************************
  60. C
  61. C     (*$END.DOCUMENT*)
  62. C
  63. C     ****************************************************************
  64. C     *                                                              *
  65. C     *         D I M E N S I O N   S T A T E M E N T S              *
  66. C     *                                                              *
  67. C     ****************************************************************
  68. C
  69.       IMPLICIT INTEGER (A-Z)
  70. C
  71.       INTEGER*2   BUFFER(132)
  72. C
  73. C     ****************************************************************
  74. C     *                                                              *
  75. C     *         T Y P E   S T A T E M E N T S                        *
  76. C     *                                                              *
  77. C     ****************************************************************
  78. C
  79. C
  80. C     ****************************************************************
  81. C     *                                                              *
  82. C     *         C O M M O N   S T A T E M E N T S                    *
  83. C     *                                                              *
  84. C     ****************************************************************
  85. C
  86.       INCLUDE USL/KERCOM
  87.       INCLUDE USL/KERPMC
  88. C
  89. C     ****************************************************************
  90. C     *                                                              *
  91. C     *         E Q U I V A L E N C E   S T A T E M E N T S          *
  92. C     *                                                              *
  93. C     ****************************************************************
  94. C
  95. C
  96. C     ****************************************************************
  97. C     *                                                              *
  98. C     *         D A T A   S T A T E M E N T S                        *
  99. C     *                                                              *
  100. C     ****************************************************************
  101. C
  102. C
  103. C     ****************************************************************
  104. C
  105. C     Code starts here :
  106. C
  107.       I=1
  108. C                                          !FILE DESCRIPTOR OF THE SENDING
  109. C                                          !DISK FILE
  110.       CH=7
  111.   100 CONTINUE
  112.       IF ((DGETCH(T,CH).EQ.EOF))GO TO 1000
  113. C                                          !KEEP READING BYTE FROM THE DISK
  114. C                                          !FILE UNTIL WE REACH AN EOF,OR
  115. C                                          !WE HAVE ENOUGH BYTE TO FILL
  116. C                                          !BUFFER
  117.          IF((T.GE.BLANK).AND.(T.NE.DEL).AND.(T.NE.QUOTE))GO TO 800
  118. C                                          !IT IS THE LINE DELIMITER OF
  119. C                                          !THIS SYSTEM, INSERT THE LF
  120. C                                          !BEFORE THE CR
  121.              IF(T.NE.LF)GO TO 700
  122.                 BUFFER(I)=QUOTE
  123.                 I=I+1
  124.                 BUFFER(I)=CTL(CR)
  125.                 I=I+1
  126.   700        CONTINUE
  127. C                                          !WE GOT A QUOTE CHARACTER
  128.              BUFFER(I)=QUOTE
  129.              I=I+1
  130.              IF(T.NE.QUOTE)T=CTL(T)
  131.   800    CONTINUE
  132.          BUFFER(I)=T
  133.          I=I+1
  134. C                                    !READ UP TO SPSIZ-8 BYTE FROM DISK
  135.          IF(I.LE.(SPSIZ-8))GO TO 900
  136. C                                    !I BYTE WAS READ
  137.             BUFILL=I-1
  138.             RETURN
  139.   900    CONTINUE
  140. C
  141.          GO TO 100
  142. C
  143.  1000 CONTINUE
  144. C
  145.       IF(I.NE.1)GO TO 1100
  146. C                                    !ZERO BYTE WAS READ
  147.         BUFILL=EOF
  148.         RETURN
  149.  1100 CONTINUE
  150. C                                    !PARTIAL EOF WAS DETECTED
  151.         BUFILL=I-1
  152.         RETURN
  153.       END
  154.