      SUBROUTINE MAIN
      LOGICAL*1 NAME(40)
      INTEGER GETARG, OPEN
      INTEGER FD, I
      INTEGER MEM(500)
      LOGICAL*1 CMEM(1000)
      EQUIVALENCE (CMEM(1),MEM(1))
      COMMON/CDSMEM/MEM
      CALL QUERY(21Husage:  dc [file] ...)
      CALL TBINIT(500)
      FD = -3
      I=1
23000 IF (.NOT.(GETARG(I, NAME, 40) .NE. -1))GOTO 23002
      IF (.NOT.(NAME(1) .EQ. 45 .AND. NAME(2) .EQ. 0))GOTO 23003
      FD = 1
      GOTO 23004
23003 CONTINUE
      IF (.NOT.(NAME(1) .NE. 45))GOTO 23005
      FD = OPEN(NAME, 1)
      IF (.NOT.(FD .EQ. -3))GOTO 23007
      CALL CANT(NAME)
23007 CONTINUE
23005 CONTINUE
23004 CONTINUE
      IF (.NOT.(FD .NE. -3))GOTO 23009
      CALL DCEXP (FD)
      IF (.NOT.(FD .NE. 1))GOTO 23011
      CALL CLOSE (FD)
23011 CONTINUE
23009 CONTINUE
23001 I=I+1
      GOTO 23000
23002 CONTINUE
      IF (.NOT.(FD .EQ. -3))GOTO 23013
      CALL DCEXP (1)
23013 CONTINUE
      RETURN
      END
      SUBROUTINE BINOP
      INTEGER L, R, RESULT, OP
      COMMON/CEXP/ TOP, TOKST(200), KINDST(200)
      INTEGER TOP
      INTEGER TOKST
      INTEGER KINDST
      R = TOKST(TOP)
      OP = TOKST(TOP-1)
      L = TOKST(TOP-2)
      TOP = TOP - 2
      IF (.NOT.(OP .EQ. 5))GOTO 23015
      IF (.NOT.(L .NE. 0 .OR. R .NE. 0))GOTO 23017
      RESULT = 1
      GOTO 23018
23017 CONTINUE
      RESULT = 0
23018 CONTINUE
      GOTO 23016
23015 CONTINUE
      IF (.NOT.(OP .EQ. 6))GOTO 23019
      IF (.NOT.(L .NE. 0 .AND. R .NE. 0))GOTO 23021
      RESULT = 1
      GOTO 23022
23021 CONTINUE
      RESULT = 0
23022 CONTINUE
      GOTO 23020
23019 CONTINUE
      IF (.NOT.(OP .EQ. 7))GOTO 23023
      IF (.NOT.(R .EQ. 0))GOTO 23025
      RESULT = 1
      GOTO 23026
23025 CONTINUE
      RESULT = 0
23026 CONTINUE
      GOTO 23024
23023 CONTINUE
      IF (.NOT.(OP .EQ. 8))GOTO 23027
      IF (.NOT.(L .EQ. R))GOTO 23029
      RESULT = 1
      GOTO 23030
23029 CONTINUE
      RESULT = 0
23030 CONTINUE
      GOTO 23028
23027 CONTINUE
      IF (.NOT.(OP .EQ. 9))GOTO 23031
      IF (.NOT.(L .NE. R))GOTO 23033
      RESULT = 1
      GOTO 23034
23033 CONTINUE
      RESULT = 0
23034 CONTINUE
      GOTO 23032
23031 CONTINUE
      IF (.NOT.(OP .EQ. 10))GOTO 23035
      IF (.NOT.(L .GT. R))GOTO 23037
      RESULT = 1
      GOTO 23038
23037 CONTINUE
      RESULT = 0
23038 CONTINUE
      GOTO 23036
23035 CONTINUE
      IF (.NOT.(OP .EQ. 11))GOTO 23039
      IF (.NOT.(L .GE. R))GOTO 23041
      RESULT = 1
      GOTO 23042
23041 CONTINUE
      RESULT = 0
23042 CONTINUE
      GOTO 23040
