1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
subroutine evalr (argstk, i, j)
integer argstk (100), i, j
common /cdefio/ bp, buf (4096)
integer bp
integer buf
common /cfname/ fcname (30)
integer fcname
common /cfor/ fordep, forstk (200)
integer fordep
integer forstk
common /cgoto/ xfer
integer xfer
common /clabel/ label, retlab, memflg, col, logic0
integer label
integer retlab
integer memflg
integer col
integer logic0
common /cline/ dbgout, dbglev, level, linect (5), infile (5), fnam
*p, fnames ( 150)
integer dbgout
integer dbglev
integer level
integer linect
integer infile
integer fnamp
integer fnames
common /cmacro/ cp, ep, evalst (500), deftbl
integer cp
integer ep
integer evalst
integer deftbl
common /coutln/ outp, outbuf (74)
integer outp
integer outbuf
common /csbuf/ sbp, sbuf(2048), smem(240)
integer sbp
integer sbuf
integer smem
common /cswtch/ swtop, swlast, swstak(1000), swvnum, swvlev, swvst
*k(10), swinrg
integer swtop
integer swlast
integer swstak
integer swvnum
integer swvlev
integer swvstk
integer swinrg
common /ckword/ rkwtbl
integer rkwtbl
common /clname/ fkwtbl, namtbl, gentbl, errtbl, xpptbl
integer fkwtbl
integer namtbl
integer gentbl
integer errtbl
integer xpptbl
common /erchek/ ername, body, esp, errstk(30)
integer ername
integer body
integer esp
integer errstk
integer mem( 60000)
common/cdsmem/mem
integer argno, k, m, n, t, td, instr0, delim
external index
integer index, length
integer digits(11)
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)/-2/
t = argstk (i)
td = evalst (t)
if (.not.(td .eq. -10))goto 23000
call domac (argstk, i, j)
goto 23001
23000 continue
if (.not.(td .eq. -12))goto 23002
call doincr (argstk, i, j)
goto 23003
23002 continue
if (.not.(td .eq. -13))goto 23004
call dosub (argstk, i, j)
goto 23005
23004 continue
if (.not.(td .eq. -11))goto 23006
call doif (argstk, i, j)
goto 23007
23006 continue
if (.not.(td .eq. -14))goto 23008
call doarth (argstk, i, j)
goto 23009
23008 continue
instr0 = 0
k = t + length (evalst (t)) - 1
23010 if (.not.(k .gt. t))goto 23012
if (.not.(evalst(k) .eq. 39 .or. evalst(k) .eq. 34))goto 23013
if (.not.(instr0 .eq. 0))goto 23015
delim = evalst(k)
instr0 = 1
goto 23016
23015 continue
instr0 = 0
23016 continue
call putbak (evalst(k))
goto 23014
23013 continue
if (.not.(evalst(k-1) .ne. 36 .or. instr0 .eq. 1))goto 23017
call putbak (evalst (k))
goto 23018
23017 continue
argno = index (digits, evalst (k)) - 1
if (.not.(argno .ge. 0 .and. argno .lt. j - i))goto 23019
n = i + argno + 1
m = argstk (n)
call pbstr (evalst (m))
23019 continue
k = k - 1
23018 continue
23014 continue
23011 k = k - 1
goto 23010
23012 continue
if (.not.(k .eq. t))goto 23021
call putbak (evalst (k))
23021 continue
23009 continue
23007 continue
23005 continue
23003 continue
23001 continue
return
end
c logic0 logical_column
c instr0 in_string
|