aboutsummaryrefslogtreecommitdiff
path: root/unix/boot/spp/rpp/rppfor
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /unix/boot/spp/rpp/rppfor
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'unix/boot/spp/rpp/rppfor')
-rw-r--r--unix/boot/spp/rpp/rppfor/README1
-rw-r--r--unix/boot/spp/rpp/rppfor/addchr.f10
-rw-r--r--unix/boot/spp/rpp/rppfor/allblk.f15
-rw-r--r--unix/boot/spp/rpp/rppfor/alldig.f18
-rw-r--r--unix/boot/spp/rpp/rppfor/baderr.f5
-rw-r--r--unix/boot/spp/rpp/rppfor/balpar.f41
-rw-r--r--unix/boot/spp/rpp/rppfor/beginc.f72
-rw-r--r--unix/boot/spp/rpp/rppfor/brknxt.f108
-rw-r--r--unix/boot/spp/rpp/rppfor/cascod.f146
-rw-r--r--unix/boot/spp/rpp/rppfor/caslab.f54
-rw-r--r--unix/boot/spp/rpp/rppfor/declco.f120
-rw-r--r--unix/boot/spp/rpp/rppfor/deftok.f237
-rw-r--r--unix/boot/spp/rpp/rppfor/doarth.f93
-rw-r--r--unix/boot/spp/rpp/rppfor/docode.f87
-rw-r--r--unix/boot/spp/rpp/rppfor/doif.f81
-rw-r--r--unix/boot/spp/rpp/rppfor/doincr.f70
-rw-r--r--unix/boot/spp/rpp/rppfor/domac.f72
-rw-r--r--unix/boot/spp/rpp/rppfor/dostat.f7
-rw-r--r--unix/boot/spp/rpp/rppfor/dosub.f90
-rw-r--r--unix/boot/spp/rpp/rppfor/eatup.f127
-rw-r--r--unix/boot/spp/rpp/rppfor/elseif.f8
-rw-r--r--unix/boot/spp/rpp/rppfor/endcod.f96
-rw-r--r--unix/boot/spp/rpp/rppfor/entdef.f12
-rw-r--r--unix/boot/spp/rpp/rppfor/entdkw.f14
-rw-r--r--unix/boot/spp/rpp/rppfor/entfkw.f69
-rw-r--r--unix/boot/spp/rpp/rppfor/entrkw.f151
-rw-r--r--unix/boot/spp/rpp/rppfor/entxkw.f172
-rw-r--r--unix/boot/spp/rpp/rppfor/errchk.f124
-rw-r--r--unix/boot/spp/rpp/rppfor/errgo.f84
-rw-r--r--unix/boot/spp/rpp/rppfor/errorc.f73
-rw-r--r--unix/boot/spp/rpp/rppfor/evalr.f134
-rw-r--r--unix/boot/spp/rpp/rppfor/finit.f79
-rw-r--r--unix/boot/spp/rpp/rppfor/forcod.f183
-rw-r--r--unix/boot/spp/rpp/rppfor/fors.f87
-rw-r--r--unix/boot/spp/rpp/rppfor/getdef.f136
-rw-r--r--unix/boot/spp/rpp/rppfor/gettok.f104
-rw-r--r--unix/boot/spp/rpp/rppfor/gnbtok.f73
-rw-r--r--unix/boot/spp/rpp/rppfor/gocode.f83
-rw-r--r--unix/boot/spp/rpp/rppfor/gtok.f213
-rw-r--r--unix/boot/spp/rpp/rppfor/ifcode.f71
-rw-r--r--unix/boot/spp/rpp/rppfor/iferrc.f168
-rw-r--r--unix/boot/spp/rpp/rppfor/ifgo.f88
-rw-r--r--unix/boot/spp/rpp/rppfor/ifparm.f26
-rw-r--r--unix/boot/spp/rpp/rppfor/indent.f68
-rw-r--r--unix/boot/spp/rpp/rppfor/initkw.f86
-rw-r--r--unix/boot/spp/rpp/rppfor/labelc.f75
-rw-r--r--unix/boot/spp/rpp/rppfor/labgen.f68
-rw-r--r--unix/boot/spp/rpp/rppfor/lex.f119
-rw-r--r--unix/boot/spp/rpp/rppfor/litral.f76
-rw-r--r--unix/boot/spp/rpp/rppfor/lndict.f86
-rw-r--r--unix/boot/spp/rpp/rppfor/ludef.f84
-rw-r--r--unix/boot/spp/rpp/rppfor/mapid.f13
-rw-r--r--unix/boot/spp/rpp/rppfor/mkpkg.sh22
-rw-r--r--unix/boot/spp/rpp/rppfor/ngetch.f94
-rw-r--r--unix/boot/spp/rpp/rppfor/ogotos.f78
-rw-r--r--unix/boot/spp/rpp/rppfor/otherc.f75
-rw-r--r--unix/boot/spp/rpp/rppfor/outch.f120
-rw-r--r--unix/boot/spp/rpp/rppfor/outcon.f80
-rw-r--r--unix/boot/spp/rpp/rppfor/outdon.f118
-rw-r--r--unix/boot/spp/rpp/rppfor/outdwe.f4
-rw-r--r--unix/boot/spp/rpp/rppfor/outgo.f69
-rw-r--r--unix/boot/spp/rpp/rppfor/outnum.f22
-rw-r--r--unix/boot/spp/rpp/rppfor/outstr.f30
-rw-r--r--unix/boot/spp/rpp/rppfor/outtab.f69
-rw-r--r--unix/boot/spp/rpp/rppfor/parse.f257
-rw-r--r--unix/boot/spp/rpp/rppfor/pbnum.f17
-rw-r--r--unix/boot/spp/rpp/rppfor/pbstr.f75
-rw-r--r--unix/boot/spp/rpp/rppfor/poicod.f172
-rw-r--r--unix/boot/spp/rpp/rppfor/push.f9
-rw-r--r--unix/boot/spp/rpp/rppfor/putbak.f73
-rw-r--r--unix/boot/spp/rpp/rppfor/putchr.f71
-rw-r--r--unix/boot/spp/rpp/rppfor/puttok.f11
-rw-r--r--unix/boot/spp/rpp/rppfor/ratfor.f128
-rw-r--r--unix/boot/spp/rpp/rppfor/relate.f66
-rw-r--r--unix/boot/spp/rpp/rppfor/repcod.f10
-rw-r--r--unix/boot/spp/rpp/rppfor/retcod.f88
-rw-r--r--unix/boot/spp/rpp/rppfor/sdupl.f20
-rw-r--r--unix/boot/spp/rpp/rppfor/skpblk.f73
-rw-r--r--unix/boot/spp/rpp/rppfor/squash.f104
-rw-r--r--unix/boot/spp/rpp/rppfor/strdcl.f170
-rw-r--r--unix/boot/spp/rpp/rppfor/swcode.f99
-rw-r--r--unix/boot/spp/rpp/rppfor/swend.f187
-rw-r--r--unix/boot/spp/rpp/rppfor/swvar.f21
-rw-r--r--unix/boot/spp/rpp/rppfor/synerr.f98
-rw-r--r--unix/boot/spp/rpp/rppfor/thenco.f90
-rw-r--r--unix/boot/spp/rpp/rppfor/ulstal.f69
-rw-r--r--unix/boot/spp/rpp/rppfor/uniqid.f116
-rw-r--r--unix/boot/spp/rpp/rppfor/unstak.f58
-rw-r--r--unix/boot/spp/rpp/rppfor/untils.f80
-rw-r--r--unix/boot/spp/rpp/rppfor/whilec.f72
-rw-r--r--unix/boot/spp/rpp/rppfor/whiles.f69
91 files changed, 7461 insertions, 0 deletions
diff --git a/unix/boot/spp/rpp/rppfor/README b/unix/boot/spp/rpp/rppfor/README
new file mode 100644
index 00000000..74fcacdc
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/README
@@ -0,0 +1 @@
+RPP/RPPFOR -- Fortran source for the RPP program.
diff --git a/unix/boot/spp/rpp/rppfor/addchr.f b/unix/boot/spp/rpp/rppfor/addchr.f
new file mode 100644
index 00000000..f5ed486c
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/addchr.f
@@ -0,0 +1,10 @@
+ subroutine addchr (c, buf, bp, maxsiz)
+ integer bp, maxsiz
+ integer c, buf (100)
+ if (.not.(bp .gt. maxsiz))goto 23000
+ call baderr (16Hbuffer overflow.)
+23000 continue
+ buf (bp) = c
+ bp = bp + 1
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/allblk.f b/unix/boot/spp/rpp/rppfor/allblk.f
new file mode 100644
index 00000000..235267a5
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/allblk.f
@@ -0,0 +1,15 @@
+ integer function allblk (buf)
+ integer buf (100)
+ integer i
+ allblk = 1
+ i = 1
+23000 if (.not.(buf (i) .ne. 10 .and. buf (i) .ne. -2))goto 23002
+ if (.not.(buf (i) .ne. 32))goto 23003
+ allblk = 0
+ goto 23002
+23003 continue
+23001 i = i + 1
+ goto 23000
+23002 continue
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/alldig.f b/unix/boot/spp/rpp/rppfor/alldig.f
new file mode 100644
index 00000000..d922e37f
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/alldig.f
@@ -0,0 +1,18 @@
+ integer function alldig (str)
+ integer str (100)
+ integer i
+ alldig = 0
+ if (.not.(str (1) .eq. -2))goto 23000
+ return
+23000 continue
+ i = 1
+23002 if (.not.(str (i) .ne. -2))goto 23004
+ if (.not.(.not.(48.le.str (i).and.str (i).le.57)))goto 23005
+ return
+23005 continue
+23003 i = i + 1
+ goto 23002
+23004 continue
+ alldig = 1
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/baderr.f b/unix/boot/spp/rpp/rppfor/baderr.f
new file mode 100644
index 00000000..8b6564f5
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/baderr.f
@@ -0,0 +1,5 @@
+ subroutine baderr (msg)
+ integer msg (100)
+ call synerr (msg)
+ call endst
+ end
diff --git a/unix/boot/spp/rpp/rppfor/balpar.f b/unix/boot/spp/rpp/rppfor/balpar.f
new file mode 100644
index 00000000..2c2b67c9
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/balpar.f
@@ -0,0 +1,41 @@
+ subroutine balpar
+ integer t, token (100)
+ integer gettok, gnbtok
+ integer nlpar
+ if (.not.(gnbtok (token, 100) .ne. 40))goto 23000
+ call synerr (19Hmissing left paren.)
+ return
+23000 continue
+ call outstr (token)
+ nlpar = 1
+23002 continue
+ t = gettok (token, 100)
+ if (.not.(t .eq. 59 .or. t .eq. 123 .or. t .eq. 125 .or. t .eq. -1
+ *))goto 23005
+ call pbstr (token)
+ goto 23004
+23005 continue
+ if (.not.(t .eq. 10))goto 23007
+ token (1) = -2
+ goto 23008
+23007 continue
+ if (.not.(t .eq. 40))goto 23009
+ nlpar = nlpar + 1
+ goto 23010
+23009 continue
+ if (.not.(t .eq. 41))goto 23011
+ nlpar = nlpar - 1
+23011 continue
+23010 continue
+23008 continue
+ if (.not.(t .eq. -9))goto 23013
+ call squash (token)
+23013 continue
+ call outstr (token)
+23003 if (.not.(nlpar .le. 0))goto 23002
+23004 continue
+ if (.not.(nlpar .ne. 0))goto 23015
+ call synerr (33Hmissing parenthesis in condition.)
+23015 continue
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/beginc.f b/unix/boot/spp/rpp/rppfor/beginc.f
new file mode 100644
index 00000000..bf6dd872
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/beginc.f
@@ -0,0 +1,72 @@
+ subroutine beginc
+ integer labgen
+ 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
+ body = 1
+ ername = 0
+ esp = 0
+ label = 100
+ retlab = labgen (1)
+ logic0 = 6 + 3
+ col = logic0
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/brknxt.f b/unix/boot/spp/rpp/rppfor/brknxt.f
new file mode 100644
index 00000000..7bc70a77
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/brknxt.f
@@ -0,0 +1,108 @@
+ subroutine brknxt (sp, lextyp, labval, token)
+ integer labval (100), lextyp (100), sp, token
+ integer i, n
+ integer alldig, ctoi
+ integer t, ptoken (100)
+ integer gnbtok
+ 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
+ n = 0
+ t = gnbtok (ptoken, 100)
+ if (.not.(alldig (ptoken) .eq. 1))goto 23000
+ i = 1
+ n = ctoi (ptoken, i) - 1
+ goto 23001
+23000 continue
+ if (.not.(t .ne. 59))goto 23002
+ call pbstr (ptoken)
+23002 continue
+23001 continue
+ i = sp
+23004 if (.not.(i .gt. 0))goto 23006
+ if (.not.(lextyp (i) .eq. -95 .or. lextyp (i) .eq. -96 .or. lextyp
+ * (i) .eq. -94 .or. lextyp (i) .eq. -93))goto 23007
+ if (.not.(n .gt. 0))goto 23009
+ n = n - 1
+ goto 23005
+23009 continue
+ if (.not.(token .eq. -79))goto 23011
+ call outgo (labval (i) + 1)
+ goto 23012
+23011 continue
+ call outgo (labval (i))
+23012 continue
+23010 continue
+ xfer = 1
+ return
+23007 continue
+23005 i = i - 1
+ goto 23004
+23006 continue
+ if (.not.(token .eq. -79))goto 23013
+ call synerr (14Hillegal break.)
+ goto 23014
+23013 continue
+ call synerr (13Hillegal next.)
+23014 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/cascod.f b/unix/boot/spp/rpp/rppfor/cascod.f
new file mode 100644
index 00000000..e6b256fe
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/cascod.f
@@ -0,0 +1,146 @@
+ subroutine cascod (lab, token)
+ integer lab, token
+ 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 t, l, lb, ub, i, j, junk
+ integer caslab, labgen, gnbtok
+ integer tok (100)
+ if (.not.(swtop .le. 0))goto 23000
+ call synerr (24Hillegal case or default.)
+ return
+23000 continue
+ call indent (-1)
+ call outgo (lab + 1)
+ xfer = 1
+ l = labgen (1)
+ if (.not.(token .eq. -91))goto 23002
+23004 if (.not.(caslab (lb, t) .ne. -1))goto 23005
+ ub = lb
+ if (.not.(t .eq. 45))goto 23006
+ junk = caslab (ub, t)
+23006 continue
+ if (.not.(lb .gt. ub))goto 23008
+ call synerr (28Hillegal range in case label.)
+ ub = lb
+23008 continue
+ if (.not.(swlast + 3 .gt. 1000))goto 23010
+ call baderr (22Hswitch table overflow.)
+23010 continue
+ i = swtop + 3
+23012 if (.not.(i .lt. swlast))goto 23014
+ if (.not.(lb .le. swstak (i)))goto 23015
+ goto 23014
+23015 continue
+ if (.not.(lb .le. swstak (i+1)))goto 23017
+ call synerr (21Hduplicate case label.)
+23017 continue
+23016 continue
+23013 i = i + 3
+ goto 23012
+23014 continue
+ if (.not.(i .lt. swlast .and. ub .ge. swstak (i)))goto 23019
+ call synerr (21Hduplicate case label.)
+23019 continue
+ j = swlast
+23021 if (.not.(j .gt. i))goto 23023
+ swstak (j+2) = swstak (j-1)
+23022 j = j - 1
+ goto 23021
+23023 continue
+ swstak (i) = lb
+ swstak (i + 1) = ub
+ swstak (i + 2) = l
+ swstak (swtop + 1) = swstak (swtop + 1) + 1
+ swlast = swlast + 3
+ if (.not.(t .eq. 58))goto 23024
+ goto 23005
+23024 continue
+ if (.not.(t .ne. 44))goto 23026
+ call synerr (20Hillegal case syntax.)
+23026 continue
+23025 continue
+ goto 23004
+23005 continue
+ goto 23003
+23002 continue
+ t = gnbtok (tok, 100)
+ if (.not.(swstak (swtop + 2) .ne. 0))goto 23028
+ call error (38Hmultiple defaults in switch statement.)
+ goto 23029
+23028 continue
+ swstak (swtop + 2) = l
+23029 continue
+23003 continue
+ if (.not.(t .eq. -1))goto 23030
+ call synerr (15Hunexpected EOF.)
+ goto 23031
+23030 continue
+ if (.not.(t .ne. 58))goto 23032
+ call error (39Hmissing colon in case or default label.)
+23032 continue
+23031 continue
+ xfer = 0
+ call outcon (l)
+ call indent (1)
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/caslab.f b/unix/boot/spp/rpp/rppfor/caslab.f
new file mode 100644
index 00000000..0262fadc
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/caslab.f
@@ -0,0 +1,54 @@
+ integer function caslab (n, t)
+ integer n, t
+ integer tok(100)
+ integer i, s, lev
+ integer gnbtok, ctoi
+ caslab=0
+ t = gnbtok (tok, 100)
+23000 if (.not.(t .eq. 10))goto 23001
+ t = gnbtok (tok, 100)
+ goto 23000
+23001 continue
+ if (.not.(t .eq. -1))goto 23002
+ caslab=(t)
+ return
+23002 continue
+ lev=0
+23004 if (.not.(t .eq. 40))goto 23006
+ lev = lev + 1
+23005 t = gnbtok (tok, 100)
+ goto 23004
+23006 continue
+ if (.not.(t .eq. 45))goto 23007
+ s = -1
+ goto 23008
+23007 continue
+ s = +1
+23008 continue
+ if (.not.(t .eq. 45 .or. t .eq. 43))goto 23009
+ t = gnbtok (tok, 100)
+23009 continue
+ if (.not.(t .ne. 48))goto 23011
+ goto 99
+c goto 23012
+23011 continue
+ i = 1
+ n = s * ctoi (tok, i)
+23012 continue
+ t=gnbtok(tok,100)
+23013 if (.not.(t .eq. 41))goto 23015
+ lev = lev - 1
+23014 t=gnbtok(tok,100)
+ goto 23013
+23015 continue
+ if (.not.(lev .ne. 0))goto 23016
+ goto 99
+23016 continue
+23018 if (.not.(t .eq. 10))goto 23019
+ t = gnbtok (tok, 100)
+ goto 23018
+23019 continue
+ return
+99 call synerr (19HInvalid case label.)
+ n = 0
+ end
diff --git a/unix/boot/spp/rpp/rppfor/declco.f b/unix/boot/spp/rpp/rppfor/declco.f
new file mode 100644
index 00000000..683bd901
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/declco.f
@@ -0,0 +1,120 @@
+ subroutine declco (id)
+ integer id(100)
+ integer newid(100), tok, tokbl
+ integer junk, ludef, equal, gettok
+ 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 xptyp(9)
+ integer xpntr(7)
+ integer xfunc(7)
+ integer xsubr(7)
+ data xptyp(1)/105/,xptyp(2)/110/,xptyp(3)/116/,xptyp(4)/101/,xptyp
+ *(5)/103/,xptyp(6)/101/,xptyp(7)/114/,xptyp(8)/32/,xptyp(9)/-2/
+ data xpntr(1)/120/,xpntr(2)/36/,xpntr(3)/112/,xpntr(4)/110/,xpntr(
+ *5)/116/,xpntr(6)/114/,xpntr(7)/-2/
+ data xfunc(1)/120/,xfunc(2)/36/,xfunc(3)/102/,xfunc(4)/117/,xfunc(
+ *5)/110/,xfunc(6)/99/,xfunc(7)/-2/
+ data xsubr(1)/120/,xsubr(2)/36/,xsubr(3)/115/,xsubr(4)/117/,xsubr(
+ *5)/98/,xsubr(6)/114/,xsubr(7)/-2/
+ if (.not.(ludef (id, newid, xpptbl) .eq. 1))goto 23000
+ if (.not.(equal (id, xpntr) .eq. 1))goto 23002
+ tokbl = gettok (newid, 100)
+ if (.not.(tokbl .eq. 32))goto 23004
+ tok = gettok (newid, 100)
+ goto 23005
+23004 continue
+ tok = tokbl
+23005 continue
+ if (.not.(tok .eq. -166 .and. equal (newid, xfunc) .eq. 1))goto 2
+ *3006
+ call outtab
+ call outstr (xptyp)
+ junk = ludef (newid, newid, xpptbl)
+ call outstr (newid)
+ call eatup
+ call outdon
+ call poicod (0)
+ goto 23007
+23006 continue
+ call pbstr (newid)
+ call poicod (1)
+23007 continue
+ goto 23003
+23002 continue
+ if (.not.(equal (id, xsubr) .eq. 1))goto 23008
+ call outtab
+ call outstr (newid)
+ call eatup
+ call outdon
+ goto 23009
+23008 continue
+ call outtab
+ call outstr (newid)
+ call outch (32)
+23009 continue
+23003 continue
+ goto 23001
+23000 continue
+ call synerr (32HInvalid x$type type declaration.)
+23001 continue
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/deftok.f b/unix/boot/spp/rpp/rppfor/deftok.f
new file mode 100644
index 00000000..edd7213a
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/deftok.f
@@ -0,0 +1,237 @@
+ integer function deftok (token, toksiz)
+ integer token (100)
+ integer toksiz
+ 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 t, c, defn (2048), mdefn (2048)
+ integer gtok
+ integer equal
+ integer ap, argstk (100), callst (50), nlb, plev (50), ifl
+ integer ludef, push, ifparm
+ integer balp(3)
+ integer pswrg(22)
+ data balp(1)/40/,balp(2)/41/,balp(3)/-2/
+ data pswrg(1)/115/,pswrg(2)/119/,pswrg(3)/105/,pswrg(4)/116/,pswrg
+ *(5)/99/,pswrg(6)/104/,pswrg(7)/95/,pswrg(8)/110/,pswrg(9)/111/,psw
+ *rg(10)/95/,pswrg(11)/114/,pswrg(12)/97/,pswrg(13)/110/,pswrg(14)/1
+ *03/,pswrg(15)/101/,pswrg(16)/95/,pswrg(17)/99/,pswrg(18)/104/,pswr
+ *g(19)/101/,pswrg(20)/99/,pswrg(21)/107/,pswrg(22)/-2/
+ cp = 0
+ ap = 1
+ ep = 1
+ t = gtok (token, toksiz)
+23000 if (.not.(t .ne. -1))goto 23002
+ if (.not.(t .eq. -9))goto 23003
+ if (.not.(ludef (token, defn, deftbl) .eq. 0))goto 23005
+ if (.not.(cp .eq. 0))goto 23007
+ goto 23002
+23007 continue
+ call puttok (token)
+23008 continue
+ goto 23006
+23005 continue
+ if (.not.(defn (1) .eq. -4))goto 23009
+ call getdef (token, toksiz, defn, 2048)
+ call entdef (token, defn, deftbl)
+ goto 23010
+23009 continue
+ if (.not.(defn (1) .eq. -15 .or. defn (1) .eq. -16))goto 23011
+ c = defn (1)
+ call getdef (token, toksiz, defn, 2048)
+ ifl = ludef (token, mdefn, deftbl)
+ if (.not.((ifl .eq. 1 .and. c .eq. -15) .or. (ifl .eq. 0 .and. c .
+ *eq. -16)))goto 23013
+ call pbstr (defn)
+23013 continue
+ goto 23012
+23011 continue
+ if (.not.(defn(1) .eq. -17 .and. cp .eq. 0))goto 23015
+ if (.not.(gtok (defn, 2048) .eq. 32))goto 23017
+ if (.not.(gtok (defn, 2048) .eq. -9))goto 23019
+ if (.not.(equal (defn, pswrg) .eq. 1))goto 23021
+ swinrg = 1
+ goto 23022
+23021 continue
+ goto 10
+23022 continue
+ goto 23020
+23019 continue
+10 call pbstr (defn)
+ call putbak (32)
+ goto 23002
+23020 continue
+ goto 23018
+23017 continue
+ call pbstr (defn)
+ goto 23002
+23018 continue
+ goto 23016
+23015 continue
+ cp = cp + 1
+ if (.not.(cp .gt. 50))goto 23023
+ call baderr (20Hcall stack overflow.)
+23023 continue
+ callst (cp) = ap
+ ap = push (ep, argstk, ap)
+ call puttok (defn)
+ call putchr (-2)
+ ap = push (ep, argstk, ap)
+ call puttok (token)
+ call putchr (-2)
+ ap = push (ep, argstk, ap)
+ t = gtok (token, toksiz)
+ if (.not.(t .eq. 32))goto 23025
+ t = gtok (token, toksiz)
+ call pbstr (token)
+ if (.not.(t .ne. 40))goto 23027
+ call putbak (32)
+23027 continue
+ goto 23026
+23025 continue
+ call pbstr (token)
+23026 continue
+ if (.not.(t .ne. 40))goto 23029
+ call pbstr (balp)
+ goto 23030
+23029 continue
+ if (.not.(ifparm (defn) .eq. 0))goto 23031
+ call pbstr (balp)
+23031 continue
+23030 continue
+ plev (cp) = 0
+23016 continue
+23012 continue
+23010 continue
+23006 continue
+ goto 23004
+23003 continue
+ if (.not.(t .eq. -69))goto 23033
+ nlb = 1
+23035 continue
+ t = gtok (token, toksiz)
+ if (.not.(t .eq. -69))goto 23038
+ nlb = nlb + 1
+ goto 23039
+23038 continue
+ if (.not.(t .eq. -68))goto 23040
+ nlb = nlb - 1
+ if (.not.(nlb .eq. 0))goto 23042
+ goto 23037
+23042 continue
+ goto 23041
+23040 continue
+ if (.not.(t .eq. -1))goto 23044
+ call baderr (14HEOF in string.)
+23044 continue
+23041 continue
+23039 continue
+ call puttok (token)
+23036 goto 23035
+23037 continue
+ goto 23034
+23033 continue
+ if (.not.(cp .eq. 0))goto 23046
+ goto 23002
+23046 continue
+ if (.not.(t .eq. 40))goto 23048
+ if (.not.(plev (cp) .gt. 0))goto 23050
+ call puttok (token)
+23050 continue
+ plev (cp) = plev (cp) + 1
+ goto 23049
+23048 continue
+ if (.not.(t .eq. 41))goto 23052
+ plev (cp) = plev (cp) - 1
+ if (.not.(plev (cp) .gt. 0))goto 23054
+ call puttok (token)
+ goto 23055
+23054 continue
+ call putchr (-2)
+ call evalr (argstk, callst (cp), ap - 1)
+ ap = callst (cp)
+ ep = argstk (ap)
+ cp = cp - 1
+23055 continue
+ goto 23053
+23052 continue
+ if (.not.(t .eq. 44 .and. plev (cp) .eq. 1))goto 23056
+ call putchr (-2)
+ ap = push (ep, argstk, ap)
+ goto 23057
+23056 continue
+ call puttok (token)
+23057 continue
+23053 continue
+23049 continue
+23047 continue
+23034 continue
+23004 continue
+23001 t = gtok (token, toksiz)
+ goto 23000
+23002 continue
+ deftok = t
+ if (.not.(t .eq. -9))goto 23058
+ call fold (token)
+23058 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/doarth.f b/unix/boot/spp/rpp/rppfor/doarth.f
new file mode 100644
index 00000000..6d45409d
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/doarth.f
@@ -0,0 +1,93 @@
+ subroutine doarth (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 k, l
+ integer ctoi
+ integer op
+ k = argstk (i + 2)
+ l = argstk (i + 4)
+ op = evalst (argstk (i + 3))
+ if (.not.(op .eq. 43))goto 23000
+ call pbnum (ctoi (evalst, k) + ctoi (evalst, l))
+ goto 23001
+23000 continue
+ if (.not.(op .eq. 45))goto 23002
+ call pbnum (ctoi (evalst, k) - ctoi (evalst, l))
+ goto 23003
+23002 continue
+ if (.not.(op .eq. 42 ))goto 23004
+ call pbnum (ctoi (evalst, k) * ctoi (evalst, l))
+ goto 23005
+23004 continue
+ if (.not.(op .eq. 47 ))goto 23006
+ call pbnum (ctoi (evalst, k) / ctoi (evalst, l))
+ goto 23007
+23006 continue
+ call remark (11Harith error)
+23007 continue
+23005 continue
+23003 continue
+23001 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/docode.f b/unix/boot/spp/rpp/rppfor/docode.f
new file mode 100644
index 00000000..0d5dbdb9
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/docode.f
@@ -0,0 +1,87 @@
+ subroutine docode (lab)
+ integer lab
+ integer labgen
+ 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 gnbtok
+ integer lexstr (100)
+ integer sdo(3)
+ data sdo(1)/100/,sdo(2)/111/,sdo(3)/-2/
+ xfer = 0
+ call outtab
+ call outstr (sdo)
+ call outch (32)
+ lab = labgen (2)
+ if (.not.(gnbtok (lexstr, 100) .eq. 48))goto 23000
+ call outstr (lexstr)
+ goto 23001
+23000 continue
+ call pbstr (lexstr)
+ call outnum (lab)
+23001 continue
+ call outch (32)
+ call eatup
+ call outdwe
+ call indent (1)
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/doif.f b/unix/boot/spp/rpp/rppfor/doif.f
new file mode 100644
index 00000000..3eabc389
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/doif.f
@@ -0,0 +1,81 @@
+ subroutine doif (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 a2, a3, a4, a5
+ integer equal
+ if (.not.(j - i .lt. 5))goto 23000
+ return
+23000 continue
+ a2 = argstk (i + 2)
+ a3 = argstk (i + 3)
+ a4 = argstk (i + 4)
+ a5 = argstk (i + 5)
+ if (.not.(equal (evalst (a2), evalst (a3)) .eq. 1))goto 23002
+ call pbstr (evalst (a4))
+ goto 23003
+23002 continue
+ call pbstr (evalst (a5))
+23003 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/doincr.f b/unix/boot/spp/rpp/rppfor/doincr.f
new file mode 100644
index 00000000..8bcc3e14
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/doincr.f
@@ -0,0 +1,70 @@
+ subroutine doincr (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 k
+ integer ctoi
+ k = argstk (i + 2)
+ call pbnum (ctoi (evalst, k) + 1)
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/domac.f b/unix/boot/spp/rpp/rppfor/domac.f
new file mode 100644
index 00000000..b954ee64
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/domac.f
@@ -0,0 +1,72 @@
+ subroutine domac (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 a2, a3
+ if (.not.(j - i .gt. 2))goto 23000
+ a2 = argstk (i + 2)
+ a3 = argstk (i + 3)
+ call entdef (evalst (a2), evalst (a3), deftbl)
+23000 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/dostat.f b/unix/boot/spp/rpp/rppfor/dostat.f
new file mode 100644
index 00000000..038f5b72
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/dostat.f
@@ -0,0 +1,7 @@
+ subroutine dostat (lab)
+ integer lab
+ call indent (-1)
+ call outcon (lab)
+ call outcon (lab + 1)
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/dosub.f b/unix/boot/spp/rpp/rppfor/dosub.f
new file mode 100644
index 00000000..c0efa5cb
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/dosub.f
@@ -0,0 +1,90 @@
+ subroutine dosub (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 ap, fc, k, nc
+ integer ctoi, length
+ if (.not.(j - i .lt. 3))goto 23000
+ return
+23000 continue
+ if (.not.(j - i .lt. 4))goto 23002
+ nc = 100
+ goto 23003
+23002 continue
+ k = argstk (i + 4)
+ nc = ctoi (evalst, k)
+23003 continue
+ k = argstk (i + 3)
+ ap = argstk (i + 2)
+ fc = ap + ctoi (evalst, k) - 1
+ if (.not.(fc .ge. ap .and. fc .lt. ap + length (evalst (ap))))goto
+ * 23004
+ k = fc + min0(nc, length (evalst (fc))) - 1
+23006 if (.not.(k .ge. fc))goto 23008
+ call putbak (evalst (k))
+23007 k = k - 1
+ goto 23006
+23008 continue
+23004 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/eatup.f b/unix/boot/spp/rpp/rppfor/eatup.f
new file mode 100644
index 00000000..65ba16b3
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/eatup.f
@@ -0,0 +1,127 @@
+ subroutine eatup
+ integer ptoken (100), t, token (100)
+ integer gettok
+ integer nlpar, equal
+ 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 serror(6)
+ data serror(1)/101/,serror(2)/114/,serror(3)/114/,serror(4)/111/,s
+ *error(5)/114/,serror(6)/-2/
+ nlpar = 0
+ token(1) = -2
+23000 continue
+ call outstr (token)
+ t = gettok (token, 100)
+23001 if (.not.(t .ne. 32 .and. t .ne. 9))goto 23000
+23002 continue
+ if (.not.(t .eq. -9))goto 23003
+ if (.not.(equal (token, serror) .eq. 1))goto 23005
+ ername = 1
+23005 continue
+23003 continue
+ goto 10
+23007 continue
+ t = gettok (token, 100)
+10 if (.not.(t .eq. 59 .or. t .eq. 10))goto 23010
+ goto 23009
+23010 continue
+ if (.not.(t .eq. 125 .or. t .eq. 123))goto 23012
+ call pbstr (token)
+ goto 23009
+23012 continue
+ if (.not.(t .eq. -1))goto 23014
+ call synerr (15Hunexpected EOF.)
+ call pbstr (token)
+ goto 23009
+23014 continue
+ if (.not.(t .eq. 44 .or. t .eq. 43 .or. t .eq. 45 .or. t .eq. 42 .
+ *or. (t .eq. 47 .and. body .eq. 1) .or. t .eq. 40 .or. t .eq. 38 .o
+ *r. t .eq. 124 .or. t .eq. 33 .or. t .eq. 126 .or. t .eq. 126 .or.
+ *t .eq. 94 .or. t .eq. 61 .or. t .eq. 95))goto 23016
+23018 if (.not.(gettok (ptoken, 100) .eq. 10))goto 23019
+ goto 23018
+23019 continue
+ call pbstr (ptoken)
+ if (.not.(t .eq. 95))goto 23020
+ token (1) = -2
+23020 continue
+23016 continue
+ if (.not.(t .eq. 40))goto 23022
+ nlpar = nlpar + 1
+ goto 23023
+23022 continue
+ if (.not.(t .eq. 41))goto 23024
+ nlpar = nlpar - 1
+23024 continue
+23023 continue
+ if (.not.(t .eq. -9))goto 23026
+ call squash (token)
+23026 continue
+ call outstr (token)
+23008 if (.not.(nlpar .lt. 0))goto 23007
+23009 continue
+ if (.not.(nlpar .ne. 0))goto 23028
+ call synerr (23Hunbalanced parentheses.)
+23028 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/elseif.f b/unix/boot/spp/rpp/rppfor/elseif.f
new file mode 100644
index 00000000..d0ecab46
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/elseif.f
@@ -0,0 +1,8 @@
+ subroutine elseif (lab)
+ integer lab
+ call outgo (lab+1)
+ call indent (-1)
+ call outcon (lab)
+ call indent (1)
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/endcod.f b/unix/boot/spp/rpp/rppfor/endcod.f
new file mode 100644
index 00000000..da8bfffc
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/endcod.f
@@ -0,0 +1,96 @@
+ subroutine endcod (endstr)
+ integer endstr(1)
+ 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 sret(7)
+ integer sepro(12)
+ data sret(1)/114/,sret(2)/101/,sret(3)/116/,sret(4)/117/,sret(5)/1
+ *14/,sret(6)/110/,sret(7)/-2/
+ data sepro(1)/99/,sepro(2)/97/,sepro(3)/108/,sepro(4)/108/,sepro(5
+ *)/32/,sepro(6)/122/,sepro(7)/122/,sepro(8)/101/,sepro(9)/112/,sepr
+ *o(10)/114/,sepro(11)/111/,sepro(12)/-2/
+ if (.not.(esp .ne. 0))goto 23000
+ call synerr (36HUnmatched 'iferr' or 'then' keyword.)
+23000 continue
+ esp = 0
+ body = 0
+ ername = 0
+ if (.not.(errtbl .ne. 0))goto 23002
+ call rmtabl (errtbl)
+23002 continue
+ errtbl = 0
+ memflg = 0
+ if (.not.(retlab .ne. 0))goto 23004
+ call outnum (retlab)
+23004 continue
+ call outtab
+ call outstr (sepro)
+ call outdon
+ call outtab
+ call outstr (sret)
+ call outdon
+ col = 6
+ call outtab
+ call outstr (endstr)
+ call outdon
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/entdef.f b/unix/boot/spp/rpp/rppfor/entdef.f
new file mode 100644
index 00000000..ccbb82a3
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/entdef.f
@@ -0,0 +1,12 @@
+ subroutine entdef (name, defn, table)
+ integer name (100), defn (100)
+ integer table
+ integer lookup
+ integer text
+ integer sdupl
+ if (.not.(lookup (name, text, table) .eq. 1))goto 23000
+ call dsfree (text)
+23000 continue
+ call enter (name, sdupl (defn), table)
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/entdkw.f b/unix/boot/spp/rpp/rppfor/entdkw.f
new file mode 100644
index 00000000..d8ac6ea9
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/entdkw.f
@@ -0,0 +1,14 @@
+ subroutine entdkw
+ integer deft(2), prag(2)
+ integer defnam(7)
+ integer prgnam(7)
+ data defnam(1)/100/,defnam(2)/101/,defnam(3)/102/,defnam(4)/105/,d
+ *efnam(5)/110/,defnam(6)/101/,defnam(7)/-2/
+ data prgnam(1)/112/,prgnam(2)/114/,prgnam(3)/97/,prgnam(4)/103/,pr
+ *gnam(5)/109/,prgnam(6)/97/,prgnam(7)/-2/
+ data deft (1), deft (2) /-4, -2/
+ data prag (1), prag (2) /-17, -2/
+ call ulstal (defnam, deft)
+ call ulstal (prgnam, prag)
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/entfkw.f b/unix/boot/spp/rpp/rppfor/entfkw.f
new file mode 100644
index 00000000..ba484c96
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/entfkw.f
@@ -0,0 +1,69 @@
+ subroutine entfkw
+ 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 sequiv(12)
+ data sequiv(1)/101/,sequiv(2)/113/,sequiv(3)/117/,sequiv(4)/105/,s
+ *equiv(5)/118/,sequiv(6)/97/,sequiv(7)/108/,sequiv(8)/101/,sequiv(9
+ *)/110/,sequiv(10)/99/,sequiv(11)/101/,sequiv(12)/-2/
+ call enter (sequiv, 0, fkwtbl)
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/entrkw.f b/unix/boot/spp/rpp/rppfor/entrkw.f
new file mode 100644
index 00000000..5deaa3de
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/entrkw.f
@@ -0,0 +1,151 @@
+ subroutine entrkw
+ 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 sif(3)
+ integer selse(5)
+ integer swhile(6)
+ integer sdo(3)
+ integer sbreak(6)
+ integer snext(5)
+ integer sfor(4)
+ integer srept(7)
+ integer suntil(6)
+ integer sret(7)
+ integer sstr(7)
+ integer sswtch(7)
+ integer scase(5)
+ integer sdeflt(8)
+ integer send(4)
+ integer serrc0(7)
+ integer siferr(6)
+ integer sifno0(8)
+ integer sthen(5)
+ integer sbegin(6)
+ integer spoint(8)
+ integer sgoto(5)
+ data sif(1)/105/,sif(2)/102/,sif(3)/-2/
+ data selse(1)/101/,selse(2)/108/,selse(3)/115/,selse(4)/101/,selse
+ *(5)/-2/
+ data swhile(1)/119/,swhile(2)/104/,swhile(3)/105/,swhile(4)/108/,s
+ *while(5)/101/,swhile(6)/-2/
+ data sdo(1)/100/,sdo(2)/111/,sdo(3)/-2/
+ data sbreak(1)/98/,sbreak(2)/114/,sbreak(3)/101/,sbreak(4)/97/,sbr
+ *eak(5)/107/,sbreak(6)/-2/
+ data snext(1)/110/,snext(2)/101/,snext(3)/120/,snext(4)/116/,snext
+ *(5)/-2/
+ data sfor(1)/102/,sfor(2)/111/,sfor(3)/114/,sfor(4)/-2/
+ data srept(1)/114/,srept(2)/101/,srept(3)/112/,srept(4)/101/,srept
+ *(5)/97/,srept(6)/116/,srept(7)/-2/
+ data suntil(1)/117/,suntil(2)/110/,suntil(3)/116/,suntil(4)/105/,s
+ *until(5)/108/,suntil(6)/-2/
+ data sret(1)/114/,sret(2)/101/,sret(3)/116/,sret(4)/117/,sret(5)/1
+ *14/,sret(6)/110/,sret(7)/-2/
+ data sstr(1)/115/,sstr(2)/116/,sstr(3)/114/,sstr(4)/105/,sstr(5)/1
+ *10/,sstr(6)/103/,sstr(7)/-2/
+ data sswtch(1)/115/,sswtch(2)/119/,sswtch(3)/105/,sswtch(4)/116/,s
+ *swtch(5)/99/,sswtch(6)/104/,sswtch(7)/-2/
+ data scase(1)/99/,scase(2)/97/,scase(3)/115/,scase(4)/101/,scase(5
+ *)/-2/
+ data sdeflt(1)/100/,sdeflt(2)/101/,sdeflt(3)/102/,sdeflt(4)/97/,sd
+ *eflt(5)/117/,sdeflt(6)/108/,sdeflt(7)/116/,sdeflt(8)/-2/
+ data send(1)/101/,send(2)/110/,send(3)/100/,send(4)/-2/
+ data serrc0(1)/101/,serrc0(2)/114/,serrc0(3)/114/,serrc0(4)/99/,se
+ *rrc0(5)/104/,serrc0(6)/107/,serrc0(7)/-2/
+ data siferr(1)/105/,siferr(2)/102/,siferr(3)/101/,siferr(4)/114/,s
+ *iferr(5)/114/,siferr(6)/-2/
+ data sifno0(1)/105/,sifno0(2)/102/,sifno0(3)/110/,sifno0(4)/111/,s
+ *ifno0(5)/101/,sifno0(6)/114/,sifno0(7)/114/,sifno0(8)/-2/
+ data sthen(1)/116/,sthen(2)/104/,sthen(3)/101/,sthen(4)/110/,sthen
+ *(5)/-2/
+ data sbegin(1)/98/,sbegin(2)/101/,sbegin(3)/103/,sbegin(4)/105/,sb
+ *egin(5)/110/,sbegin(6)/-2/
+ data spoint(1)/112/,spoint(2)/111/,spoint(3)/105/,spoint(4)/110/,s
+ *point(5)/116/,spoint(6)/101/,spoint(7)/114/,spoint(8)/-2/
+ data sgoto(1)/103/,sgoto(2)/111/,sgoto(3)/116/,sgoto(4)/111/,sgoto
+ *(5)/-2/
+ call enter (sif, -99, rkwtbl)
+ call enter (selse, -87, rkwtbl)
+ call enter (swhile, -95, rkwtbl)
+ call enter (sdo, -96, rkwtbl)
+ call enter (sbreak, -79, rkwtbl)
+ call enter (snext, -78, rkwtbl)
+ call enter (sfor, -94, rkwtbl)
+ call enter (srept, -93, rkwtbl)
+ call enter (suntil, -70, rkwtbl)
+ call enter (sret, -77, rkwtbl)
+ call enter (sstr, -75, rkwtbl)
+ call enter (sswtch, -92, rkwtbl)
+ call enter (scase, -91, rkwtbl)
+ call enter (sdeflt, -90, rkwtbl)
+ call enter (send, -82, rkwtbl)
+ call enter (serrc0, -84, rkwtbl)
+ call enter (siferr, -98, rkwtbl)
+ call enter (sifno0, -97, rkwtbl)
+ call enter (sthen, -86, rkwtbl)
+ call enter (sbegin, -83, rkwtbl)
+ call enter (spoint, -88, rkwtbl)
+ call enter (sgoto, -76, rkwtbl)
+ return
+ end
+c sifno0 sifnoerr
+c logic0 logical_column
+c serrc0 serrchk
diff --git a/unix/boot/spp/rpp/rppfor/entxkw.f b/unix/boot/spp/rpp/rppfor/entxkw.f
new file mode 100644
index 00000000..e8b97b69
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/entxkw.f
@@ -0,0 +1,172 @@
+ subroutine entxkw
+ 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 sbool(7)
+ integer schar(7)
+ integer sshort(8)
+ integer sint(6)
+ integer slong(7)
+ integer sreal(7)
+ integer sdble(7)
+ integer scplx(7)
+ integer spntr(7)
+ integer sfchr(7)
+ integer sfunc(7)
+ integer ssubr(7)
+ integer sextn(7)
+ integer dbool(8)
+ integer dchar(10)
+ integer dshort(10)
+C integer dint(10)
+C integer dlong(10)
+C integer dpntr(10)
+ integer dint(8)
+ integer dlong(8)
+ integer dpntr(8)
+ integer dreal(5)
+ integer ddble(17)
+ integer dcplx(8)
+ integer dfchr(10)
+ integer dfunc(9)
+ integer dsubr(11)
+ integer dextn(9)
+ data sbool(1)/120/,sbool(2)/36/,sbool(3)/98/,sbool(4)/111/,sbool(5
+ *)/111/,sbool(6)/108/,sbool(7)/-2/
+ data schar(1)/120/,schar(2)/36/,schar(3)/99/,schar(4)/104/,schar(5
+ *)/97/,schar(6)/114/,schar(7)/-2/
+ data sshort(1)/120/,sshort(2)/36/,sshort(3)/115/,sshort(4)/104/,ss
+ *hort(5)/111/,sshort(6)/114/,sshort(7)/116/,sshort(8)/-2/
+ data sint(1)/120/,sint(2)/36/,sint(3)/105/,sint(4)/110/,sint(5)/11
+ *6/,sint(6)/-2/
+ data slong(1)/120/,slong(2)/36/,slong(3)/108/,slong(4)/111/,slong(
+ *5)/110/,slong(6)/103/,slong(7)/-2/
+ data sreal(1)/120/,sreal(2)/36/,sreal(3)/114/,sreal(4)/101/,sreal(
+ *5)/97/,sreal(6)/108/,sreal(7)/-2/
+ data sdble(1)/120/,sdble(2)/36/,sdble(3)/100/,sdble(4)/98/,sdble(5
+ *)/108/,sdble(6)/101/,sdble(7)/-2/
+ data scplx(1)/120/,scplx(2)/36/,scplx(3)/99/,scplx(4)/112/,scplx(5
+ *)/108/,scplx(6)/120/,scplx(7)/-2/
+ data spntr(1)/120/,spntr(2)/36/,spntr(3)/112/,spntr(4)/110/,spntr(
+ *5)/116/,spntr(6)/114/,spntr(7)/-2/
+ data sfchr(1)/120/,sfchr(2)/36/,sfchr(3)/102/,sfchr(4)/99/,sfchr(5
+ *)/104/,sfchr(6)/114/,sfchr(7)/-2/
+ data sfunc(1)/120/,sfunc(2)/36/,sfunc(3)/102/,sfunc(4)/117/,sfunc(
+ *5)/110/,sfunc(6)/99/,sfunc(7)/-2/
+ data ssubr(1)/120/,ssubr(2)/36/,ssubr(3)/115/,ssubr(4)/117/,ssubr(
+ *5)/98/,ssubr(6)/114/,ssubr(7)/-2/
+ data sextn(1)/120/,sextn(2)/36/,sextn(3)/101/,sextn(4)/120/,sextn(
+ *5)/116/,sextn(6)/110/,sextn(7)/-2/
+ data dbool(1)/108/,dbool(2)/111/,dbool(3)/103/,dbool(4)/105/,dbool
+ *(5)/99/,dbool(6)/97/,dbool(7)/108/,dbool(8)/-2/
+ data dchar(1)/105/,dchar(2)/110/,dchar(3)/116/,dchar(4)/101/,dchar
+ *(5)/103/,dchar(6)/101/,dchar(7)/114/,dchar(8)/42/,dchar(9)/50/,dch
+ *ar(10)/-2/
+ data dshort(1)/105/,dshort(2)/110/,dshort(3)/116/,dshort(4)/101/,d
+ *short(5)/103/,dshort(6)/101/,dshort(7)/114/,dshort(8)/42/,dshort(9
+ *)/50/,dshort(10)/-2/
+C data dint(1)/105/,dint(2)/110/,dint(3)/116/,dint(4)/101/,dint(5)/1
+C *03/,dint(6)/101/,dint(7)/114/,dint(8)/42/,dint(9)/56/,dint(10)/-2/
+ data dint(1)/105/,dint(2)/110/,dint(3)/116/,dint(4)/101/,dint(5)/1
+ *03/,dint(6)/101/,dint(7)/114/,dint(8)/-2/
+C data dlong(1)/105/,dlong(2)/110/,dlong(3)/116/,dlong(4)/101/,dlong
+C *(5)/103/,dlong(6)/101/,dlong(7)/114/,dlong(8)/42/,dlong(9)/52/,dlo
+C *ng(10)/-2/
+ data dlong(1)/105/,dlong(2)/110/,dlong(3)/116/,dlong(4)/101/,dlong
+ *(5)/103/,dlong(6)/101/,dlong(7)/114/,dlong(8)/-2/
+C data dpntr(1)/105/,dpntr(2)/110/,dpntr(3)/116/,dpntr(4)/101/,dpntr
+C *(5)/103/,dpntr(6)/101/,dpntr(7)/114/,dpntr(8)/42/,dpntr(9)/56/,dpn
+C *tr(10)/-2/
+ data dpntr(1)/105/,dpntr(2)/110/,dpntr(3)/116/,dpntr(4)/101/,dpntr
+ *(5)/103/,dpntr(6)/101/,dpntr(7)/114/,dpntr(8)/-2/
+ data dreal(1)/114/,dreal(2)/101/,dreal(3)/97/,dreal(4)/108/,dreal(
+ *5)/-2/
+ data ddble(1)/100/,ddble(2)/111/,ddble(3)/117/,ddble(4)/98/,ddble(
+ *5)/108/,ddble(6)/101/,ddble(7)/32/,ddble(8)/112/,ddble(9)/114/,ddb
+ *le(10)/101/,ddble(11)/99/,ddble(12)/105/,ddble(13)/115/,ddble(14)/
+ *105/,ddble(15)/111/,ddble(16)/110/,ddble(17)/-2/
+ data dcplx(1)/99/,dcplx(2)/111/,dcplx(3)/109/,dcplx(4)/112/,dcplx(
+ *5)/108/,dcplx(6)/101/,dcplx(7)/120/,dcplx(8)/-2/
+ data dfchr(1)/99/,dfchr(2)/104/,dfchr(3)/97/,dfchr(4)/114/,dfchr(5
+ *)/97/,dfchr(6)/99/,dfchr(7)/116/,dfchr(8)/101/,dfchr(9)/114/,dfchr
+ *(10)/-2/
+ data dfunc(1)/102/,dfunc(2)/117/,dfunc(3)/110/,dfunc(4)/99/,dfunc(
+ *5)/116/,dfunc(6)/105/,dfunc(7)/111/,dfunc(8)/110/,dfunc(9)/-2/
+ data dsubr(1)/115/,dsubr(2)/117/,dsubr(3)/98/,dsubr(4)/114/,dsubr(
+ *5)/111/,dsubr(6)/117/,dsubr(7)/116/,dsubr(8)/105/,dsubr(9)/110/,ds
+ *ubr(10)/101/,dsubr(11)/-2/
+ data dextn(1)/101/,dextn(2)/120/,dextn(3)/116/,dextn(4)/101/,dextn
+ *(5)/114/,dextn(6)/110/,dextn(7)/97/,dextn(8)/108/,dextn(9)/-2/
+ call entdef (sbool, dbool, xpptbl)
+ call entdef (schar, dchar, xpptbl)
+ call entdef (sshort, dshort, xpptbl)
+ call entdef (sint, dint, xpptbl)
+ call entdef (slong, dlong, xpptbl)
+ call entdef (spntr, dpntr, xpptbl)
+ call entdef (sreal, dreal, xpptbl)
+ call entdef (sdble, ddble, xpptbl)
+ call entdef (scplx, dcplx, xpptbl)
+ call entdef (sfchr, dfchr, xpptbl)
+ call entdef (sfunc, dfunc, xpptbl)
+ call entdef (ssubr, dsubr, xpptbl)
+ call entdef (sextn, dextn, xpptbl)
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/errchk.f b/unix/boot/spp/rpp/rppfor/errchk.f
new file mode 100644
index 00000000..140ae204
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/errchk.f
@@ -0,0 +1,124 @@
+ subroutine errchk
+ integer tok, lastt0, gnbtok, token(100)
+ integer ntok
+ integer mktabl
+ 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 serrc0(27)
+ integer serrd0(31)
+ data serrc0(1)/108/,serrc0(2)/111/,serrc0(3)/103/,serrc0(4)/105/,s
+ *errc0(5)/99/,serrc0(6)/97/,serrc0(7)/108/,serrc0(8)/32/,serrc0(9)/
+ *120/,serrc0(10)/101/,serrc0(11)/114/,serrc0(12)/102/,serrc0(13)/10
+ *8/,serrc0(14)/103/,serrc0(15)/44/,serrc0(16)/32/,serrc0(17)/120/,s
+ *errc0(18)/101/,serrc0(19)/114/,serrc0(20)/112/,serrc0(21)/97/,serr
+ *c0(22)/100/,serrc0(23)/40/,serrc0(24)/56/,serrc0(25)/52/,serrc0(26
+ *)/41/,serrc0(27)/-2/
+ data serrd0(1)/99/,serrd0(2)/111/,serrd0(3)/109/,serrd0(4)/109/,se
+ *rrd0(5)/111/,serrd0(6)/110/,serrd0(7)/32/,serrd0(8)/47/,serrd0(9)/
+ *120/,serrd0(10)/101/,serrd0(11)/114/,serrd0(12)/99/,serrd0(13)/111
+ */,serrd0(14)/109/,serrd0(15)/47/,serrd0(16)/32/,serrd0(17)/120/,se
+ *rrd0(18)/101/,serrd0(19)/114/,serrd0(20)/102/,serrd0(21)/108/,serr
+ *d0(22)/103/,serrd0(23)/44/,serrd0(24)/32/,serrd0(25)/120/,serrd0(2
+ *6)/101/,serrd0(27)/114/,serrd0(28)/112/,serrd0(29)/97/,serrd0(30)/
+ *100/,serrd0(31)/-2/
+ ntok = 0
+ tok = 0
+23000 continue
+ lastt0 = tok
+ tok = gnbtok (token, 100)
+ I23003=(tok)
+ goto 23003
+23005 continue
+ if (.not.(errtbl .eq. 0))goto 23006
+ errtbl = mktabl(0)
+ call outtab
+ call outstr (serrc0)
+ call outdon
+ call outtab
+ call outstr (serrd0)
+ call outdon
+23006 continue
+ call enter (token, 0, errtbl)
+ goto 23004
+23008 continue
+ goto 23004
+23009 continue
+ if (.not.(lastt0 .ne. 44))goto 23010
+ goto 23002
+23010 continue
+ goto 23004
+23012 continue
+ call synerr (35HSyntax error in ERRCHK declaration.)
+ goto 23004
+23003 continue
+ if (I23003.eq.-9)goto 23005
+ if (I23003.eq.10)goto 23009
+ if (I23003.eq.44)goto 23008
+ goto 23012
+23004 continue
+23001 goto 23000
+23002 continue
+ end
+c lastt0 last_tok
+c logic0 logical_column
+c serrc0 serrcom1
+c serrd0 serrcom2
diff --git a/unix/boot/spp/rpp/rppfor/errgo.f b/unix/boot/spp/rpp/rppfor/errgo.f
new file mode 100644
index 00000000..040a5ce7
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/errgo.f
@@ -0,0 +1,84 @@
+ subroutine errgo
+ 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 serrc0(13)
+ data serrc0(1)/105/,serrc0(2)/102/,serrc0(3)/32/,serrc0(4)/40/,ser
+ *rc0(5)/120/,serrc0(6)/101/,serrc0(7)/114/,serrc0(8)/102/,serrc0(9)
+ */108/,serrc0(10)/103/,serrc0(11)/41/,serrc0(12)/32/,serrc0(13)/-2/
+ if (.not.(ername .eq. 1))goto 23000
+ call outtab
+ if (.not.(esp .gt. 0))goto 23002
+ if (.not.(errstk(esp) .gt. 0))goto 23004
+ call outstr (serrc0)
+ call ogotos (errstk(esp)+2, 0)
+23004 continue
+ goto 23003
+23002 continue
+ call outstr (serrc0)
+ call ogotos (retlab, 0)
+ call outdon
+23003 continue
+ ername = 0
+23000 continue
+ end
+c logic0 logical_column
+c serrc0 serrchk
diff --git a/unix/boot/spp/rpp/rppfor/errorc.f b/unix/boot/spp/rpp/rppfor/errorc.f
new file mode 100644
index 00000000..d587a001
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/errorc.f
@@ -0,0 +1,73 @@
+ subroutine errorc (str)
+ integer str(1)
+ 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
+ xfer = 1
+ call outstr (str)
+ call balpar
+ ername = 0
+ call outdon
+ call outtab
+ call ogotos (retlab, 0)
+ call outdon
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/evalr.f b/unix/boot/spp/rpp/rppfor/evalr.f
new file mode 100644
index 00000000..f471c0b0
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/evalr.f
@@ -0,0 +1,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
diff --git a/unix/boot/spp/rpp/rppfor/finit.f b/unix/boot/spp/rpp/rppfor/finit.f
new file mode 100644
index 00000000..eef0ee6e
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/finit.f
@@ -0,0 +1,79 @@
+ subroutine finit
+ 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
+ outp = 0
+ level = 1
+ linect (1) = 0
+ sbp = 1
+ fnamp = 2
+ fnames (1) = -2
+ bp = 3192
+ buf (bp) = -2
+ fordep = 0
+ fcname (1) = -2
+ swtop = 0
+ swlast = 1
+ swvnum = 0
+ swvlev = 0
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/forcod.f b/unix/boot/spp/rpp/rppfor/forcod.f
new file mode 100644
index 00000000..3d855456
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/forcod.f
@@ -0,0 +1,183 @@
+ subroutine forcod (lab)
+ integer lab
+ 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 t, token (100)
+ integer gettok, gnbtok
+ integer i, j, nlpar
+ integer length, labgen
+ integer ifnot(10)
+ integer serrc0(22)
+ data ifnot(1)/105/,ifnot(2)/102/,ifnot(3)/32/,ifnot(4)/40/,ifnot(5
+ *)/46/,ifnot(6)/110/,ifnot(7)/111/,ifnot(8)/116/,ifnot(9)/46/,ifnot
+ *(10)/-2/
+ data serrc0(1)/46/,serrc0(2)/97/,serrc0(3)/110/,serrc0(4)/100/,ser
+ *rc0(5)/46/,serrc0(6)/40/,serrc0(7)/46/,serrc0(8)/110/,serrc0(9)/11
+ *1/,serrc0(10)/116/,serrc0(11)/46/,serrc0(12)/120/,serrc0(13)/101/,
+ *serrc0(14)/114/,serrc0(15)/102/,serrc0(16)/108/,serrc0(17)/103/,se
+ *rrc0(18)/41/,serrc0(19)/41/,serrc0(20)/41/,serrc0(21)/32/,serrc0(2
+ *2)/-2/
+ lab = labgen (3)
+ call outcon (0)
+ if (.not.(gnbtok (token, 100) .ne. 40))goto 23000
+ call synerr (19Hmissing left paren.)
+ return
+23000 continue
+ if (.not.(gnbtok (token, 100) .ne. 59))goto 23002
+ call pbstr (token)
+ call outtab
+ call eatup
+ call outdwe
+23002 continue
+ if (.not.(gnbtok (token, 100) .eq. 59))goto 23004
+ call outcon (lab)
+ goto 23005
+23004 continue
+ call pbstr (token)
+ call outnum (lab)
+ call outtab
+ call outstr (ifnot)
+ call outch (40)
+ nlpar = 0
+23006 if (.not.(nlpar .ge. 0))goto 23007
+ t = gettok (token, 100)
+ if (.not.(t .eq. 59))goto 23008
+ goto 23007
+23008 continue
+ if (.not.(t .eq. 40))goto 23010
+ nlpar = nlpar + 1
+ goto 23011
+23010 continue
+ if (.not.(t .eq. 41))goto 23012
+ nlpar = nlpar - 1
+23012 continue
+23011 continue
+ if (.not.(t .eq. -1))goto 23014
+ call pbstr (token)
+ return
+23014 continue
+ if (.not.(t .eq. -9))goto 23016
+ call squash (token)
+23016 continue
+ if (.not.(t .ne. 10 .and. t .ne. 95))goto 23018
+ call outstr (token)
+23018 continue
+ goto 23006
+23007 continue
+ if (.not.(ername .eq. 1))goto 23020
+ call outstr (serrc0)
+ goto 23021
+23020 continue
+ call outch (41)
+ call outch (41)
+ call outch (32)
+23021 continue
+ call outgo (lab+2)
+ if (.not.(nlpar .lt. 0))goto 23022
+ call synerr (19Hinvalid for clause.)
+23022 continue
+23005 continue
+ fordep = fordep + 1
+ j = 1
+ i = 1
+23024 if (.not.(i .lt. fordep))goto 23026
+ j = j + length (forstk (j)) + 1
+23025 i = i + 1
+ goto 23024
+23026 continue
+ forstk (j) = -2
+ nlpar = 0
+ t = gnbtok (token, 100)
+ call pbstr (token)
+23027 if (.not.(nlpar .ge. 0))goto 23028
+ t = gettok (token, 100)
+ if (.not.(t .eq. 40))goto 23029
+ nlpar = nlpar + 1
+ goto 23030
+23029 continue
+ if (.not.(t .eq. 41))goto 23031
+ nlpar = nlpar - 1
+23031 continue
+23030 continue
+ if (.not.(t .eq. -1))goto 23033
+ call pbstr (token)
+ goto 23028
+23033 continue
+ if (.not.(nlpar .ge. 0 .and. t .ne. 10 .and. t .ne. 95))goto 23035
+ if (.not.(t .eq. -9))goto 23037
+ call squash (token)
+23037 continue
+ if (.not.(j + length (token) .ge. 200))goto 23039
+ call baderr (20Hfor clause too long.)
+23039 continue
+ call scopy (token, 1, forstk, j)
+ j = j + length (token)
+23035 continue
+ goto 23027
+23028 continue
+ lab = lab + 1
+ call indent (1)
+ call errgo
+ return
+ end
+c logic0 logical_column
+c serrc0 serrchk
diff --git a/unix/boot/spp/rpp/rppfor/fors.f b/unix/boot/spp/rpp/rppfor/fors.f
new file mode 100644
index 00000000..cde5f501
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/fors.f
@@ -0,0 +1,87 @@
+ subroutine fors (lab)
+ integer lab
+ 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 i, j
+ integer length
+ xfer = 0
+ call outnum (lab)
+ j = 1
+ i = 1
+23000 if (.not.(i .lt. fordep))goto 23002
+ j = j + length (forstk (j)) + 1
+23001 i = i + 1
+ goto 23000
+23002 continue
+ if (.not.(length (forstk (j)) .gt. 0))goto 23003
+ call outtab
+ call outstr (forstk (j))
+ call outdon
+23003 continue
+ call outgo (lab - 1)
+ call indent (-1)
+ call outcon (lab + 1)
+ fordep = fordep - 1
+ ername = 0
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/getdef.f b/unix/boot/spp/rpp/rppfor/getdef.f
new file mode 100644
index 00000000..06644ec7
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/getdef.f
@@ -0,0 +1,136 @@
+ subroutine getdef (token, toksiz, defn, defsiz)
+ integer token (100), defn (2048)
+ integer toksiz, defsiz
+ 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 c, t, ptoken (100)
+ integer gtok, ngetch
+ integer i, nlpar
+ call skpblk
+ c = gtok (ptoken, 100)
+ if (.not.(c .eq. 40))goto 23000
+ t = 40
+ goto 23001
+23000 continue
+ t = 32
+ call pbstr (ptoken)
+23001 continue
+ call skpblk
+ if (.not.(gtok (token, toksiz) .ne. -9))goto 23002
+ call baderr (22Hnon-alphanumeric name.)
+23002 continue
+ call skpblk
+ c = gtok (ptoken, 100)
+ if (.not.(t .eq. 32))goto 23004
+ call pbstr (ptoken)
+ i = 1
+23006 continue
+ c = ngetch (c)
+ if (.not.(i .gt. defsiz))goto 23009
+ call baderr (20Hdefinition too long.)
+23009 continue
+ defn (i) = c
+ i = i + 1
+23007 if (.not.(c .eq. 35 .or. c .eq. 10 .or. c .eq. -1))goto 23006
+23008 continue
+ if (.not.(c .eq. 35))goto 23011
+ call putbak (c)
+23011 continue
+ goto 23005
+23004 continue
+ if (.not.(t .eq. 40))goto 23013
+ if (.not.(c .ne. 44))goto 23015
+ call baderr (24Hmissing comma in define.)
+23015 continue
+ nlpar = 0
+ i = 1
+23017 if (.not.(nlpar .ge. 0))goto 23019
+ if (.not.(i .gt. defsiz))goto 23020
+ call baderr (20Hdefinition too long.)
+ goto 23021
+23020 continue
+ if (.not.(ngetch (defn (i)) .eq. -1))goto 23022
+ call baderr (20Hmissing right paren.)
+ goto 23023
+23022 continue
+ if (.not.(defn (i) .eq. 40))goto 23024
+ nlpar = nlpar + 1
+ goto 23025
+23024 continue
+ if (.not.(defn (i) .eq. 41))goto 23026
+ nlpar = nlpar - 1
+23026 continue
+23025 continue
+23023 continue
+23021 continue
+23018 i = i + 1
+ goto 23017
+23019 continue
+ goto 23014
+23013 continue
+ call baderr (19Hgetdef is confused.)
+23014 continue
+23005 continue
+ defn (i - 1) = -2
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/gettok.f b/unix/boot/spp/rpp/rppfor/gettok.f
new file mode 100644
index 00000000..ed74b2f7
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/gettok.f
@@ -0,0 +1,104 @@
+ integer function gettok (token, toksiz)
+ integer token (100)
+ integer toksiz
+ 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 equal
+ integer t, deftok
+ integer ssubr(7)
+ integer sfunc(7)
+ data ssubr(1)/120/,ssubr(2)/36/,ssubr(3)/115/,ssubr(4)/117/,ssubr(
+ *5)/98/,ssubr(6)/114/,ssubr(7)/-2/
+ data sfunc(1)/120/,sfunc(2)/36/,sfunc(3)/102/,sfunc(4)/117/,sfunc(
+ *5)/110/,sfunc(6)/99/,sfunc(7)/-2/
+ gettok = deftok (token, toksiz)
+ if (.not.(gettok .ne. -1))goto 23000
+ if (.not.(gettok .eq. -166))goto 23002
+ if (.not.(equal (token, sfunc) .eq. 1))goto 23004
+ call skpblk
+ t = deftok (fcname, 30)
+ call pbstr (fcname)
+ if (.not.(t .ne. -9))goto 23006
+ call synerr (22HMissing function name.)
+23006 continue
+ call putbak (32)
+ swvnum = 0
+ swvlev = 0
+ return
+23004 continue
+ if (.not.(equal (token, ssubr) .eq. 1))goto 23008
+ swvnum = 0
+ swvlev = 0
+ return
+23008 continue
+ return
+23009 continue
+23005 continue
+23002 continue
+ return
+23000 continue
+ token (1) = -1
+ token (2) = -2
+ gettok = -1
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/gnbtok.f b/unix/boot/spp/rpp/rppfor/gnbtok.f
new file mode 100644
index 00000000..ac234f7f
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/gnbtok.f
@@ -0,0 +1,73 @@
+ integer function gnbtok (token, toksiz)
+ integer token (100)
+ integer toksiz
+ 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 gettok
+ call skpblk
+23000 continue
+ gnbtok = gettok (token, toksiz)
+23001 if (.not.(gnbtok .ne. 32))goto 23000
+23002 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/gocode.f b/unix/boot/spp/rpp/rppfor/gocode.f
new file mode 100644
index 00000000..627bc5d9
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/gocode.f
@@ -0,0 +1,83 @@
+ subroutine gocode
+ integer token (100), t
+ integer gnbtok
+ integer ctoi, i
+ 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
+ t = gnbtok (token, 100)
+ if (.not.(t .ne. 48))goto 23000
+ call synerr (23HInvalid label for goto.)
+ goto 23001
+23000 continue
+ call outtab
+ i = 1
+ call ogotos (ctoi(token,i), 0)
+23001 continue
+ xfer = 1
+ t=gnbtok(token,100)
+23002 if (.not.(t .eq. 10))goto 23004
+23003 t=gnbtok(token,100)
+ goto 23002
+23004 continue
+ call pbstr (token)
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/gtok.f b/unix/boot/spp/rpp/rppfor/gtok.f
new file mode 100644
index 00000000..5b021e8b
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/gtok.f
@@ -0,0 +1,213 @@
+ integer function gtok (lexstr, toksiz)
+ integer lexstr (100)
+ integer toksiz
+ 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 c
+ integer ngetch
+ integer i
+ c = ngetch (lexstr (1))
+ if (.not.(c .eq. 32 .or. c .eq. 9))goto 23000
+ lexstr (1) = 32
+23002 if (.not.(c .eq. 32 .or. c .eq. 9))goto 23003
+ c = ngetch (c)
+ goto 23002
+23003 continue
+ if (.not.(c .eq. 35))goto 23004
+23006 if (.not.(ngetch (c) .ne. 10))goto 23007
+ goto 23006
+23007 continue
+23004 continue
+ if (.not.(c .ne. 10))goto 23008
+ call putbak (c)
+ goto 23009
+23008 continue
+ lexstr (1) = 10
+23009 continue
+ lexstr (2) = -2
+ gtok = lexstr (1)
+ return
+23000 continue
+ i = 1
+ if (.not.(((65.le.c.and.c.le.90).or.(97.le.c.and.c.le.122))))goto
+ *23010
+ gtok = -9
+ if (.not.(c .eq. 120))goto 23012
+ c = ngetch (lexstr(2))
+ if (.not.(c .eq. 36))goto 23014
+ gtok = -166
+ i = 2
+ goto 23015
+23014 continue
+ call putbak (c)
+23015 continue
+23012 continue
+23016 if (.not.(i .lt. toksiz - 2))goto 23018
+ c = ngetch (lexstr(i+1))
+ if (.not.(.not.((65.le.c.and.c.le.90).or.(97.le.c.and.c.le.122)) .
+ *and. .not.(48.le.c.and.c.le.57) .and. c .ne. 95))goto 23019
+ goto 23018
+23019 continue
+23017 i=i+1
+ goto 23016
+23018 continue
+ call putbak (c)
+ goto 23011
+23010 continue
+ if (.not.((48.le.c.and.c.le.57)))goto 23021
+ i=1
+23023 if (.not.(i .lt. toksiz - 2))goto 23025
+ c = ngetch (lexstr (i + 1))
+ if (.not.(.not.(48.le.c.and.c.le.57)))goto 23026
+ goto 23025
+23026 continue
+23024 i=i+1
+ goto 23023
+23025 continue
+ call putbak (c)
+ gtok = 48
+ goto 23022
+23021 continue
+ if (.not.(c .eq. 91))goto 23028
+ lexstr (1) = 123
+ gtok = 123
+ goto 23029
+23028 continue
+ if (.not.(c .eq. 93))goto 23030
+ lexstr (1) = 125
+ gtok = 125
+ goto 23031
+23030 continue
+ if (.not.(c .eq. 36))goto 23032
+ if (.not.(ngetch (lexstr (2)) .eq. 40))goto 23034
+ i = 2
+ gtok = -69
+ goto 23035
+23034 continue
+ if (.not.(lexstr (2) .eq. 41))goto 23036
+ i = 2
+ gtok = -68
+ goto 23037
+23036 continue
+ call putbak (lexstr (2))
+ gtok = 36
+23037 continue
+23035 continue
+ goto 23033
+23032 continue
+ if (.not.(c .eq. 39 .or. c .eq. 34))goto 23038
+ gtok = c
+ i = 2
+23040 if (.not.(ngetch (lexstr (i)) .ne. lexstr (1)))goto 23042
+ if (.not.(lexstr (i) .eq. 95))goto 23043
+ if (.not.(ngetch (c) .eq. 10))goto 23045
+23047 if (.not.(c .eq. 10 .or. c .eq. 32 .or. c .eq. 9))goto 23048
+ c = ngetch (c)
+ goto 23047
+23048 continue
+ lexstr (i) = c
+ goto 23046
+23045 continue
+ call putbak (c)
+23046 continue
+23043 continue
+ if (.not.(lexstr (i) .eq. 10 .or. i .ge. toksiz - 1))goto 23049
+ call synerr (14Hmissing quote.)
+ lexstr (i) = lexstr (1)
+ call putbak (10)
+ goto 23042
+23049 continue
+23041 i = i + 1
+ goto 23040
+23042 continue
+ goto 23039
+23038 continue
+ if (.not.(c .eq. 35))goto 23051
+23053 if (.not.(ngetch (lexstr (1)) .ne. 10))goto 23054
+ goto 23053
+23054 continue
+ gtok = 10
+ goto 23052
+23051 continue
+ if (.not.(c .eq. 62 .or. c .eq. 60 .or. c .eq. 126 .or. c .eq. 33
+ *.or. c .eq. 126 .or. c .eq. 94 .or. c .eq. 61 .or. c .eq. 38 .or.
+ *c .eq. 124))goto 23055
+ call relate (lexstr, i)
+ gtok = c
+ goto 23056
+23055 continue
+ gtok = c
+23056 continue
+23052 continue
+23039 continue
+23033 continue
+23031 continue
+23029 continue
+23022 continue
+23011 continue
+ if (.not.(i .ge. toksiz - 1))goto 23057
+ call synerr (15Htoken too long.)
+23057 continue
+ lexstr (i + 1) = -2
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/ifcode.f b/unix/boot/spp/rpp/rppfor/ifcode.f
new file mode 100644
index 00000000..8fbf5763
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/ifcode.f
@@ -0,0 +1,71 @@
+ subroutine ifcode (lab)
+ integer lab
+ 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 labgen
+ xfer = 0
+ lab = labgen (2)
+ call ifgo (lab)
+ call indent (1)
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/iferrc.f b/unix/boot/spp/rpp/rppfor/iferrc.f
new file mode 100644
index 00000000..f7abae81
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/iferrc.f
@@ -0,0 +1,168 @@
+ subroutine iferrc (lab, sense)
+ integer lab, sense
+ integer labgen, nlpar
+ integer t, gettok, gnbtok, token(100)
+ 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 errpsh(12)
+ integer siferr(20)
+ integer sifno0(15)
+ data errpsh(1)/99/,errpsh(2)/97/,errpsh(3)/108/,errpsh(4)/108/,err
+ *psh(5)/32/,errpsh(6)/120/,errpsh(7)/101/,errpsh(8)/114/,errpsh(9)/
+ *112/,errpsh(10)/115/,errpsh(11)/104/,errpsh(12)/-2/
+ data siferr(1)/105/,siferr(2)/102/,siferr(3)/32/,siferr(4)/40/,sif
+ *err(5)/46/,siferr(6)/110/,siferr(7)/111/,siferr(8)/116/,siferr(9)/
+ *46/,siferr(10)/120/,siferr(11)/101/,siferr(12)/114/,siferr(13)/112
+ */,siferr(14)/111/,siferr(15)/112/,siferr(16)/40/,siferr(17)/41/,si
+ *ferr(18)/41/,siferr(19)/32/,siferr(20)/-2/
+ data sifno0(1)/105/,sifno0(2)/102/,sifno0(3)/32/,sifno0(4)/40/,sif
+ *no0(5)/120/,sifno0(6)/101/,sifno0(7)/114/,sifno0(8)/112/,sifno0(9)
+ */111/,sifno0(10)/112/,sifno0(11)/40/,sifno0(12)/41/,sifno0(13)/41/
+ *,sifno0(14)/32/,sifno0(15)/-2/
+ xfer = 0
+ lab = labgen (3)
+ call outtab
+ call outstr (errpsh)
+ call outdon
+ I23000=(gnbtok (token, 100))
+ goto 23000
+23002 continue
+ call outtab
+ goto 23001
+23003 continue
+ call pbstr (token)
+ esp = esp + 1
+ if (.not.(esp .ge. 30))goto 23004
+ call baderr (35HIferr statements nested too deeply.)
+23004 continue
+ errstk(esp) = lab
+ return
+23006 continue
+ call synerr (19HMissing left paren.)
+ return
+23000 continue
+ if (I23000.eq.40)goto 23002
+ if (I23000.eq.123)goto 23003
+ goto 23006
+23001 continue
+ nlpar = 1
+ token(1) = -2
+ esp = esp + 1
+ if (.not.(esp .ge. 30))goto 23007
+ call baderr (35HIferr statements nested too deeply.)
+23007 continue
+ errstk(esp) = 0
+23009 continue
+ call outstr (token)
+ t = gettok (token, 100)
+ if (.not.(t .eq. 59 .or. t .eq. 123 .or. t .eq. 125 .or. t .eq. -1
+ *))goto 23012
+ call pbstr (token)
+ goto 23011
+23012 continue
+ if (.not.(t .eq. 10))goto 23014
+ token (1) = -2
+ goto 23015
+23014 continue
+ if (.not.(t .eq. 40))goto 23016
+ nlpar = nlpar + 1
+ goto 23017
+23016 continue
+ if (.not.(t .eq. 41))goto 23018
+ nlpar = nlpar - 1
+ goto 23019
+23018 continue
+ if (.not.(t .eq. 59))goto 23020
+ call outdon
+ call outtab
+ goto 23021
+23020 continue
+ if (.not.(t .eq. -9))goto 23022
+ call squash (token)
+23022 continue
+23021 continue
+23019 continue
+23017 continue
+23015 continue
+23010 if (.not.(nlpar .le. 0))goto 23009
+23011 continue
+ esp = esp - 1
+ ername = 0
+ if (.not.(nlpar .ne. 0))goto 23024
+ call synerr (33HMissing parenthesis in condition.)
+ goto 23025
+23024 continue
+ call outdon
+23025 continue
+ call outtab
+ if (.not.(sense .eq. 1))goto 23026
+ call outstr (siferr)
+ goto 23027
+23026 continue
+ call outstr (sifno0)
+23027 continue
+ call outgo (lab)
+ call indent (1)
+ return
+ end
+c sifno0 sifnoerr
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/ifgo.f b/unix/boot/spp/rpp/rppfor/ifgo.f
new file mode 100644
index 00000000..5f2bb654
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/ifgo.f
@@ -0,0 +1,88 @@
+ subroutine ifgo (lab)
+ integer lab
+ 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 ifnot(10)
+ integer serrc0(21)
+ data ifnot(1)/105/,ifnot(2)/102/,ifnot(3)/32/,ifnot(4)/40/,ifnot(5
+ *)/46/,ifnot(6)/110/,ifnot(7)/111/,ifnot(8)/116/,ifnot(9)/46/,ifnot
+ *(10)/-2/
+ data serrc0(1)/46/,serrc0(2)/97/,serrc0(3)/110/,serrc0(4)/100/,ser
+ *rc0(5)/46/,serrc0(6)/40/,serrc0(7)/46/,serrc0(8)/110/,serrc0(9)/11
+ *1/,serrc0(10)/116/,serrc0(11)/46/,serrc0(12)/120/,serrc0(13)/101/,
+ *serrc0(14)/114/,serrc0(15)/102/,serrc0(16)/108/,serrc0(17)/103/,se
+ *rrc0(18)/41/,serrc0(19)/41/,serrc0(20)/32/,serrc0(21)/-2/
+ call outtab
+ call outstr (ifnot)
+ call balpar
+ if (.not.(ername .eq. 1))goto 23000
+ call outstr (serrc0)
+ goto 23001
+23000 continue
+ call outch (41)
+ call outch (32)
+23001 continue
+ call outgo (lab)
+ call errgo
+ end
+c logic0 logical_column
+c serrc0 serrchk
diff --git a/unix/boot/spp/rpp/rppfor/ifparm.f b/unix/boot/spp/rpp/rppfor/ifparm.f
new file mode 100644
index 00000000..4334a444
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/ifparm.f
@@ -0,0 +1,26 @@
+ integer function ifparm (strng)
+ integer strng (100)
+ integer c
+ external index
+ integer i, index, type
+ c = strng (1)
+ if (.not.(c .eq. -12 .or. c .eq. -13 .or. c .eq. -11 .or. c .eq. -
+ *14 .or. c .eq. -10))goto 23000
+ ifparm = 1
+ goto 23001
+23000 continue
+ ifparm = 0
+ i = 1
+23002 if (.not.(index (strng (i), 36) .gt. 0))goto 23004
+ i = i + index (strng (i), 36)
+ if (.not.(type (strng (i)) .eq. 48))goto 23005
+ if (.not.(type (strng (i + 1)) .ne. 48))goto 23007
+ ifparm = 1
+ goto 23004
+23007 continue
+23005 continue
+23003 goto 23002
+23004 continue
+23001 continue
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/indent.f b/unix/boot/spp/rpp/rppfor/indent.f
new file mode 100644
index 00000000..40b99b9f
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/indent.f
@@ -0,0 +1,68 @@
+ subroutine indent (nleve0)
+ integer nleve0
+ 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
+ logic0 = logic0 + (nleve0 * 3)
+ col = max0(6, min0(30, logic0))
+ end
+c logic0 logical_column
+c nleve0 nlevels
diff --git a/unix/boot/spp/rpp/rppfor/initkw.f b/unix/boot/spp/rpp/rppfor/initkw.f
new file mode 100644
index 00000000..c5acfec0
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/initkw.f
@@ -0,0 +1,86 @@
+ subroutine initkw
+ 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 mktabl
+ call dsinit (60000)
+ deftbl = mktabl (1)
+ call entdkw
+ rkwtbl = mktabl (1)
+ call entrkw
+ fkwtbl = mktabl (0)
+ call entfkw
+ namtbl = mktabl (1)
+ xpptbl = mktabl (1)
+ call entxkw
+ gentbl = mktabl (0)
+ errtbl = 0
+ label = 100
+ smem(1) = -2
+ body = 0
+ dbgout = 0
+ dbglev = 0
+ memflg = 0
+ swinrg = 0
+ col = 6
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/labelc.f b/unix/boot/spp/rpp/rppfor/labelc.f
new file mode 100644
index 00000000..24d88008
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/labelc.f
@@ -0,0 +1,75 @@
+ subroutine labelc (lexstr)
+ integer lexstr (100)
+ 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 length, l
+ xfer = 0
+ l = length (lexstr)
+ if (.not.(l .ge. 3 .and. l .lt. 4))goto 23000
+ call synerr (53HWarning: statement labels 100 and above are reserv
+ *ed.)
+23000 continue
+ call outstr (lexstr)
+ call outtab
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/labgen.f b/unix/boot/spp/rpp/rppfor/labgen.f
new file mode 100644
index 00000000..ab7538f4
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/labgen.f
@@ -0,0 +1,68 @@
+ integer function labgen (n)
+ integer n
+ 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
+ labgen = label
+ label = label + (n / 10 + 1) * 10
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/lex.f b/unix/boot/spp/rpp/rppfor/lex.f
new file mode 100644
index 00000000..6f2243f4
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/lex.f
@@ -0,0 +1,119 @@
+ integer function lex (lexstr)
+ integer lexstr (100)
+ 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 gnbtok, t, c
+ integer lookup, n
+ integer sdefa0(8)
+ data sdefa0(1)/100/,sdefa0(2)/101/,sdefa0(3)/102/,sdefa0(4)/97/,sd
+ *efa0(5)/117/,sdefa0(6)/108/,sdefa0(7)/116/,sdefa0(8)/-2/
+ lex = gnbtok (lexstr, 100)
+23000 if (.not.(lex .eq. 10))goto 23002
+23001 lex = gnbtok (lexstr, 100)
+ goto 23000
+23002 continue
+ if (.not.(lex .eq. -1 .or. lex .eq. 59 .or. lex .eq. 123 .or. lex
+ *.eq. 125))goto 23003
+ return
+23003 continue
+ if (.not.(lex .eq. 48))goto 23005
+ lex = -89
+ goto 23006
+23005 continue
+ if (.not.(lex .eq. 37))goto 23007
+ lex = -85
+ goto 23008
+23007 continue
+ if (.not.(lex .eq. -166))goto 23009
+ lex = -67
+ goto 23010
+23009 continue
+ if (.not.(lookup (lexstr, lex, rkwtbl) .eq. 1))goto 23011
+ if (.not.(lex .eq. -90))goto 23013
+ n = -1
+23015 continue
+ c = ngetch (c)
+ n = n + 1
+23016 if (.not.(c .ne. 32 .and. c .ne. 9))goto 23015
+23017 continue
+ call putbak (c)
+ t = gnbtok (lexstr, 100)
+ call pbstr (lexstr)
+ if (.not.(n .gt. 0))goto 23018
+ call putbak (32)
+23018 continue
+ call scopy (sdefa0, 1, lexstr, 1)
+ if (.not.(t .ne. 58))goto 23020
+ lex = -80
+23020 continue
+23013 continue
+ goto 23012
+23011 continue
+ lex = -80
+23012 continue
+23010 continue
+23008 continue
+23006 continue
+ return
+ end
+c logic0 logical_column
+c sdefa0 sdefault
diff --git a/unix/boot/spp/rpp/rppfor/litral.f b/unix/boot/spp/rpp/rppfor/litral.f
new file mode 100644
index 00000000..25bb6d3f
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/litral.f
@@ -0,0 +1,76 @@
+ subroutine litral
+ 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 ngetch
+ if (.not.(outp .gt. 0))goto 23000
+ call outdwe
+23000 continue
+ outp = 1
+23002 if (.not.(ngetch (outbuf (outp)) .ne. 10))goto 23004
+23003 outp = outp + 1
+ goto 23002
+23004 continue
+ outp = outp - 1
+ call outdwe
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/lndict.f b/unix/boot/spp/rpp/rppfor/lndict.f
new file mode 100644
index 00000000..c2c4c1c3
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/lndict.f
@@ -0,0 +1,86 @@
+ subroutine lndict
+ integer sym (100), c
+ integer sctabl, length
+ integer posn, locn
+ 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
+ posn = 0
+23000 if (.not.(sctabl (namtbl, sym, locn, posn) .ne. -1))goto 23001
+ if (.not.(length(sym) .gt. 6))goto 23002
+ call outch (99)
+ call outtab
+23004 if (.not.(mem (locn) .ne. -2))goto 23006
+ c = mem (locn)
+ call outch (c)
+23005 locn = locn + 1
+ goto 23004
+23006 continue
+ call outch (32)
+ call outch (32)
+ call outstr (sym)
+ call outdon
+23002 continue
+ goto 23000
+23001 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/ludef.f b/unix/boot/spp/rpp/rppfor/ludef.f
new file mode 100644
index 00000000..3db6c8fe
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/ludef.f
@@ -0,0 +1,84 @@
+ integer function ludef (id, defn, table)
+ integer id (100), defn (100)
+ integer table
+ 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 i
+ integer lookup
+ integer locn
+ ludef = lookup (id, locn, table)
+ if (.not.(ludef .eq. 1))goto 23000
+ i = 1
+23002 if (.not.(mem (locn) .ne. -2))goto 23004
+ defn (i) = mem (locn)
+ i = i + 1
+23003 locn = locn + 1
+ goto 23002
+23004 continue
+ defn (i) = -2
+ goto 23001
+23000 continue
+ defn (1) = -2
+23001 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/mapid.f b/unix/boot/spp/rpp/rppfor/mapid.f
new file mode 100644
index 00000000..982651ee
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/mapid.f
@@ -0,0 +1,13 @@
+ subroutine mapid (name)
+ integer name(100)
+ integer i
+ i=1
+23000 if (.not.(name(i) .ne. -2))goto 23002
+23001 i=i+1
+ goto 23000
+23002 continue
+ if (.not.(i-1 .gt. 6))goto 23003
+ name(6) = name(i-1)
+ name(6+1) = -2
+23003 continue
+ end
diff --git a/unix/boot/spp/rpp/rppfor/mkpkg.sh b/unix/boot/spp/rpp/rppfor/mkpkg.sh
new file mode 100644
index 00000000..14896773
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/mkpkg.sh
@@ -0,0 +1,22 @@
+# Fortran source for RPP preprocessor.
+
+$F77 -c $HSI_FF addchr.f allblk.f alldig.f baderr.f balpar.f beginc.f
+$F77 -c $HSI_FF brknxt.f cascod.f caslab.f declco.f deftok.f doarth.f
+$F77 -c $HSI_FF docode.f doif.f doincr.f domac.f dostat.f dosub.f
+$F77 -c $HSI_FF eatup.f elseif.f endcod.f entdef.f entdkw.f entfkw.f
+$F77 -c $HSI_FF entrkw.f entxkw.f errchk.f errgo.f errorc.f evalr.f
+$F77 -c $HSI_FF finit.f forcod.f fors.f getdef.f gettok.f gnbtok.f
+$F77 -c $HSI_FF gocode.f gtok.f ifcode.f iferrc.f ifgo.f ifparm.f
+$F77 -c $HSI_FF indent.f initkw.f labelc.f labgen.f lex.f litral.f
+$F77 -c $HSI_FF lndict.f ludef.f mapid.f ngetch.f ogotos.f otherc.f
+$F77 -c $HSI_FF outch.f outcon.f outdon.f outdwe.f outgo.f outnum.f
+$F77 -c $HSI_FF outstr.f outtab.f parse.f pbnum.f pbstr.f poicod.f
+$F77 -c $HSI_FF push.f putbak.f putchr.f puttok.f ratfor.f relate.f
+$F77 -c $HSI_FF repcod.f retcod.f sdupl.f skpblk.f squash.f strdcl.f
+$F77 -c $HSI_FF swcode.f swend.f swvar.f synerr.f thenco.f ulstal.f
+$F77 -c $HSI_FF uniqid.f unstak.f untils.f whilec.f whiles.f
+
+ar rv librpp.a *.o
+$RANLIB librpp.a
+mv -f librpp.a ..
+rm *.o
diff --git a/unix/boot/spp/rpp/rppfor/ngetch.f b/unix/boot/spp/rpp/rppfor/ngetch.f
new file mode 100644
index 00000000..998e707a
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/ngetch.f
@@ -0,0 +1,94 @@
+ integer function ngetch (c)
+ integer c
+ 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 getlin, n, i
+ if (.not.(buf (bp) .eq. -2))goto 23000
+ if (.not.(getlin (buf (3192), infile (level)) .eq. -1))goto 23002
+ c = -1
+ goto 23003
+23002 continue
+ c = buf (3192)
+ bp = 3192 + 1
+ if (.not.(c .eq. 35))goto 23004
+ if (.not.(buf(bp) .eq. 33 .and. buf(bp+1) .eq. 35))goto 23006
+ n = 0
+ i=bp+3
+23008 if (.not.(buf(i) .ge. 48 .and. buf(i) .le. 57))goto 23010
+ n = n * 10 + buf(i) - 48
+23009 i=i+1
+ goto 23008
+23010 continue
+ linect (level) = n - 1
+23006 continue
+23004 continue
+ linect (level) = linect (level) + 1
+23003 continue
+ goto 23001
+23000 continue
+ c = buf (bp)
+ bp = bp + 1
+23001 continue
+ ngetch=(c)
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/ogotos.f b/unix/boot/spp/rpp/rppfor/ogotos.f
new file mode 100644
index 00000000..48ce0314
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/ogotos.f
@@ -0,0 +1,78 @@
+ subroutine ogotos (n, error0)
+ integer n, error0
+ 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 sgoto(6)
+ data sgoto(1)/103/,sgoto(2)/111/,sgoto(3)/116/,sgoto(4)/111/,sgoto
+ *(5)/32/,sgoto(6)/-2/
+ call outtab
+ call outstr (sgoto)
+ call outnum (n)
+ if (.not.(error0 .eq. 1))goto 23000
+ call outdwe
+ goto 23001
+23000 continue
+ call outdon
+23001 continue
+ end
+c logic0 logical_column
+c error0 error_check
diff --git a/unix/boot/spp/rpp/rppfor/otherc.f b/unix/boot/spp/rpp/rppfor/otherc.f
new file mode 100644
index 00000000..f745eabb
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/otherc.f
@@ -0,0 +1,75 @@
+ subroutine otherc (lexstr)
+ integer lexstr(100)
+ 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
+ xfer = 0
+ call outtab
+ if (.not.(((65.le.lexstr (1).and.lexstr (1).le.90).or.(97.le.lexst
+ *r (1).and.lexstr (1).le.122))))goto 23000
+ call squash (lexstr)
+23000 continue
+ call outstr (lexstr)
+ call eatup
+ call outdwe
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/outch.f b/unix/boot/spp/rpp/rppfor/outch.f
new file mode 100644
index 00000000..526af517
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/outch.f
@@ -0,0 +1,120 @@
+ subroutine outch (c)
+ integer c, splbuf(8+1)
+ integer i, ip, op, index
+ 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
+ external index
+ integer break0(10)
+ data break0(1)/32/,break0(2)/41/,break0(3)/44/,break0(4)/46/,break
+ *0(5)/43/,break0(6)/45/,break0(7)/42/,break0(8)/47/,break0(9)/40/,b
+ *reak0(10)/-2/
+ if (.not.(outp .ge. 72))goto 23000
+ if (.not.(index (break0, c) .gt. 0))goto 23002
+ ip = outp
+ goto 23003
+23002 continue
+ ip=outp
+23004 if (.not.(ip .ge. 1))goto 23006
+ if (.not.(index (break0, outbuf(ip)) .gt. 0))goto 23007
+ goto 23006
+23007 continue
+23005 ip=ip-1
+ goto 23004
+23006 continue
+23003 continue
+ if (.not.(ip .ne. outp .and. (outp-ip) .lt. 8))goto 23009
+ op = 1
+ i=ip+1
+23011 if (.not.(i .le. outp))goto 23013
+ splbuf(op) = outbuf(i)
+ op = op + 1
+23012 i=i+1
+ goto 23011
+23013 continue
+ splbuf(op) = -2
+ outp = ip
+ goto 23010
+23009 continue
+ splbuf(1) = -2
+23010 continue
+ call outdon
+ op=1
+23014 if (.not.(op .lt. col))goto 23016
+ outbuf(op) = 32
+23015 op=op+1
+ goto 23014
+23016 continue
+ outbuf(6) = 42
+ outp = col
+ ip=1
+23017 if (.not.(splbuf(ip) .ne. -2))goto 23019
+ outp = outp + 1
+ outbuf(outp) = splbuf(ip)
+23018 ip=ip+1
+ goto 23017
+23019 continue
+23000 continue
+ outp = outp + 1
+ outbuf(outp) = c
+ end
+c logic0 logical_column
+c break0 break_chars
diff --git a/unix/boot/spp/rpp/rppfor/outcon.f b/unix/boot/spp/rpp/rppfor/outcon.f
new file mode 100644
index 00000000..3c25b6ff
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/outcon.f
@@ -0,0 +1,80 @@
+ subroutine outcon (n)
+ integer n
+ 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 contin(9)
+ data contin(1)/99/,contin(2)/111/,contin(3)/110/,contin(4)/116/,co
+ *ntin(5)/105/,contin(6)/110/,contin(7)/117/,contin(8)/101/,contin(9
+ *)/-2/
+ xfer = 0
+ if (.not.(n .le. 0 .and. outp .eq. 0))goto 23000
+ return
+23000 continue
+ if (.not.(n .gt. 0))goto 23002
+ call outnum (n)
+23002 continue
+ call outtab
+ call outstr (contin)
+ call outdon
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/outdon.f b/unix/boot/spp/rpp/rppfor/outdon.f
new file mode 100644
index 00000000..d3582ff9
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/outdon.f
@@ -0,0 +1,118 @@
+ subroutine outdon
+ 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 allblk
+ integer itoc, ip, op, i
+ integer obuf(80)
+ integer sline0(7)
+ data sline0(1)/35/,sline0(2)/108/,sline0(3)/105/,sline0(4)/110/,sl
+ *ine0(5)/101/,sline0(6)/32/,sline0(7)/-2/
+ if (.not.(dbgout .eq. 1))goto 23000
+ if (.not.(body .eq. 1 .or. dbglev .ne. level))goto 23002
+ op = 1
+ ip=1
+23004 if (.not.(sline0(ip) .ne. -2))goto 23006
+ obuf(op) = sline0(ip)
+ op = op + 1
+23005 ip=ip+1
+ goto 23004
+23006 continue
+ op = op + itoc (linect, obuf(op), 80-op+1)
+ obuf(op) = 32
+ op = op + 1
+ obuf(op) = 34
+ op = op + 1
+ i=fnamp-1
+23007 if (.not.(i .ge. 1))goto 23009
+ if (.not.(fnames(i-1) .eq. -2 .or. i .eq. 1))goto 23010
+ ip=i
+23012 if (.not.(fnames(ip) .ne. -2))goto 23014
+ obuf(op) = fnames(ip)
+ op = op + 1
+23013 ip=ip+1
+ goto 23012
+23014 continue
+ goto 23009
+23010 continue
+23008 i=i-1
+ goto 23007
+23009 continue
+ obuf(op) = 34
+ op = op + 1
+ obuf(op) = 10
+ op = op + 1
+ obuf(op) = -2
+ op = op + 1
+ call putlin (obuf, 1)
+ dbglev = level
+23002 continue
+23000 continue
+ outbuf (outp + 1) = 10
+ outbuf (outp + 2) = -2
+ if (.not.(allblk (outbuf) .eq. 0))goto 23015
+ call putlin (outbuf, 1)
+23015 continue
+ outp = 0
+ return
+ end
+c logic0 logical_column
+c sline0 s_line
diff --git a/unix/boot/spp/rpp/rppfor/outdwe.f b/unix/boot/spp/rpp/rppfor/outdwe.f
new file mode 100644
index 00000000..6b006269
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/outdwe.f
@@ -0,0 +1,4 @@
+ subroutine outdwe
+ call outdon
+ call errgo
+ end
diff --git a/unix/boot/spp/rpp/rppfor/outgo.f b/unix/boot/spp/rpp/rppfor/outgo.f
new file mode 100644
index 00000000..2f4ff64c
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/outgo.f
@@ -0,0 +1,69 @@
+ subroutine outgo (n)
+ integer n
+ 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
+ if (.not.(xfer .eq. 1))goto 23000
+ return
+23000 continue
+ call ogotos (n, 0)
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/outnum.f b/unix/boot/spp/rpp/rppfor/outnum.f
new file mode 100644
index 00000000..8c7e7029
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/outnum.f
@@ -0,0 +1,22 @@
+ subroutine outnum (n)
+ integer n
+ integer chars (20)
+ integer i, m
+ m = iabs (n)
+ i = 0
+23000 continue
+ i = i + 1
+ chars (i) = mod (m, 10) + 48
+ m = m / 10
+23001 if (.not.(m .eq. 0 .or. i .ge. 20))goto 23000
+23002 continue
+ if (.not.(n .lt. 0))goto 23003
+ call outch (45)
+23003 continue
+23005 if (.not.(i .gt. 0))goto 23007
+ call outch (chars (i))
+23006 i = i - 1
+ goto 23005
+23007 continue
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/outstr.f b/unix/boot/spp/rpp/rppfor/outstr.f
new file mode 100644
index 00000000..28230330
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/outstr.f
@@ -0,0 +1,30 @@
+ subroutine outstr (str)
+ integer str (100)
+ integer c
+ integer i, j
+ i = 1
+23000 if (.not.(str (i) .ne. -2))goto 23002
+ c = str (i)
+ if (.not.(c .ne. 39 .and. c .ne. 34))goto 23003
+ call outch (c)
+ goto 23004
+23003 continue
+ i = i + 1
+ j = i
+23005 if (.not.(str (j) .ne. c))goto 23007
+23006 j = j + 1
+ goto 23005
+23007 continue
+ call outnum (j - i)
+ call outch (72)
+23008 if (.not.(i .lt. j))goto 23010
+ call outch (str (i))
+23009 i = i + 1
+ goto 23008
+23010 continue
+23004 continue
+23001 i = i + 1
+ goto 23000
+23002 continue
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/outtab.f b/unix/boot/spp/rpp/rppfor/outtab.f
new file mode 100644
index 00000000..17b0aa8c
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/outtab.f
@@ -0,0 +1,69 @@
+ subroutine outtab
+ 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
+23000 if (.not.(outp .lt. col))goto 23001
+ call outch (32)
+ goto 23000
+23001 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/parse.f b/unix/boot/spp/rpp/rppfor/parse.f
new file mode 100644
index 00000000..5876293a
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/parse.f
@@ -0,0 +1,257 @@
+ subroutine parse
+ 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 lexstr(100)
+ integer lab, labval(100), lextyp(100), sp, token, i, t
+ integer lex
+ logical pushs0
+ sp = 1
+ lextyp(1) = -1
+ token = lex(lexstr)
+23000 if (.not.(token .ne. -1))goto 23002
+ pushs0 = .false.
+ I23003=(token)
+ goto 23003
+23005 continue
+ call ifcode (lab)
+ pushs0 = .true.
+ goto 23004
+23006 continue
+ call iferrc (lab, 1)
+ pushs0 = .true.
+ goto 23004
+23007 continue
+ call iferrc (lab, 0)
+ pushs0 = .true.
+ goto 23004
+23008 continue
+ call docode (lab)
+ pushs0 = .true.
+ goto 23004
+23009 continue
+ call whilec (lab)
+ pushs0 = .true.
+ goto 23004
+23010 continue
+ call forcod (lab)
+ pushs0 = .true.
+ goto 23004
+23011 continue
+ call repcod (lab)
+ pushs0 = .true.
+ goto 23004
+23012 continue
+ call swcode (lab)
+ pushs0 = .true.
+ goto 23004
+23013 continue
+ i=sp
+23014 if (.not.(i .gt. 0))goto 23016
+ if (.not.(lextyp(i) .eq. -92))goto 23017
+ goto 23016
+23017 continue
+23015 i=i-1
+ goto 23014
+23016 continue
+ if (.not.(i .eq. 0))goto 23019
+ call synerr (24Hillegal case or default.)
+ goto 23020
+23019 continue
+ call cascod (labval (i), token)
+23020 continue
+ goto 23004
+23021 continue
+ call labelc (lexstr)
+ pushs0 = .true.
+ goto 23004
+23022 continue
+ t = lextyp(sp)
+ if (.not.(t .eq. -99 .or. t .eq. -98 .or. t .eq. -97))goto 23023
+ call elseif (labval(sp))
+ goto 23024
+23023 continue
+ call synerr (13HIllegal else.)
+23024 continue
+ t = lex (lexstr)
+ call pbstr (lexstr)
+ if (.not.(t .eq. -99 .or. t .eq. -98 .or. t .eq. -97))goto 23025
+ call indent (-1)
+ token = -72
+23025 continue
+ pushs0 = .true.
+ goto 23004
+23027 continue
+ if (.not.(lextyp(sp) .eq. -98 .or. lextyp(sp) .eq. -97))goto 23028
+ call thenco (lextyp(sp), labval(sp))
+ lab = labval(sp)
+ token = lextyp(sp)
+ sp = sp - 1
+ goto 23029
+23028 continue
+ call synerr (41HIllegal 'then' clause in iferr statement.)
+23029 continue
+ pushs0 = .true.
+ goto 23004
+23030 continue
+ call litral
+ goto 23004
+23031 continue
+ call errchk
+ goto 23004
+23032 continue
+ call beginc
+ goto 23004
+23033 continue
+ call endcod (lexstr)
+ if (.not.(sp .ne. 1))goto 23034
+ call synerr (31HMissing right brace or 'begin'.)
+ sp = 1
+23034 continue
+ goto 23004
+23036 continue
+ if (.not.(token .eq. 123))goto 23037
+ pushs0 = .true.
+ goto 23038
+23037 continue
+ if (.not.(token .eq. -67))goto 23039
+ call declco (lexstr)
+23039 continue
+23038 continue
+ goto 23004
+23003 continue
+ I23003=I23003+100
+ if (I23003.lt.1.or.I23003.gt.18)goto 23036
+ goto (23005,23006,23007,23008,23009,23010,23011,23012,23013,23013,
+ *23021,23036,23022,23027,23030,23031,23032,23033),I23003
+23004 continue
+ if (.not.(pushs0))goto 23041
+ if (.not.(body .eq. 0))goto 23043
+ call synerr (24HMissing 'begin' keyword.)
+ call beginc
+23043 continue
+ sp = sp + 1
+ if (.not.(sp .gt. 100))goto 23045
+ call baderr (25HStack overflow in parser.)
+23045 continue
+ lextyp(sp) = token
+ labval(sp) = lab
+ goto 23042
+23041 continue
+ if (.not.(token .ne. -91 .and. token .ne. -90))goto 23047
+ if (.not.(token .eq. 125))goto 23049
+ token = -74
+23049 continue
+ I23051=(token)
+ goto 23051
+23053 continue
+ call otherc (lexstr)
+ goto 23052
+23054 continue
+ call brknxt (sp, lextyp, labval, token)
+ goto 23052
+23055 continue
+ call retcod
+ goto 23052
+23056 continue
+ call gocode
+ goto 23052
+23057 continue
+ if (.not.(body .eq. 0))goto 23058
+ call strdcl
+ goto 23059
+23058 continue
+ call otherc (lexstr)
+23059 continue
+ goto 23052
+23060 continue
+ if (.not.(lextyp(sp) .eq. 123))goto 23061
+ sp = sp - 1
+ goto 23062
+23061 continue
+ if (.not.(lextyp(sp) .eq. -92))goto 23063
+ call swend (labval(sp))
+ sp = sp - 1
+ goto 23064
+23063 continue
+ call synerr (20HIllegal right brace.)
+23064 continue
+23062 continue
+ goto 23052
+23051 continue
+ I23051=I23051+81
+ if (I23051.lt.1.or.I23051.gt.7)goto 23052
+ goto (23053,23054,23054,23055,23056,23057,23060),I23051
+23052 continue
+ token = lex (lexstr)
+ call pbstr (lexstr)
+ call unstak (sp, lextyp, labval, token)
+23047 continue
+23042 continue
+23001 token = lex(lexstr)
+ goto 23000
+23002 continue
+ if (.not.(sp .ne. 1))goto 23065
+ call synerr (15Hunexpected EOF.)
+23065 continue
+ end
+c pushs0 push_stack
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/pbnum.f b/unix/boot/spp/rpp/rppfor/pbnum.f
new file mode 100644
index 00000000..bf477107
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/pbnum.f
@@ -0,0 +1,17 @@
+ subroutine pbnum (n)
+ integer n
+ integer m, num
+ integer mod
+ 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/
+ num = n
+23000 continue
+ m = mod (num, 10)
+ call putbak (digits (m + 1))
+ num = num / 10
+23001 if (.not.(num .eq. 0))goto 23000
+23002 continue
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/pbstr.f b/unix/boot/spp/rpp/rppfor/pbstr.f
new file mode 100644
index 00000000..da3a12a9
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/pbstr.f
@@ -0,0 +1,75 @@
+ subroutine pbstr (s)
+ integer s(100)
+ integer lenstr, i
+ integer length
+ lenstr = length (s)
+ if (.not.(s(1) .eq. 46 .and. s(lenstr) .eq. 46))goto 23000
+ if (.not.(lenstr .eq. 4))goto 23002
+ if (.not.(s(2) .eq. 103))goto 23004
+ if (.not.(s(3) .eq. 116))goto 23006
+ call putbak (62)
+ return
+23006 continue
+ if (.not.(s(3) .eq. 101))goto 23008
+ call putbak (61)
+ call putbak (62)
+ return
+23008 continue
+23007 continue
+ goto 23005
+23004 continue
+ if (.not.(s(2) .eq. 108))goto 23010
+ if (.not.(s(3) .eq. 116))goto 23012
+ call putbak (60)
+ return
+23012 continue
+ if (.not.(s(3) .eq. 101))goto 23014
+ call putbak (61)
+ call putbak (60)
+ return
+23014 continue
+23013 continue
+ goto 23011
+23010 continue
+ if (.not.(s(2) .eq. 101 .and. s(3) .eq. 113))goto 23016
+ call putbak (61)
+ call putbak (61)
+ return
+23016 continue
+ if (.not.(s(2) .eq. 110 .and. s(3) .eq. 101))goto 23018
+ call putbak (61)
+ call putbak (33)
+ return
+23018 continue
+ if (.not.(s(2) .eq. 111 .and. s(3) .eq. 114))goto 23020
+ call putbak (124)
+ return
+23020 continue
+23019 continue
+23017 continue
+23011 continue
+23005 continue
+ goto 23003
+23002 continue
+ if (.not.(lenstr .eq. 5))goto 23022
+ if (.not.(s(2) .eq. 110 .and. s(3) .eq. 111 .and. s(4) .eq. 116))g
+ *oto 23024
+ call putbak (33)
+ return
+23024 continue
+ if (.not.(s(2) .eq. 97 .and. s(3) .eq. 110 .and. s(4) .eq. 100))go
+ *to 23026
+ call putbak (38)
+ return
+23026 continue
+23025 continue
+23022 continue
+23003 continue
+23000 continue
+ i=lenstr
+23028 if (.not.(i .gt. 0))goto 23030
+ call putbak (s(i))
+23029 i=i-1
+ goto 23028
+23030 continue
+ end
diff --git a/unix/boot/spp/rpp/rppfor/poicod.f b/unix/boot/spp/rpp/rppfor/poicod.f
new file mode 100644
index 00000000..834d1644
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/poicod.f
@@ -0,0 +1,172 @@
+ subroutine poicod (decla0)
+ integer decla0
+ 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 spoin0(9)
+ integer p1(16)
+ integer p2(18)
+ integer p3(18)
+C integer p4(18)
+C integer p5(18)
+C integer p6(25)
+ integer p4(16)
+ integer p5(16)
+ integer p6(13)
+ integer p7(25)
+ integer p8(16)
+ integer p9(61)
+ integer pa(18)
+
+C data spoin0(1)/105/,spoin0(2)/110/,spoin0(3)/116/,spoin0(4)/101/,s
+C *poin0(5)/103/,spoin0(6)/101/,spoin0(7)/114/,spoin0(8)/42/,spoin0(9
+C *)/56/,spoin0(10)/32/,spoin0(11)/-2/
+ data spoin0(1)/105/,spoin0(2)/110/,spoin0(3)/116/,spoin0(4)/101/,s
+ *poin0(5)/103/,spoin0(6)/101/,spoin0(7)/114/,spoin0(8)/32/,spoin0(9
+ *)/-2/
+
+ data p1(1)/108/,p1(2)/111/,p1(3)/103/,p1(4)/105/,p1(5)/99/,p1(6)/9
+ *7/,p1(7)/108/,p1(8)/32/,p1(9)/77/,p1(10)/101/,p1(11)/109/,p1(12)/9
+ *8/,p1(13)/40/,p1(14)/49/,p1(15)/41/,p1(16)/-2/
+ data p2(1)/105/,p2(2)/110/,p2(3)/116/,p2(4)/101/,p2(5)/103/,p2(6)/
+ *101/,p2(7)/114/,p2(8)/42/,p2(9)/50/,p2(10)/32/,p2(11)/77/,p2(12)/1
+ *01/,p2(13)/109/,p2(14)/99/,p2(15)/40/,p2(16)/49/,p2(17)/41/,p2(18)
+ */-2/
+ data p3(1)/105/,p3(2)/110/,p3(3)/116/,p3(4)/101/,p3(5)/103/,p3(6)/
+ *101/,p3(7)/114/,p3(8)/42/,p3(9)/50/,p3(10)/32/,p3(11)/77/,p3(12)/1
+ *01/,p3(13)/109/,p3(14)/115/,p3(15)/40/,p3(16)/49/,p3(17)/41/,p3(18
+ *)/-2/
+
+ data p4(1)/105/,p4(2)/110/,p4(3)/116/,p4(4)/101/,p4(5)/103/,p4(6)/
+ *101/,p4(7)/114/,p4(8)/32/,p4(9)/77/,p4(10)/101/,p4(11)/109/,p4(12)
+ */105/,p4(13)/40/,p4(14)/49/,p4(15)/41/,p4(16)/-2/
+ data p5(1)/105/,p5(2)/110/,p5(3)/116/,p5(4)/101/,p5(5)/103/,p5(6)/
+ *101/,p5(7)/114/,p5(8)/32/,p5(9)/77/,p5(10)/101/,p5(11)/109/,p5(12)
+ */108/,p5(13)/40/,p5(14)/49/,p5(15)/41/,p5(16)/-2/
+
+C data p4(1)/105/,p4(2)/110/,p4(3)/116/,p4(4)/101/,p4(5)/103/,p4(6)/
+C *101/,p4(7)/114/,p4(8)/42/,p4(9)/56/,p4(10)/32/,p4(11)/77/,p4(12)/1
+C *01/,p4(13)/109/,p4(14)/105/,p4(15)/40/,p4(16)/49/,p4(17)/41/,p4(18
+C *)/-2/
+C data p5(1)/105/,p5(2)/110/,p5(3)/116/,p5(4)/101/,p5(5)/103/,p5(6)/
+C *101/,p5(7)/114/,p5(8)/42/,p5(9)/56/,p5(10)/32/,p5(11)/77/,p5(12)/1
+C *01/,p5(13)/109/,p5(14)/108/,p5(15)/40/,p5(16)/49/,p5(17)/41/,p5(18
+C *)/-2/
+C data p6(1)/100/,p6(2)/111/,p6(3)/117/,p6(4)/98/,p6(5)/108/,p6(6)/1
+C *01/,p6(7)/32/,p6(8)/112/,p6(9)/114/,p6(10)/101/,p6(11)/99/,p6(12)/
+C *105/,p6(13)/115/,p6(14)/105/,p6(15)/111/,p6(16)/110/,p6(17)/32/,p6
+C *(18)/77/,p6(19)/101/,p6(20)/109/,p6(21)/114/,p6(22)/40/,p6(23)/49/
+C *,p6(24)/41/,p6(25)/-2/
+
+ data p6(1)/114/,p6(2)/101/,p6(3)/97/,p6(4)/108/,p6(5)/32/,p6(6)/77
+ */,p6(7)/101/,p6(8)/109/,p6(9)/114/,p6(10)/40/,p6(11)/49/,p6(12)/41
+ */,p6(13)/-2/
+
+ data p7(1)/100/,p7(2)/111/,p7(3)/117/,p7(4)/98/,p7(5)/108/,p7(6)/1
+ *01/,p7(7)/32/,p7(8)/112/,p7(9)/114/,p7(10)/101/,p7(11)/99/,p7(12)/
+ *105/,p7(13)/115/,p7(14)/105/,p7(15)/111/,p7(16)/110/,p7(17)/32/,p7
+ *(18)/77/,p7(19)/101/,p7(20)/109/,p7(21)/100/,p7(22)/40/,p7(23)/49/
+ *,p7(24)/41/,p7(25)/-2/
+ data p8(1)/99/,p8(2)/111/,p8(3)/109/,p8(4)/112/,p8(5)/108/,p8(6)/1
+ *01/,p8(7)/120/,p8(8)/32/,p8(9)/77/,p8(10)/101/,p8(11)/109/,p8(12)/
+ *120/,p8(13)/40/,p8(14)/49/,p8(15)/41/,p8(16)/-2/
+ data p9(1)/101/,p9(2)/113/,p9(3)/117/,p9(4)/105/,p9(5)/118/,p9(6)/
+ *97/,p9(7)/108/,p9(8)/101/,p9(9)/110/,p9(10)/99/,p9(11)/101/,p9(12)
+ */32/,p9(13)/40/,p9(14)/77/,p9(15)/101/,p9(16)/109/,p9(17)/98/,p9(1
+ *8)/44/,p9(19)/32/,p9(20)/77/,p9(21)/101/,p9(22)/109/,p9(23)/99/,p9
+ *(24)/44/,p9(25)/32/,p9(26)/77/,p9(27)/101/,p9(28)/109/,p9(29)/115/
+ *,p9(30)/44/,p9(31)/32/,p9(32)/77/,p9(33)/101/,p9(34)/109/,p9(35)/1
+ *05/,p9(36)/44/,p9(37)/32/,p9(38)/77/,p9(39)/101/,p9(40)/109/,p9(41
+ *)/108/,p9(42)/44/,p9(43)/32/,p9(44)/77/,p9(45)/101/,p9(46)/109/,p9
+ *(47)/114/,p9(48)/44/,p9(49)/32/,p9(50)/77/,p9(51)/101/,p9(52)/109/
+ *,p9(53)/100/,p9(54)/44/,p9(55)/32/,p9(56)/77/,p9(57)/101/,p9(58)/1
+ *09/,p9(59)/120/,p9(60)/41/,p9(61)/-2/
+ data pa(1)/99/,pa(2)/111/,pa(3)/109/,pa(4)/109/,pa(5)/111/,pa(6)/1
+ *10/,pa(7)/32/,pa(8)/47/,pa(9)/77/,pa(10)/101/,pa(11)/109/,pa(12)/4
+ *7/,pa(13)/32/,pa(14)/77/,pa(15)/101/,pa(16)/109/,pa(17)/100/,pa(18
+ *)/-2/
+ if (.not.(memflg .eq. 0))goto 23000
+ call poidec (p1)
+ call poidec (p2)
+ call poidec (p3)
+ call poidec (p4)
+ call poidec (p5)
+ call poidec (p6)
+ call poidec (p7)
+ call poidec (p8)
+ call poidec (p9)
+ call poidec (pa)
+ memflg = 1
+23000 continue
+ if (.not.(decla0 .eq. 1))goto 23002
+ call outtab
+ call outstr (spoin0)
+23002 continue
+ end
+ subroutine poidec (str)
+ integer str
+ call outtab
+ call outstr (str)
+ call outdon
+ end
+c logic0 logical_column
+c decla0 declare_variable
+c spoin0 spointer
diff --git a/unix/boot/spp/rpp/rppfor/push.f b/unix/boot/spp/rpp/rppfor/push.f
new file mode 100644
index 00000000..2329f6c5
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/push.f
@@ -0,0 +1,9 @@
+ integer function push (ep, argstk, ap)
+ integer ap, argstk (100), ep
+ if (.not.(ap .gt. 100))goto 23000
+ call baderr (19Harg stack overflow.)
+23000 continue
+ argstk (ap) = ep
+ push = ap + 1
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/putbak.f b/unix/boot/spp/rpp/rppfor/putbak.f
new file mode 100644
index 00000000..b4252a1e
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/putbak.f
@@ -0,0 +1,73 @@
+ subroutine putbak (c)
+ integer c
+ 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
+ if (.not.(bp .le. 1))goto 23000
+ call baderr (32Htoo many characters pushed back.)
+ goto 23001
+23000 continue
+ bp = bp - 1
+ buf (bp) = c
+23001 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/putchr.f b/unix/boot/spp/rpp/rppfor/putchr.f
new file mode 100644
index 00000000..b502f58a
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/putchr.f
@@ -0,0 +1,71 @@
+ subroutine putchr (c)
+ integer c
+ 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
+ if (.not.(ep .gt. 500))goto 23000
+ call baderr (26Hevaluation stack overflow.)
+23000 continue
+ evalst (ep) = c
+ ep = ep + 1
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/puttok.f b/unix/boot/spp/rpp/rppfor/puttok.f
new file mode 100644
index 00000000..41d4df64
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/puttok.f
@@ -0,0 +1,11 @@
+ subroutine puttok (str)
+ integer str (100)
+ integer i
+ i = 1
+23000 if (.not.(str (i) .ne. -2))goto 23002
+ call putchr (str (i))
+23001 i = i + 1
+ goto 23000
+23002 continue
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/ratfor.f b/unix/boot/spp/rpp/rppfor/ratfor.f
new file mode 100644
index 00000000..7891bd68
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/ratfor.f
@@ -0,0 +1,128 @@
+ subroutine ratfor
+ 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 i, n
+ integer getarg, rfopen
+ integer arg (30)
+ integer defns(1)
+ data defns(1)/-2/
+ call initkw
+ if (.not.(defns (1) .ne. -2))goto 23000
+ infile (1) = rfopen(defns, 1)
+ if (.not.(infile (1) .eq. -3))goto 23002
+ call remark (37Hcan't open standard definitions file.)
+ goto 23003
+23002 continue
+ call finit
+ call parse
+ call rfclos(infile (1))
+23003 continue
+23000 continue
+ n = 1
+ i=1
+23004 if (.not.(getarg(i,arg,30) .ne. -1))goto 23006
+ n = n + 1
+ call query (37Husage: ratfor [-g] [files] >outfile.)
+ if (.not.(arg(1) .eq. 45 .and. arg(2) .eq. 103 .and. arg(3) .eq. -
+ *2))goto 23007
+ dbgout = 1
+ goto 23005
+23007 continue
+ if (.not.(arg(1) .eq. 45 .and. arg(2) .eq. -2))goto 23009
+ infile(1) = 0
+ call finit
+ goto 23010
+23009 continue
+ infile(1) = rfopen(arg, 1)
+ if (.not.(infile(1) .eq. -3))goto 23011
+ call cant (arg)
+ goto 23012
+23011 continue
+ call finit
+ call scopy (arg, 1, fnames, 1)
+ fnamp=1
+23013 if (.not.(fnames(fnamp) .ne. -2))goto 23015
+ if (.not.(fnames(fnamp) .eq. 46 .and. fnames(fnamp+1) .eq. 114))go
+ *to 23016
+ fnames(fnamp+1) = 120
+23016 continue
+23014 fnamp=fnamp+1
+ goto 23013
+23015 continue
+23012 continue
+23010 continue
+23008 continue
+ call parse
+ if (.not.(infile (1) .ne. 0))goto 23018
+ call rfclos(infile (1))
+23018 continue
+23005 i=i+1
+ goto 23004
+23006 continue
+ if (.not.(n .eq. 1))goto 23020
+ infile (1) = 0
+ call finit
+ call parse
+23020 continue
+ call lndict
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/relate.f b/unix/boot/spp/rpp/rppfor/relate.f
new file mode 100644
index 00000000..36c3e196
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/relate.f
@@ -0,0 +1,66 @@
+ subroutine relate (token, last)
+ integer token (100)
+ integer last
+ integer ngetch
+ integer length
+ if (.not.(ngetch (token (2)) .ne. 61))goto 23000
+ call putbak (token (2))
+ token (3) = 116
+ goto 23001
+23000 continue
+ token (3) = 101
+23001 continue
+ token (4) = 46
+ token (5) = -2
+ token (6) = -2
+ if (.not.(token (1) .eq. 62))goto 23002
+ token (2) = 103
+ goto 23003
+23002 continue
+ if (.not.(token (1) .eq. 60))goto 23004
+ token (2) = 108
+ goto 23005
+23004 continue
+ if (.not.(token (1) .eq. 126 .or. token (1) .eq. 33 .or. token (1)
+ * .eq. 94 .or. token (1) .eq. 126))goto 23006
+ if (.not.(token (2) .ne. 61))goto 23008
+ token (3) = 111
+ token (4) = 116
+ token (5) = 46
+23008 continue
+ token (2) = 110
+ goto 23007
+23006 continue
+ if (.not.(token (1) .eq. 61))goto 23010
+ if (.not.(token (2) .ne. 61))goto 23012
+ token (2) = -2
+ last = 1
+ return
+23012 continue
+ token (2) = 101
+ token (3) = 113
+ goto 23011
+23010 continue
+ if (.not.(token (1) .eq. 38))goto 23014
+ token (2) = 97
+ token (3) = 110
+ token (4) = 100
+ token (5) = 46
+ goto 23015
+23014 continue
+ if (.not.(token (1) .eq. 124))goto 23016
+ token (2) = 111
+ token (3) = 114
+ goto 23017
+23016 continue
+ token (2) = -2
+23017 continue
+23015 continue
+23011 continue
+23007 continue
+23005 continue
+23003 continue
+ token (1) = 46
+ last = length (token)
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/repcod.f b/unix/boot/spp/rpp/rppfor/repcod.f
new file mode 100644
index 00000000..3279d58a
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/repcod.f
@@ -0,0 +1,10 @@
+ subroutine repcod (lab)
+ integer lab
+ integer labgen
+ call outcon (0)
+ lab = labgen (3)
+ call outcon (lab)
+ lab = lab + 1
+ call indent (1)
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/retcod.f b/unix/boot/spp/rpp/rppfor/retcod.f
new file mode 100644
index 00000000..1aa43aee
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/retcod.f
@@ -0,0 +1,88 @@
+ subroutine retcod
+ integer token (100), t
+ integer gnbtok
+ 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
+ t = gnbtok (token, 100)
+ if (.not.(t .ne. 10 .and. t .ne. 59 .and. t .ne. 125))goto 23000
+ call pbstr (token)
+ call outtab
+ call scopy (fcname, 1, token, 1)
+ call squash (token)
+ call outstr (token)
+ call outch (32)
+ call outch (61)
+ call outch (32)
+ call eatup
+ call outdon
+ goto 23001
+23000 continue
+ if (.not.(t .eq. 125))goto 23002
+ call pbstr (token)
+23002 continue
+23001 continue
+ call outtab
+ call ogotos (retlab, 0)
+ xfer = 1
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/sdupl.f b/unix/boot/spp/rpp/rppfor/sdupl.f
new file mode 100644
index 00000000..0d35237a
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/sdupl.f
@@ -0,0 +1,20 @@
+ integer function sdupl (str)
+ integer str (100)
+ integer mem( 60000)
+ common/cdsmem/mem
+ integer i
+ integer length
+ integer j
+ integer dsget
+ j = dsget (length (str) + 1)
+ sdupl = j
+ i = 1
+23000 if (.not.(str (i) .ne. -2))goto 23002
+ mem (j) = str (i)
+ j = j + 1
+23001 i = i + 1
+ goto 23000
+23002 continue
+ mem (j) = -2
+ return
+ end
diff --git a/unix/boot/spp/rpp/rppfor/skpblk.f b/unix/boot/spp/rpp/rppfor/skpblk.f
new file mode 100644
index 00000000..47c2b0aa
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/skpblk.f
@@ -0,0 +1,73 @@
+ subroutine skpblk
+ 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 c
+ integer ngetch
+ c = ngetch (c)
+23000 if (.not.(c .eq. 32 .or. c .eq. 9))goto 23002
+23001 c = ngetch (c)
+ goto 23000
+23002 continue
+ call putbak (c)
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/squash.f b/unix/boot/spp/rpp/rppfor/squash.f
new file mode 100644
index 00000000..d0e654f0
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/squash.f
@@ -0,0 +1,104 @@
+ subroutine squash (id)
+ integer id(100)
+ integer junk, i, j
+ integer lookup, ludef
+ integer newid(100), recdid(100)
+ 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
+ if (.not.(body .eq. 1 .and. errtbl .ne. 0 .and. ername .eq. 0))got
+ *o 23000
+ if (.not.(lookup (id, junk, errtbl) .eq. 1))goto 23002
+ ername = 1
+23002 continue
+23000 continue
+ j = 1
+ i=1
+23004 if (.not.(id(i) .ne. -2))goto 23006
+ if (.not.(((65.le.id(i).and.id(i).le.90).or.(97.le.id(i).and.id(i)
+ *.le.122)) .or. (48.le.id(i).and.id(i).le.57)))goto 23007
+ newid(j) = id(i)
+ j = j + 1
+23007 continue
+23005 i=i+1
+ goto 23004
+23006 continue
+ newid(j) = -2
+ if (.not.(i-1 .lt. 6 .and. i .eq. j))goto 23009
+ return
+23009 continue
+ if (.not.(lookup (id, junk, fkwtbl) .eq. 1))goto 23011
+ return
+23011 continue
+ if (.not.(ludef (id, recdid, namtbl) .eq. 1))goto 23013
+ call scopy (recdid, 1, id, 1)
+ return
+23013 continue
+ call mapid (newid)
+ if (.not.(lookup (newid, junk, gentbl) .eq. 1))goto 23015
+ call synerr (39HWarning: identifier mapping not unique.)
+ call uniqid (newid)
+23015 continue
+ call entdef (newid, id, gentbl)
+ call entdef (id, newid, namtbl)
+ call scopy (newid, 1, id, 1)
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/strdcl.f b/unix/boot/spp/rpp/rppfor/strdcl.f
new file mode 100644
index 00000000..5ebcaeba
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/strdcl.f
@@ -0,0 +1,170 @@
+ subroutine strdcl
+ 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 t, token (100), dchar (100)
+ integer gnbtok
+ integer i, j, k, n, len
+ integer length, ctoi, lex
+ integer char(11)
+ integer dat(6)
+ integer eoss(3)
+ data char(1)/105/,char(2)/110/,char(3)/116/,char(4)/101/,char(5)/1
+ *03/,char(6)/101/,char(7)/114/,char(8)/42/,char(9)/50/,char(10)/47/
+ *,char(11)/-2/
+ data dat(1)/100/,dat(2)/97/,dat(3)/116/,dat(4)/97/,dat(5)/32/,dat(
+ *6)/-2/
+ data eoss(1)/48/,eoss(2)/47/,eoss(3)/-2/
+ t = gnbtok (token, 100)
+ if (.not.(t .ne. -9))goto 23000
+ call synerr (21Hmissing string token.)
+23000 continue
+ call squash (token)
+ call outtab
+ call pbstr (char)
+23002 continue
+ t = gnbtok (dchar, 100)
+ if (.not.(t .eq. 47))goto 23005
+ goto 23004
+23005 continue
+ call outstr (dchar)
+23003 goto 23002
+23004 continue
+ call outch (32)
+ call outstr (token)
+ call addstr (token, sbuf, sbp, 2048)
+ call addchr (-2, sbuf, sbp, 2048)
+ if (.not.(gnbtok (token, 100) .ne. 40))goto 23007
+ len = length (token) + 1
+ if (.not.(token (1) .eq. 39 .or. token (1) .eq. 34))goto 23009
+ len = len - 2
+23009 continue
+ goto 23008
+23007 continue
+ t = gnbtok (token, 100)
+ i = 1
+ len = ctoi (token, i)
+ if (.not.(token (i) .ne. -2))goto 23011
+ call synerr (20Hinvalid string size.)
+23011 continue
+ if (.not.(gnbtok (token, 100) .ne. 41))goto 23013
+ call synerr (20Hmissing right paren.)
+ goto 23014
+23013 continue
+ t = gnbtok (token, 100)
+23014 continue
+23008 continue
+ call outch (40)
+ call outnum (len)
+ call outch (41)
+ call outdon
+ if (.not.(token (1) .eq. 39 .or. token (1) .eq. 34))goto 23015
+ len = length (token)
+ token (len) = -2
+ call addstr (token (2), sbuf, sbp, 2048)
+ goto 23016
+23015 continue
+ call addstr (token, sbuf, sbp, 2048)
+23016 continue
+ call addchr (-2, sbuf, sbp, 2048)
+ t = lex (token)
+ call pbstr (token)
+ if (.not.(t .ne. -75))goto 23017
+ i = 1
+23019 if (.not.(i .lt. sbp))goto 23021
+ call outtab
+ call outstr (dat)
+ k = 1
+ j = i + length (sbuf (i)) + 1
+23022 continue
+ if (.not.(k .gt. 1))goto 23025
+ call outch (44)
+23025 continue
+ call outstr (sbuf (i))
+ call outch (40)
+ call outnum (k)
+ call outch (41)
+ call outch (47)
+ if (.not.(sbuf (j) .eq. -2))goto 23027
+ goto 23024
+23027 continue
+ n = sbuf (j)
+ call outnum (n)
+ call outch (47)
+ k = k + 1
+23023 j = j + 1
+ goto 23022
+23024 continue
+ call pbstr (eoss)
+23029 continue
+ t = gnbtok (token, 100)
+ call outstr (token)
+23030 if (.not.(t .eq. 47))goto 23029
+23031 continue
+ call outdon
+23020 i = j + 1
+ goto 23019
+23021 continue
+ sbp = 1
+23017 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/swcode.f b/unix/boot/spp/rpp/rppfor/swcode.f
new file mode 100644
index 00000000..22617fdc
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/swcode.f
@@ -0,0 +1,99 @@
+ subroutine swcode (lab)
+ integer lab
+ 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 tok (100)
+ integer labgen, gnbtok
+ lab = labgen (2)
+ swvnum = swvnum + 1
+ swvlev = swvlev + 1
+ if (.not.(swvlev .gt. 10))goto 23000
+ call baderr (27Hswitches nested too deeply.)
+23000 continue
+ swvstk(swvlev) = swvnum
+ if (.not.(swlast + 3 .gt. 1000))goto 23002
+ call baderr (22Hswitch table overflow.)
+23002 continue
+ swstak (swlast) = swtop
+ swstak (swlast + 1) = 0
+ swstak (swlast + 2) = 0
+ swtop = swlast
+ swlast = swlast + 3
+ xfer = 0
+ call outtab
+ call swvar (swvnum)
+ call outch (61)
+ call balpar
+ call outdwe
+ call outgo (lab)
+ call indent (1)
+ xfer = 1
+23004 if (.not.(gnbtok (tok, 100) .eq. 10))goto 23005
+ goto 23004
+23005 continue
+ if (.not.(tok (1) .ne. 123))goto 23006
+ call synerr (39Hmissing left brace in switch statement.)
+ call pbstr (tok)
+23006 continue
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/swend.f b/unix/boot/spp/rpp/rppfor/swend.f
new file mode 100644
index 00000000..02070f32
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/swend.f
@@ -0,0 +1,187 @@
+ subroutine swend (lab)
+ integer lab
+ 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 lb, ub, n, i, j, swn
+ integer sif(5)
+ integer slt(10)
+ integer sgt(5)
+ integer sgoto(7)
+ integer seq(5)
+ integer sge(5)
+ integer sle(5)
+ integer sand(6)
+ data sif(1)/105/,sif(2)/102/,sif(3)/32/,sif(4)/40/,sif(5)/-2/
+ data slt(1)/46/,slt(2)/108/,slt(3)/116/,slt(4)/46/,slt(5)/49/,slt(
+ *6)/46/,slt(7)/111/,slt(8)/114/,slt(9)/46/,slt(10)/-2/
+ data sgt(1)/46/,sgt(2)/103/,sgt(3)/116/,sgt(4)/46/,sgt(5)/-2/
+ data sgoto(1)/103/,sgoto(2)/111/,sgoto(3)/116/,sgoto(4)/111/,sgoto
+ *(5)/32/,sgoto(6)/40/,sgoto(7)/-2/
+ data seq(1)/46/,seq(2)/101/,seq(3)/113/,seq(4)/46/,seq(5)/-2/
+ data sge(1)/46/,sge(2)/103/,sge(3)/101/,sge(4)/46/,sge(5)/-2/
+ data sle(1)/46/,sle(2)/108/,sle(3)/101/,sle(4)/46/,sle(5)/-2/
+ data sand(1)/46/,sand(2)/97/,sand(3)/110/,sand(4)/100/,sand(5)/46/
+ *,sand(6)/-2/
+ swn = swvstk(swvlev)
+ swvlev = max0(0, swvlev - 1)
+ lb = swstak (swtop + 3)
+ ub = swstak (swlast - 2)
+ n = swstak (swtop + 1)
+ call outgo (lab + 1)
+ if (.not.(swstak (swtop + 2) .eq. 0))goto 23000
+ swstak (swtop + 2) = lab + 1
+23000 continue
+ xfer = 0
+ call indent (-1)
+ call outcon (lab)
+ call indent (1)
+ if (.not.(n .ge. 3 .and. ub - lb + 1 .lt. 2 * n))goto 23002
+ if (.not.(lb .ne. 1))goto 23004
+ call outtab
+ call swvar (swn)
+ call outch (61)
+ call swvar (swn)
+ if (.not.(lb .lt. 1))goto 23006
+ call outch (43)
+23006 continue
+ call outnum (-lb + 1)
+ call outdon
+23004 continue
+ if (.not.(swinrg .eq. 0))goto 23008
+ call outtab
+ call outstr (sif)
+ call swvar (swn)
+ call outstr (slt)
+ call swvar (swn)
+ call outstr (sgt)
+ call outnum (ub - lb + 1)
+ call outch (41)
+ call outch (32)
+ call outgo (swstak (swtop + 2))
+23008 continue
+ call outtab
+ call outstr (sgoto)
+ j = lb
+ i = swtop + 3
+23010 if (.not.(i .lt. swlast))goto 23012
+23013 if (.not.(j .lt. swstak (i)))goto 23015
+ call outnum (swstak (swtop + 2))
+ call outch (44)
+23014 j = j + 1
+ goto 23013
+23015 continue
+ j = swstak (i + 1) - swstak (i)
+23016 if (.not.(j .ge. 0))goto 23018
+ call outnum (swstak (i + 2))
+23017 j = j - 1
+ goto 23016
+23018 continue
+ j = swstak (i + 1) + 1
+ if (.not.(i .lt. swlast - 3))goto 23019
+ call outch (44)
+23019 continue
+23011 i = i + 3
+ goto 23010
+23012 continue
+ call outch (41)
+ call outch (44)
+ call swvar (swn)
+ call outdon
+ goto 23003
+23002 continue
+ if (.not.(n .gt. 0))goto 23021
+ i = swtop + 3
+23023 if (.not.(i .lt. swlast))goto 23025
+ call outtab
+ call outstr (sif)
+ call swvar (swn)
+ if (.not.(swstak (i) .eq. swstak (i+1)))goto 23026
+ call outstr (seq)
+ call outnum (swstak (i))
+ goto 23027
+23026 continue
+ call outstr (sge)
+ call outnum (swstak (i))
+ call outstr (sand)
+ call swvar (swn)
+ call outstr (sle)
+ call outnum (swstak (i + 1))
+23027 continue
+ call outch (41)
+ call outch (32)
+ call outgo (swstak (i + 2))
+23024 i = i + 3
+ goto 23023
+23025 continue
+ if (.not.(lab + 1 .ne. swstak (swtop + 2)))goto 23028
+ call outgo (swstak (swtop + 2))
+23028 continue
+23021 continue
+23003 continue
+ call indent (-1)
+ call outcon (lab + 1)
+ swlast = swtop
+ swtop = swstak (swtop)
+ swinrg = 0
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/swvar.f b/unix/boot/spp/rpp/rppfor/swvar.f
new file mode 100644
index 00000000..948e43ab
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/swvar.f
@@ -0,0 +1,21 @@
+ subroutine swvar (lab)
+ integer lab, i, labnum, ndigi0
+ call outch (115)
+ call outch (119)
+ labnum = lab
+ ndigi0=0
+23000 if (.not.(labnum .gt. 0))goto 23002
+ ndigi0 = ndigi0 + 1
+23001 labnum=labnum/10
+ goto 23000
+23002 continue
+ i=3
+23003 if (.not.(i .le. 6 - ndigi0))goto 23005
+ call outch (48)
+23004 i=i+1
+ goto 23003
+23005 continue
+ call outnum (lab)
+ return
+ end
+c ndigi0 ndigits
diff --git a/unix/boot/spp/rpp/rppfor/synerr.f b/unix/boot/spp/rpp/rppfor/synerr.f
new file mode 100644
index 00000000..818171e5
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/synerr.f
@@ -0,0 +1,98 @@
+ subroutine synerr (msg)
+ integer msg
+ 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 lc (20)
+ integer i, junk
+ integer itoc
+ integer of(5)
+ integer errmsg(100)
+ data of(1)/32/,of(2)/111/,of(3)/102/,of(4)/32/,of(5)/-2/
+ data errmsg(1)/69/,errmsg(2)/114/,errmsg(3)/114/,errmsg(4)/111/,er
+ *rmsg(5)/114/,errmsg(6)/32/,errmsg(7)/111/,errmsg(8)/110/,errmsg(9)
+ */32/,errmsg(10)/108/,errmsg(11)/105/,errmsg(12)/110/,errmsg(13)/10
+ *1/,errmsg(14)/32/,errmsg(15)/-2/
+ call putlin (errmsg, 2)
+ if (.not.(level .ge. 1))goto 23000
+ i = level
+ goto 23001
+23000 continue
+ i = 1
+23001 continue
+ junk = itoc (linect (i), lc, 20)
+ call putlin (lc, 2)
+ i = fnamp - 1
+23002 if (.not.(i .ge. 1))goto 23004
+ if (.not.(fnames (i - 1) .eq. -2 .or. i .eq. 1))goto 23005
+ call putlin (of, 2)
+ call putlin (fnames (i), 2)
+ goto 23004
+23005 continue
+23003 i = i - 1
+ goto 23002
+23004 continue
+ call putch (58, 2)
+ call putch (32, 2)
+ call remark (msg)
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/thenco.f b/unix/boot/spp/rpp/rppfor/thenco.f
new file mode 100644
index 00000000..bb6060d7
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/thenco.f
@@ -0,0 +1,90 @@
+ subroutine thenco (tok, lab)
+ integer lab, tok
+ 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 siferr(20)
+ integer sifno0(15)
+ data siferr(1)/105/,siferr(2)/102/,siferr(3)/32/,siferr(4)/40/,sif
+ *err(5)/46/,siferr(6)/110/,siferr(7)/111/,siferr(8)/116/,siferr(9)/
+ *46/,siferr(10)/120/,siferr(11)/101/,siferr(12)/114/,siferr(13)/112
+ */,siferr(14)/111/,siferr(15)/112/,siferr(16)/40/,siferr(17)/41/,si
+ *ferr(18)/41/,siferr(19)/32/,siferr(20)/-2/
+ data sifno0(1)/105/,sifno0(2)/102/,sifno0(3)/32/,sifno0(4)/40/,sif
+ *no0(5)/120/,sifno0(6)/101/,sifno0(7)/114/,sifno0(8)/112/,sifno0(9)
+ */111/,sifno0(10)/112/,sifno0(11)/40/,sifno0(12)/41/,sifno0(13)/41/
+ *,sifno0(14)/32/,sifno0(15)/-2/
+ xfer = 0
+ call outnum (lab+2)
+ call outtab
+ if (.not.(tok .eq. -98))goto 23000
+ call outstr (siferr)
+ goto 23001
+23000 continue
+ call outstr (sifno0)
+23001 continue
+ call outgo (lab)
+ esp = esp - 1
+ call indent (1)
+ return
+ end
+c sifno0 sifnoerr
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/ulstal.f b/unix/boot/spp/rpp/rppfor/ulstal.f
new file mode 100644
index 00000000..fe59090b
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/ulstal.f
@@ -0,0 +1,69 @@
+ subroutine ulstal (name, defn)
+ integer name (100), defn (100)
+ 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
+ call entdef (name, defn, deftbl)
+ call upper (name)
+ call entdef (name, defn, deftbl)
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/uniqid.f b/unix/boot/spp/rpp/rppfor/uniqid.f
new file mode 100644
index 00000000..d843f0eb
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/uniqid.f
@@ -0,0 +1,116 @@
+ subroutine uniqid (id)
+ integer id (100)
+ integer i, j, junk, idchl
+ external index
+ integer lookup, index, length
+ integer start (6)
+ 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 idch(37)
+ data idch(1)/48/,idch(2)/49/,idch(3)/50/,idch(4)/51/,idch(5)/52/,i
+ *dch(6)/53/,idch(7)/54/,idch(8)/55/,idch(9)/56/,idch(10)/57/,idch(1
+ *1)/97/,idch(12)/98/,idch(13)/99/,idch(14)/100/,idch(15)/101/,idch(
+ *16)/102/,idch(17)/103/,idch(18)/104/,idch(19)/105/,idch(20)/106/,i
+ *dch(21)/107/,idch(22)/108/,idch(23)/109/,idch(24)/110/,idch(25)/11
+ *1/,idch(26)/112/,idch(27)/113/,idch(28)/114/,idch(29)/115/,idch(30
+ *)/116/,idch(31)/117/,idch(32)/118/,idch(33)/119/,idch(34)/120/,idc
+ *h(35)/121/,idch(36)/122/,idch(37)/-2/
+ i = 1
+23000 if (.not.(id (i) .ne. -2))goto 23002
+23001 i = i + 1
+ goto 23000
+23002 continue
+23003 if (.not.(i .le. 6))goto 23005
+ id (i) = 48
+23004 i = i + 1
+ goto 23003
+23005 continue
+ i = 6 + 1
+ id (i) = -2
+ id (i - 1) = 48
+ if (.not.(lookup (id, junk, gentbl) .eq. 1))goto 23006
+ idchl = length (idch)
+ i = 2
+23008 if (.not.(i .lt. 6))goto 23010
+ start (i) = id (i)
+23009 i = i + 1
+ goto 23008
+23010 continue
+23011 continue
+ i = 6 - 1
+23014 if (.not.(i .gt. 1))goto 23016
+ j = mod (index (idch, id (i)), idchl) + 1
+ id (i) = idch (j)
+ if (.not.(id (i) .ne. start (i)))goto 23017
+ goto 23016
+23017 continue
+23015 i = i - 1
+ goto 23014
+23016 continue
+ if (.not.(i .eq. 1))goto 23019
+ call baderr (30Hcannot make identifier unique.)
+23019 continue
+23012 if (.not.(lookup (id, junk, gentbl) .eq. 0))goto 23011
+23013 continue
+23006 continue
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/unstak.f b/unix/boot/spp/rpp/rppfor/unstak.f
new file mode 100644
index 00000000..c602dc06
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/unstak.f
@@ -0,0 +1,58 @@
+ subroutine unstak (sp, lextyp, labval, token)
+ integer labval(100), lextyp(100)
+ integer sp, token, type
+23000 if (.not.(sp .gt. 1))goto 23002
+ type = lextyp(sp)
+ if (.not.((type .eq. -98 .or. type .eq. -97) .and. token .eq. -86)
+ *)goto 23003
+ goto 23002
+23003 continue
+ if (.not.(type .eq. -99 .or. type .eq. -98 .or. type .eq. -97))got
+ *o 23005
+ type = 999
+23005 continue
+ if (.not.(type .eq. 123 .or. type .eq. -92))goto 23007
+ goto 23002
+23007 continue
+ if (.not.(type .eq. 999 .and. token .eq. -87))goto 23009
+ goto 23002
+23009 continue
+ if (.not.(type .eq. 999))goto 23011
+ call indent (-1)
+ call outcon (labval(sp))
+ goto 23012
+23011 continue
+ if (.not.(type .eq. -87 .or. type .eq. -72))goto 23013
+ if (.not.(sp .gt. 2))goto 23015
+ sp = sp - 1
+23015 continue
+ if (.not.(type .ne. -72))goto 23017
+ call indent (-1)
+23017 continue
+ call outcon (labval(sp) + 1)
+ goto 23014
+23013 continue
+ if (.not.(type .eq. -96))goto 23019
+ call dostat (labval(sp))
+ goto 23020
+23019 continue
+ if (.not.(type .eq. -95))goto 23021
+ call whiles (labval(sp))
+ goto 23022
+23021 continue
+ if (.not.(type .eq. -94))goto 23023
+ call fors (labval(sp))
+ goto 23024
+23023 continue
+ if (.not.(type .eq. -93))goto 23025
+ call untils (labval(sp), token)
+23025 continue
+23024 continue
+23022 continue
+23020 continue
+23014 continue
+23012 continue
+23001 sp=sp-1
+ goto 23000
+23002 continue
+ end
diff --git a/unix/boot/spp/rpp/rppfor/untils.f b/unix/boot/spp/rpp/rppfor/untils.f
new file mode 100644
index 00000000..050e25fb
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/untils.f
@@ -0,0 +1,80 @@
+ subroutine untils (lab, token)
+ integer lab, token
+ 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 ptoken (100)
+ integer junk
+ integer lex
+ xfer = 0
+ call outnum (lab)
+ if (.not.(token .eq. -70))goto 23000
+ junk = lex (ptoken)
+ call ifgo (lab - 1)
+ goto 23001
+23000 continue
+ call outgo (lab - 1)
+23001 continue
+ call indent (-1)
+ call outcon (lab + 1)
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/whilec.f b/unix/boot/spp/rpp/rppfor/whilec.f
new file mode 100644
index 00000000..1f830d00
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/whilec.f
@@ -0,0 +1,72 @@
+ subroutine whilec (lab)
+ integer lab
+ integer labgen
+ 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
+ call outcon (0)
+ lab = labgen (2)
+ call outnum (lab)
+ call ifgo (lab + 1)
+ call indent (1)
+ return
+ end
+c logic0 logical_column
diff --git a/unix/boot/spp/rpp/rppfor/whiles.f b/unix/boot/spp/rpp/rppfor/whiles.f
new file mode 100644
index 00000000..baa84531
--- /dev/null
+++ b/unix/boot/spp/rpp/rppfor/whiles.f
@@ -0,0 +1,69 @@
+ subroutine whiles (lab)
+ integer lab
+ 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
+ call outgo (lab)
+ call indent (-1)
+ call outcon (lab + 1)
+ return
+ end
+c logic0 logical_column