23039 CONTINUE
      IF (.NOT.(OP .EQ. 12))GOTO 23043
      IF (.NOT.(L .LT. R))GOTO 23045
      RESULT = 1
      GOTO 23046
23045 CONTINUE
      RESULT = 0
23046 CONTINUE
      GOTO 23044
23043 CONTINUE
      IF (.NOT.(OP .EQ. 13))GOTO 23047
      IF (.NOT.(L .LE. R))GOTO 23049
      RESULT = 1
      GOTO 23050
23049 CONTINUE
      RESULT = 0
23050 CONTINUE
      GOTO 23048
23047 CONTINUE
      IF (.NOT.(OP .EQ. 14))GOTO 23051
      RESULT = L + R
      GOTO 23052
23051 CONTINUE
      IF (.NOT.(OP .EQ. 15))GOTO 23053
      RESULT = L - R
      GOTO 23054
23053 CONTINUE
      IF (.NOT.(OP .EQ. 18))GOTO 23055
      RESULT = (-R)
      GOTO 23056
23055 CONTINUE
      IF (.NOT.(OP .EQ. 16))GOTO 23057
      RESULT = L * R
      GOTO 23058
23057 CONTINUE
      IF (.NOT.(OP .EQ. 17))GOTO 23059
      RESULT = L / R
      GOTO 23060
23059 CONTINUE
      IF (.NOT.(OP .EQ. 19))GOTO 23061
      RESULT = MOD(L,R)
      GOTO 23062
23061 CONTINUE
      IF (.NOT.(OP .EQ. 20))GOTO 23063
      RESULT = L**R
      GOTO 23064
23063 CONTINUE
      IF (.NOT.(OP .EQ. 21))GOTO 23065
      RESULT = (+R)
23065 CONTINUE
23064 CONTINUE
23062 CONTINUE
23060 CONTINUE
23058 CONTINUE
23056 CONTINUE
23054 CONTINUE
23052 CONTINUE
23048 CONTINUE
23044 CONTINUE
23040 CONTINUE
23036 CONTINUE
23032 CONTINUE
23028 CONTINUE
23024 CONTINUE
23020 CONTINUE
23016 CONTINUE
      TOKST(TOP) = RESULT
      RETURN
      END
      INTEGER FUNCTION CTONUM(BUF,I,DRADIX)
      LOGICAL*1 BUF(100), TMP(512)
      INTEGER CTOI
      INTEGER I, J, C, N, VAL, RADIX, DRADIX, M
      LOGICAL*1 DIGITS(23)
      DATA DIGITS(1)/48/,DIGITS(2)/49/,DIGITS(3)/50/,DIGITS(4)/51/,DIGIT
     *S(5)/52/,DIGITS(6)/53/,DIGITS(7)/54/,DIGITS(8)/55/,DIGITS(9)/56/,D
     *IGITS(10)/57/,DIGITS(11)/97/,DIGITS(12)/98/,DIGITS(13)/99/,DIGITS(
     *14)/100/,DIGITS(15)/101/,DIGITS(16)/102/,DIGITS(17)/65/,DIGITS(18)
     */66/,DIGITS(19)/67/,DIGITS(20)/68/,DIGITS(21)/69/,DIGITS(22)/70/,D
     *IGITS(23)/0/
      IF (.NOT.(BUF(I) .EQ. 45))GOTO 23067
      I = I + 1
      M = -1
      GOTO 23068
23067 CONTINUE
      M = 1
23068 CONTINUE
      N=0
23069 CONTINUE
      C = INDEXC(DIGITS,BUF(I))
      IF (.NOT.(C.EQ.0))GOTO 23072
      GOTO 23071
23072 CONTINUE
      IF (.NOT.(C .GT. 16))GOTO 23074
      C = C-6
23074 CONTINUE
      N = N+1
      TMP(N) = C-1
23070 I=I+1
      GOTO 23069
23071 CONTINUE
      IF (.NOT.(BUF(I) .EQ. 95))GOTO 23076
      RADIX = 0
      I = I+1
      RADIX = CTOI(BUF,I)
      GOTO 23077
