summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/patgen.ch
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/patgen.ch')
-rw-r--r--Build/source/texk/web2c/patgen.ch15
1 files changed, 15 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/patgen.ch b/Build/source/texk/web2c/patgen.ch
index 4a8c177d2fb..3d9054a446d 100644
--- a/Build/source/texk/web2c/patgen.ch
+++ b/Build/source/texk/web2c/patgen.ch
@@ -58,7 +58,22 @@ begin
print_ln (version_string);
@z
+@x [10] Purge 'jump_out' and 'end_of_PATGEN'.
+error message about what caused the error. Such errors might be
+discovered inside of subroutines inside of subroutines, so a \.{WEB}
+macro called |jump_out| has been introduced. This macro, which transfers
+control to the label |end_of_PATGEN| at the end of the program, contains
+the only non-local |@!goto| statement in \.{PATGEN}. Some \PASCAL\
+compilers do not implement non-local |goto| statements. In such cases
+the |goto end_of_PATGEN| in the definition of |jump_out| should simply
+be replaced by a call on some system procedure that quietly terminates
+the program.
+@y
+error message about what caused the error.
+@z
@x Error handling
+@d jump_out==goto end_of_PATGEN {terminates \.{PATGEN}}
+@#
@d error(#)==begin print_ln(#); jump_out; end
@y
@d error(#)==begin write_ln(stderr, #); uexit(1); end;