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 = INDEX(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, INDEX, 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 = INDEX(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.(INDEX(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