23076 CONTINUE
      RADIX = DRADIX
23077 CONTINUE
      VAL = 0
      J=1
23078 IF (.NOT.(J.LE.N))GOTO 23080
      C = TMP(J)
      IF (.NOT.(C .GE. RADIX))GOTO 23081
      CALL REMARK(12Hnumber error)
23081 CONTINUE
      VAL = VAL * RADIX + C
23079 J = J+1
      GOTO 23078
23080 CONTINUE
      CTONUM=( M*VAL )
      RETURN
      END
      SUBROUTINE DCEXP (FD)
      INTEGER FD, JUNK, I, ANSWER, SAVE
      INTEGER GETLIN, NUMTOC, EXPTOI, INDEXC, STRCMP
      INTEGER IBASE, OBASE, UBASE, RADEXP, EQLOC
      LOGICAL*1 LINE(512), NAME(512)
      LOGICAL*1 ERRMSG(22)
      LOGICAL*1 TEN(3)
      LOGICAL*1 IBNAME(6)
      LOGICAL*1 OBNAME(6)
      DATA ERRMSG(1)/58/,ERRMSG(2)/32/,ERRMSG(3)/32/,ERRMSG(4)/105/,ERRM
     *SG(5)/110/,ERRMSG(6)/118/,ERRMSG(7)/97/,ERRMSG(8)/108/,ERRMSG(9)/1
     *05/,ERRMSG(10)/100/,ERRMSG(11)/32/,ERRMSG(12)/101/,ERRMSG(13)/120/
     *,ERRMSG(14)/112/,ERRMSG(15)/114/,ERRMSG(16)/101/,ERRMSG(17)/115/,E
     *RRMSG(18)/115/,ERRMSG(19)/105/,ERRMSG(20)/111/,ERRMSG(21)/110/,ERR
     *MSG(22)/0/
      DATA TEN(1)/49/,TEN(2)/48/,TEN(3)/0/
      DATA IBNAME(1)/105/,IBNAME(2)/98/,IBNAME(3)/97/,IBNAME(4)/115/,IBN
     *AME(5)/101/,IBNAME(6)/0/
      DATA OBNAME(1)/111/,OBNAME(2)/98/,OBNAME(3)/97/,OBNAME(4)/115/,OBN
     *AME(5)/101/,OBNAME(6)/0/
      IBASE = 10
      OBASE = 10
      CALL TBINST(IBNAME,TEN)
      CALL TBINST(OBNAME,TEN)
23083 IF (.NOT.(GETLIN(LINE, FD) .NE. -1))GOTO 23084
      RADEXP = 0
      CALL STRIP(LINE)
      I = 1
      SAVE = INDEXC(LINE, 61)
      IF (.NOT.(SAVE .NE. 0))GOTO 23085
      IF (.NOT.(LINE(SAVE+1) .EQ. 61))GOTO 23087
      SAVE = 0
      GOTO 23088
23087 CONTINUE
      EQLOC = SAVE
      I = SAVE + 1
      LINE(EQLOC) = 0
      CALL SCOPY(LINE, 1, NAME, 1)
      IF (.NOT.(STRCMP(NAME,IBNAME) .EQ. 0 .OR. STRCMP(NAME,OBNAME) .EQ.
     * 0))GOTO 23089
      RADEXP = 1
23089 CONTINUE
23088 CONTINUE
      GOTO 23086
23085 CONTINUE
      IF (.NOT.(STRCMP(LINE,IBNAME) .EQ. 0 .OR. STRCMP(LINE,OBNAME) .EQ.
     * 0))GOTO 23091
      RADEXP = 1
23091 CONTINUE
23086 CONTINUE
      UBASE = IBASE
      IF (.NOT.(RADEXP .EQ. 1))GOTO 23093
      UBASE = 10
23093 CONTINUE
      ANSWER = EXPTOI(LINE, I, UBASE)
      IF (.NOT.(LINE(I) .NE. 0))GOTO 23095
      IF (.NOT.(SAVE .NE. 0))GOTO 23097
      LINE(EQLOC) = 61
