aboutsummaryrefslogtreecommitdiff
path: root/unix/boot/spp/rpp/rpprat/endcod.r
diff options
context:
space:
mode:
Diffstat (limited to 'unix/boot/spp/rpp/rpprat/endcod.r')
-rw-r--r--unix/boot/spp/rpp/rpprat/endcod.r36
1 files changed, 36 insertions, 0 deletions
diff --git a/unix/boot/spp/rpp/rpprat/endcod.r b/unix/boot/spp/rpp/rpprat/endcod.r
new file mode 100644
index 00000000..f94636f8
--- /dev/null
+++ b/unix/boot/spp/rpp/rpprat/endcod.r
@@ -0,0 +1,36 @@
+include defs
+
+# ENDCOD -- Code thats gets executed when the END statement is encountered,
+# terminating a procedure.
+
+subroutine endcod (endstr)
+
+character endstr(1)
+include COMMON_BLOCKS
+string sepro "call zzepro"
+string sret "return"
+
+ if (esp != 0)
+ call synerr ("Unmatched 'iferr' or 'then' keyword.")
+ esp = 0 # error stack pointer
+ body = NO
+ ername = NO
+ if (errtbl != NULL)
+ call rmtabl (errtbl)
+ errtbl = NULL
+ memflg = NO # reinit mem decl flag
+
+ if (retlab != NULL)
+ call outnum (retlab)
+ call outtab
+ call outstr (sepro)
+ call outdon
+ call outtab
+ call outstr (sret)
+ call outdon
+
+ col = 6
+ call outtab
+ call outstr (endstr)
+ call outdon
+end