home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / libs / matlab.lzh / MATLAB / MATLAB.LZH / Source / MatLab / GETLIN.FOR < prev    next >
Encoding:
Text File  |  1991-04-13  |  2.1 KB  |  90 lines

  1.       SUBROUTINE GETLIN
  2.       IMPLICIT NONE
  3. C
  4. C GET A NEW LINE
  5. C
  6.       INCLUDE MATLAB$KOM:ALFS.KOM
  7.       INCLUDE MATLAB$KOM:IOP.KOM
  8.       INCLUDE MATLAB$KOM:COM.KOM
  9. C
  10.       INTEGER I, J, K, L, N
  11.       INTEGER LRECL, EOL, SLASH, BSLASH, DOT, BLANK, RETU(4)
  12. C
  13.       DATA EOL / 99 /, DOT / 47 /, BLANK / 36 /
  14.       DATA RETU / 27, 14, 29, 30 /
  15.       DATA SLASH / 44 /, BSLASH / 45 /, LRECL / 80 /
  16. C
  17. C
  18. 10    CONTINUE
  19.       L = LPT(1)
  20. 11    CONTINUE
  21.       DO 12 J = 1, LRECL
  22.          BUF(J) = ALFA(BLANK+1)
  23. 12    CONTINUE
  24.       READ (RIO, 101, END = 50, ERR = 15) (BUF(J), J = 1, LRECL)
  25. 101   FORMAT (80A1)
  26. CDC.. IF (EOF (RIO).NE.0) GO TO 50
  27.       N = LRECL+1
  28. 15    CONTINUE
  29.       N = N-1
  30.       IF (BUF(N).EQ.ALFA(BLANK+1)) GO TO 15
  31.       IF (MOD (LCT(4), 2).EQ.1) WRITE (WTE, 102) (BUF(J), J = 1, N)
  32.       IF (WIO.NE.0) WRITE (WIO, 102) (BUF(J), J = 1, N)
  33. 102   FORMAT (1X, 80A1)
  34. C
  35.       DO 40 J = 1, N
  36.         DO 20 K = 1, ALFL
  37.           IF (BUF(J).EQ.ALFA(K) .OR. BUF(J).EQ.ALFB(K)) GO TO 30
  38. 20      CONTINUE
  39.         K = EOL+1
  40.         CALL XCHAR (BUF(J), K)
  41.         IF (K .GT. EOL) GO TO 10
  42.         IF (K .EQ. EOL) GO TO 45
  43.         IF (K .EQ. -1) L = L-1
  44.         IF (K .LE. 0) GO TO 40
  45. C
  46. 30      CONTINUE
  47.         K = K-1
  48.         IF (K.EQ.SLASH .AND. BUF(J+1).EQ.BUF(J)) GO TO 45
  49.         IF (K.EQ.DOT .AND. BUF(J+1).EQ.BUF(J)) GO TO 11
  50.         IF (K.EQ.BSLASH .AND. N.EQ.1) GO TO 60
  51.         LIN(L) = K
  52.         IF (L.LT.1024) L = L+1
  53.         IF (L.EQ.1024) WRITE (WTE, 33) L
  54. 33      FORMAT (' INPUT BUFFER LIMIT IS ', I4, ' CHARACTERS.')
  55. 40    CONTINUE
  56. 45    CONTINUE
  57.       LIN(L) = EOL
  58.       LPT(6) = L
  59.       LPT(4) = LPT(1)
  60.       LPT(3) = 0
  61.       LPT(2) = 0
  62.       LCT(1) = 0
  63.       CALL GETCH
  64.       RETURN
  65. C
  66. 50    CONTINUE
  67.       IF (RIO.EQ.RTE) GO TO 52
  68.       CALL PUTID (LIN(L), RETU)
  69.       L = L+4
  70.       GO TO 45
  71. C
  72. 52    CONTINUE
  73.       CALL FILES (-1*RTE, BUF)
  74.       LIN(L) = EOL
  75.       RETURN
  76. C
  77. 60    CONTINUE
  78.       N = LPT(6)-LPT(1)
  79.       DO 61 I = 1, N
  80.          J = L+I-1
  81.          K = LIN(J)
  82.          BUF(I) = ALFA(K+1)
  83.          IF (CASE.EQ.1 .AND. K.LT.36) BUF(I) = ALFB(K+1)
  84. 61    CONTINUE
  85.       CALL EDIT (BUF, N)
  86.       N = N+1
  87.       GO TO 15
  88. C
  89.       END
  90.