23097 CONTINUE
      CALL PUTLIN(LINE, 3)
      CALL PUTLIN(ERRMSG, 3)
      CALL PUTCH(10, 3)
      GOTO 23096
23095 CONTINUE
      UBASE = OBASE
      IF (.NOT.(RADEXP .EQ. 1 .OR. SAVE .NE. 0))GOTO 23099
      UBASE = 10
23099 CONTINUE
      JUNK = NUMTOC(ANSWER, LINE, 512, UBASE)
      IF (.NOT.(SAVE .NE. 0))GOTO 23101
      CALL TBINST(NAME, LINE)
      IF (.NOT.(STRCMP(IBNAME,NAME) .EQ. 0))GOTO 23103
      IBASE = ANSWER
23103 CONTINUE
      IF (.NOT.(STRCMP(OBNAME,NAME) .EQ. 0))GOTO 23105
      OBASE = ANSWER
23105 CONTINUE
      GOTO 23102
23101 CONTINUE
      CALL PUTLIN(LINE, 2)
      CALL PUTCH(10, 2)
23102 CONTINUE
23096 CONTINUE
      GOTO 23083
23084 CONTINUE
      RETURN
      END
      INTEGER FUNCTION EXPTOI (EXP, PTR, RADIX)
      INTEGER EXPTOK, STACKX
      LOGICAL*1 EXP(100)
      INTEGER PTR, RADIX
      INTEGER K, TOK, KIND, PRECED(21)
      COMMON/CEXP/ TOP, TOKST(200), KINDST(200)
      INTEGER TOP
      INTEGER TOKST
      INTEGER KINDST
      DATA PRECED(1), PRECED(2), PRECED(3), PRECED(4), PRECED(5), PRECED
     *(6), PRECED(7), PRECED(8), PRECED(9), PRECED(10), PRECED(11), PREC
     *ED(12), PRECED(13), PRECED(14), PRECED(15), PRECED(16), PRECED(17)
     *, PRECED(18), PRECED(19), PRECED(20), PRECED(21) / 0, 0, 1, 1, 2, 
     *2, 3, 4,4,4,4,4,4, 5, 5, 6, 6, 8, 6, 7, 8 /
      K = PTR
      TOP = 1
      TOKST(TOP) = 2
      KINDST(TOP) = 3
23107 IF (.NOT.(EXPTOK(EXP, K, TOK, KIND, RADIX) .EQ. 1))GOTO 23108
      IF (.NOT.(KIND .EQ. 2))GOTO 23109
      IF (.NOT.(KINDST(TOP) .EQ. 2))GOTO 23111
      EXPTOI=(0)
      RETURN
23111 CONTINUE
      GOTO 23110
23109 CONTINUE
      IF (.NOT.(KIND .EQ. 1))GOTO 23113
      IF (.NOT.(KINDST(TOP) .EQ. 1))GOTO 23115
      EXPTOI=(0)
      RETURN
23115 CONTINUE
      IF (.NOT.(KINDST(TOP) .EQ. 3))GOTO 23117
      IF (.NOT.(TOK .NE. 14 .AND. TOK .NE. 15 .AND. TOK .NE. 7))GOTO 231
     *19
      EXPTOI=(0)
      RETURN
23119 CONTINUE
      IF (.NOT.(STACKX(0, 2) .EQ. -3))GOTO 23121
      EXPTOI=(0)
      RETURN
23121 CONTINUE
      IF (.NOT.(TOK .EQ. 14))GOTO 23123
      TOK = 21
      GOTO 23124
23123 CONTINUE
      IF (.NOT.(TOK .EQ. 15))GOTO 23125
      TOK = 18
23125 CONTINUE
23124 CONTINUE
      GOTO 23118
23117 CONTINUE
      IF (.NOT.(KINDST(TOP-1) .EQ. 1))GOTO 23127
23129 IF (.NOT.(PRECED(TOKST(TOP-1)) .GE. PRECED(TOK)))GOTO 23130
      CALL BINOP
      GOTO 23129
