aboutsummaryrefslogtreecommitdiff
path: root/unix/boot/spp/rpp/rpprat/gocode.r
diff options
context:
space:
mode:
Diffstat (limited to 'unix/boot/spp/rpp/rpprat/gocode.r')
-rw-r--r--unix/boot/spp/rpp/rpprat/gocode.r25
1 files changed, 25 insertions, 0 deletions
diff --git a/unix/boot/spp/rpp/rpprat/gocode.r b/unix/boot/spp/rpp/rpprat/gocode.r
new file mode 100644
index 00000000..26e201c4
--- /dev/null
+++ b/unix/boot/spp/rpp/rpprat/gocode.r
@@ -0,0 +1,25 @@
+include defs
+
+# GOCODE - generate code for goto statement
+
+subroutine gocode
+
+character token (MAXTOK), t
+character gnbtok
+integer ctoi, i
+include COMMON_BLOCKS
+
+ t = gnbtok (token, MAXTOK)
+ if (t != DIGIT)
+ call synerr ("Invalid label for goto.")
+ else {
+ call outtab
+ i = 1
+ call ogotos (ctoi(token,i), NO)
+ }
+ xfer = YES
+
+ for (t=gnbtok(token,MAXTOK); t == NEWLINE; t=gnbtok(token,MAXTOK))
+ ;
+ call pbstr (token)
+end