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 / EXPR.FOR < prev    next >
Encoding:
Text File  |  1991-04-13  |  2.0 KB  |  92 lines

  1.       SUBROUTINE EXPR
  2.       IMPLICIT NONE
  3. C
  4.       INCLUDE MATLAB$KOM:RECU.KOM
  5.       INCLUDE MATLAB$KOM:IOP.KOM
  6.       INCLUDE MATLAB$KOM:COM.KOM
  7. C
  8.       INTEGER OP, R, BLANK, SIGN, PLUS, MINUS, NAME, COLON, EYE(4)
  9.       INTEGER KOUNT, LS
  10. C
  11.       DATA COLON / 40 /, BLANK / 36 /, PLUS / 41 /
  12.       DATA MINUS / 42 /, NAME / 1 /, EYE / 14, 34, 14, 36 /
  13. C
  14. C
  15.       IF (DDT.EQ.1) WRITE (WTE, 100) PT, RSTK(PT)
  16. 100   FORMAT (' EXPR  ', 2I4)
  17.       R = RSTK(PT)
  18.       GO TO (01, 01, 01, 01, 01, 05, 25, 99, 99, 01,
  19.      .       01, 99, 99, 99, 99, 99, 99, 01, 01, 01), R
  20. C
  21. 01    CONTINUE
  22.       IF (SYM.EQ.COLON) CALL PUTID (SYN, EYE)
  23.       IF (SYM.EQ.COLON) SYM = NAME
  24.       KOUNT = 1
  25. C
  26. 02    CONTINUE
  27.       SIGN = PLUS
  28.       IF (SYM.EQ.MINUS) SIGN = MINUS
  29.       IF (SYM.EQ.PLUS .OR. SYM.EQ.MINUS) CALL GETSYM
  30.       PT = PT+1
  31.       IF (PT.GT.PSIZE-1) CALL ERROR (26)
  32.       IF (ERR.GT.0) RETURN
  33.       PSTK(PT) = SIGN+256*KOUNT
  34.       RSTK(PT) = 6
  35. C *CALL* TERM
  36.       RETURN
  37. C
  38. 05    CONTINUE
  39.       SIGN = MOD (PSTK(PT), 256)
  40.       KOUNT = PSTK(PT)/256
  41.       PT = PT-1
  42.       IF (SIGN.EQ.MINUS) CALL STACK1 (MINUS)
  43.       IF (ERR.GT.0) RETURN
  44. C
  45. 10    CONTINUE
  46.       IF (SYM.EQ.PLUS .OR. SYM.EQ.MINUS) GO TO 20
  47.       GO TO 50
  48. C
  49. 20    CONTINUE
  50.       IF (RSTK(PT).NE.10) GO TO 21
  51. C ***      BLANK IS DELIMITER INSIDE ANGLE BRACKETS
  52.       LS = LPT(3)-2
  53.       IF (LIN(LS).EQ.BLANK) GO TO 50
  54. C
  55. 21    CONTINUE
  56.       OP = SYM
  57.       CALL GETSYM
  58.       PT = PT+1
  59.       PSTK(PT) = OP+256*KOUNT
  60.       RSTK(PT) = 7
  61. C *CALL* TERM
  62.       RETURN
  63. C
  64. 25    CONTINUE
  65.       OP = MOD (PSTK(PT), 256)
  66.       KOUNT = PSTK(PT)/256
  67.       PT = PT-1
  68.       CALL STACK2 (OP)
  69.       IF (ERR.GT.0) RETURN
  70.       GO TO 10
  71. C
  72. 50    CONTINUE
  73.       IF (SYM.NE.COLON) GO TO 60
  74.       CALL GETSYM
  75.       KOUNT = KOUNT+1
  76.       GO TO 02
  77. C
  78. 60    CONTINUE
  79.       IF (KOUNT.GT.3) CALL ERROR (33)
  80.       IF (ERR.GT.0) RETURN
  81.       RHS = KOUNT
  82.       IF (KOUNT.GT.1) CALL STACK2 (COLON)
  83.       IF (ERR.GT.0) RETURN
  84.       RETURN
  85. C
  86. 99    CONTINUE
  87.       CALL ERROR (22)
  88.       IF (ERR.GT.0) RETURN
  89. C
  90.       RETURN
  91.       END
  92.