23130 CONTINUE
23127 CONTINUE
23118 CONTINUE
23116 CONTINUE
      GOTO 23114
23113 CONTINUE
      IF (.NOT.(TOK .NE. 3))GOTO 23131
      IF (.NOT.(KINDST(TOP) .NE. 2))GOTO 23133
      EXPTOI=(0)
      RETURN
23133 CONTINUE
23135 IF (.NOT.(PRECED(TOKST(TOP-1)) .GT. PRECED(TOK)))GOTO 23136
      IF (.NOT.(KINDST(TOP-1) .EQ. 1))GOTO 23137
      CALL BINOP
      GOTO 23138
23137 CONTINUE
      EXPTOI=(0)
      RETURN
23138 CONTINUE
      GOTO 23135
23136 CONTINUE
      IF (.NOT.(PRECED(TOKST(TOP-1)) .EQ. PRECED(TOK)))GOTO 23139
      IF (.NOT.(TOK .EQ. 1))GOTO 23141
      PTR = K
      EXPTOI=(TOKST(TOP))
      RETURN
23141 CONTINUE
      TOK = TOKST(TOP)
      KIND = KINDST(TOP)
      TOP = TOP -2
23142 CONTINUE
      GOTO 23140
23139 CONTINUE
      EXPTOI=(0)
      RETURN
23140 CONTINUE
23131 CONTINUE
23114 CONTINUE
23110 CONTINUE
      IF (.NOT.(STACKX(TOK, KIND) .EQ. -3))GOTO 23143
      EXPTOI=(0)
      RETURN
23143 CONTINUE
      GOTO 23107
23108 CONTINUE
      EXPTOI=(0)
      RETURN
      END
      INTEGER FUNCTION EXPTOK(EXP, K, TOK, KIND, RADIX)
      LOGICAL*1 EXP(100), DEFN(512), NAME(512)
      INTEGER K
      INTEGER TOK
      INTEGER KIND
      INTEGER RADIX
      INTEGER CTONUM, TBLOOK
      LOGICAL*1 TYPE
      LOGICAL*1 C, CN
      COMMON/CEXP/ TOP, TOKST(200), KINDST(200)
      INTEGER TOP
      INTEGER TOKST
      INTEGER KINDST
      LOGICAL*1 DIGITS(23)
      DATA DIGITS(1)/48/,DIGITS(2)/49/,DIGITS(3)/50/,DIGITS(4)/51/,DIGIT
     *S(5)/52/,DIGITS(6)/53/,DIGITS(7)/54/,DIGITS(8)/55/,DIGITS(9)/56/,D
     *IGITS(10)/57/,DIGITS(11)/97/,DIGITS(12)/98/,DIGITS(13)/99/,DIGITS(
     *14)/100/,DIGITS(15)/101/,DIGITS(16)/102/,DIGITS(17)/65/,DIGITS(18)
     */66/,DIGITS(19)/67/,DIGITS(20)/68/,DIGITS(21)/69/,DIGITS(22)/70/,D
     *IGITS(23)/0/
      C = TYPE(EXP(K))
      IF (.NOT.(RADIX .GT. 10))GOTO 23145
      IF (.NOT.(INDEXC(DIGITS,EXP(K)) .GT. 0))GOTO 23147
      C = 2
23147 CONTINUE
23145 CONTINUE
      IF (.NOT.(C .EQ. 2))GOTO 23149
      TOK = CTONUM(EXP, K, RADIX)
      KIND = 2
      EXPTOK=(1)
      RETURN
23149 CONTINUE
      IF (.NOT.(C .EQ. 1))GOTO 23151
      CALL MOVNAM(EXP, K, NAME, 1)
      K = K + LENGTH(NAME)
      IF (.NOT.(TBLOOK(NAME, DEFN) .EQ. 1))GOTO 23153
      I = 1
      TOK = CTONUM(DEFN, I, 10)
      KIND = 2
      EXPTOK=(1)
      RETURN
23153 CONTINUE
      EXPTOK=(0)
      RETURN
