aboutsummaryrefslogtreecommitdiff
path: root/unix/boot/spp/rpp/rpprat/errchk.r
diff options
context:
space:
mode:
Diffstat (limited to 'unix/boot/spp/rpp/rpprat/errchk.r')
-rw-r--r--unix/boot/spp/rpp/rpprat/errchk.r42
1 files changed, 42 insertions, 0 deletions
diff --git a/unix/boot/spp/rpp/rpprat/errchk.r b/unix/boot/spp/rpp/rpprat/errchk.r
new file mode 100644
index 00000000..4b948936
--- /dev/null
+++ b/unix/boot/spp/rpp/rpprat/errchk.r
@@ -0,0 +1,42 @@
+include defs
+
+# ERRCHK -- Code called to process an ERRCHK declaration.
+
+subroutine errchk
+
+character tok, last_tok, gnbtok, token(MAXTOK)
+integer ntok
+pointer mktabl
+include COMMON_BLOCKS
+string serrcom1 "logical xerflg, xerpad(84)"
+string serrcom2 "common /xercom/ xerflg, xerpad"
+
+ ntok = 0
+ tok = 0
+
+ repeat {
+ last_tok = tok
+ tok = gnbtok (token, MAXTOK)
+
+ switch (tok) {
+ case ALPHA:
+ if (errtbl == NULL) {
+ errtbl = mktabl(0) # make empty table
+ call outtab # declare err flag
+ call outstr (serrcom1)
+ call outdon
+ call outtab # declare err common
+ call outstr (serrcom2)
+ call outdon
+ }
+ call enter (token, 0, errtbl) # enter keyw in table
+ case COMMA:
+ # no action, but required by syntax
+ case NEWLINE:
+ if (last_tok != COMMA)
+ break
+ default:
+ call synerr ("Syntax error in ERRCHK declaration.")
+ }
+ }
+end