23154 CONTINUE
      GOTO 23152
23151 CONTINUE
      CN = EXP(K+1)
      KIND = 1
      IF (.NOT.(C .EQ. 126))GOTO 23155
      IF (.NOT.(CN .EQ. 61))GOTO 23157
      TOK = 9
      K = K + 1
      GOTO 23158
23157 CONTINUE
      TOK = 7
23158 CONTINUE
      GOTO 23156
23155 CONTINUE
      IF (.NOT.(C .EQ. 94))GOTO 23159
      IF (.NOT.(CN .EQ. 61))GOTO 23161
      TOK = 9
      K = K + 1
      GOTO 23162
23161 CONTINUE
      TOK = 7
23162 CONTINUE
      GOTO 23160
23159 CONTINUE
      IF (.NOT.(C .EQ. 33))GOTO 23163
      IF (.NOT.(CN .EQ. 61))GOTO 23165
      TOK = 9
      K = K + 1
      GOTO 23166
23165 CONTINUE
      TOK = 7
23166 CONTINUE
      GOTO 23164
23163 CONTINUE
      IF (.NOT.(C .EQ. 60))GOTO 23167
      IF (.NOT.(CN .EQ. 61))GOTO 23169
      TOK = 13
      K = K + 1
      GOTO 23170
23169 CONTINUE
      TOK = 12
23170 CONTINUE
      GOTO 23168
23167 CONTINUE
      IF (.NOT.(C .EQ. 62))GOTO 23171
      IF (.NOT.(CN .EQ. 61))GOTO 23173
      TOK = 11
      K = K + 1
      GOTO 23174
23173 CONTINUE
      TOK = 10
23174 CONTINUE
      GOTO 23172
23171 CONTINUE
      IF (.NOT.(C .EQ. 61))GOTO 23175
      IF (.NOT.(CN .EQ. 61))GOTO 23177
      TOK = 8
      K = K + 1
      GOTO 23178
23177 CONTINUE
      TOK = -1
23178 CONTINUE
      GOTO 23176
23175 CONTINUE
      IF (.NOT.(C .EQ. 124))GOTO 23179
      TOK = 5
      GOTO 23180
23179 CONTINUE
      IF (.NOT.(C .EQ. 38))GOTO 23181
      TOK = 6
      GOTO 23182
23181 CONTINUE
      IF (.NOT.(C .EQ. 43))GOTO 23183
      TOK = 14
      GOTO 23184
23183 CONTINUE
      IF (.NOT.(C .EQ. 45))GOTO 23185
      TOK = 15
      GOTO 23186
23185 CONTINUE
      IF (.NOT.(C .EQ. 42))GOTO 23187
      IF (.NOT.(CN .EQ. 42))GOTO 23189
      TOK = 20
      K = K + 1
      GOTO 23190
23189 CONTINUE
      TOK = 16
23190 CONTINUE
      GOTO 23188
23187 CONTINUE
      IF (.NOT.(C .EQ. 47))GOTO 23191
      TOK = 17
      GOTO 23192
23191 CONTINUE
      IF (.NOT.(C .EQ. 37))GOTO 23193
      TOK = 19
      GOTO 23194
23193 CONTINUE
      IF (.NOT.(C .EQ. 40))GOTO 23195
      KIND = 3
      TOK = 3
      GOTO 23196
23195 CONTINUE
      IF (.NOT.(C .EQ. 41))GOTO 23197
      KIND = 3
      TOK = 4
      GOTO 23198
23197 CONTINUE
      IF (.NOT.(C .EQ. 0))GOTO 23199
      KIND = 3
      TOK = 1
      GOTO 23200
23199 CONTINUE
      TOK = -1
23200 CONTINUE
23198 CONTINUE
23196 CONTINUE
23194 CONTINUE
23192 CONTINUE
23188 CONTINUE
23186 CONTINUE
23184 CONTINUE
23182 CONTINUE
23180 CONTINUE
23176 CONTINUE
23172 CONTINUE
23168 CONTINUE
23164 CONTINUE
23160 CONTINUE
23156 CONTINUE
      IF (.NOT.(TOK .EQ. -1))GOTO 23201
      EXPTOK=(0)
      RETURN
23201 CONTINUE
      IF (.NOT.(TOK .NE. 1))GOTO 23203
      K = K + 1
23203 CONTINUE
      EXPTOK=(1)
      RETURN
23152 CONTINUE
23150 CONTINUE
      END
      SUBROUTINE MOVNAM (IN, I, OUT, J)
      LOGICAL*1 IN(100), OUT(100)
      INTEGER I, J, K1, K2
      LOGICAL*1 TYPE
      LOGICAL*1 C
      K1 = I
      K2 = J
      C=TYPE(IN(K1))
23205 IF (.NOT.(C .EQ. 1 .OR. C .EQ. 2))GOTO 23207
      OUT(K2) = IN(K1)
      K1 = K1 + 1
      K2 = K2 + 1
23206 C=TYPE(IN(K1))
      GOTO 23205
23207 CONTINUE
      OUT(K2) = 0
      RETURN
      END
      INTEGER FUNCTION NUMTOC(INT, STR, SIZE, RADIX)
      INTEGER MOD
      INTEGER RADIX
      INTEGER D, I, INT, INTVAL, J, K, SIZE
      LOGICAL*1 STR(100)
      LOGICAL*1 DIGITS(17)
      DATA DIGITS(1)/48/,DIGITS(2)/49/,DIGITS(3)/50/,DIGITS(4)/51/,DIGIT
     *S(5)/52/,DIGITS(6)/53/,DIGITS(7)/54/,DIGITS(8)/55/,DIGITS(9)/56/,D
     *IGITS(10)/57/,DIGITS(11)/65/,DIGITS(12)/66/,DIGITS(13)/67/,DIGITS(
     *14)/68/,DIGITS(15)/69/,DIGITS(16)/70/,DIGITS(17)/0/
      INTVAL = IABS(INT)
      STR(1) = 0
      I = 1
23208 CONTINUE
      I = I+1
      D = MOD(INTVAL,RADIX)
      STR(I) = DIGITS(D+1)
      INTVAL = INTVAL / RADIX
23209 IF (.NOT.(INTVAL .EQ. 0 .OR. I .GE. SIZE))GOTO 23208
23210 CONTINUE
      IF (.NOT.(INT .LT. 0 .AND. I .LT. SIZE))GOTO 23211
      I = I+1
      STR(I) = 45
23211 CONTINUE
      NUMTOC = I - 1
      J = 1
23213 IF (.NOT.(J .LT. I))GOTO 23215
      K = STR(I)
      STR(I) = STR(J)
      STR(J) = K
      I = I-1
23214 J = J+1
      GOTO 23213
23215 CONTINUE
      RETURN
      END
      INTEGER FUNCTION STACKX(TOK, KIND)
      INTEGER TOK, KIND
      COMMON/CEXP/ TOP, TOKST(200), KINDST(200)
      INTEGER TOP
      INTEGER TOKST
      INTEGER KINDST
      IF (.NOT.(TOP .GE. 200))GOTO 23216
      CALL REMARK (32Harith evaluation stack overflow.)
      STACKX=(-3)
      RETURN
23216 CONTINUE
      TOP = TOP + 1
      TOKST(TOP) = TOK
      KINDST(TOP) = KIND
      STACKX=(0)
      RETURN
      END
      SUBROUTINE STRIP (LINE)
      LOGICAL*1 LINE(100)
      INTEGER I
      I=1
23218 IF (.NOT.(LINE(I) .NE. 0))GOTO 23220
      IF (.NOT.(LINE(I) .EQ. 32 .OR. LINE(I) .EQ. 9 .OR. LINE(I) .EQ. 10
     *))GOTO 23221
      CALL SCOPY(LINE, I+1, LINE, I)
      GOTO 23222
23221 CONTINUE
      I = I + 1
23222 CONTINUE
23219 GOTO 23218
23220 CONTINUE
      RETURN
      END
