(* --- rnf1 --- *) (* segment procedure WriteErrorMessages *) procedure WriteErrorMessages; var i: integer; procedure Fst15; begin case i of 1: WRITE('UNRECOGNIZED SUB-MACRO NAME'); 2: WRITE('Recursive submacro expression.'); 3: WRITE('NON NUMERIC VALUE IN EXPRESSION'); 4: WRITE('ARRAY INDEX OUT OF BOUNDS'); 5: WRITE('UNRECOGNIZED RELATIONAL OPERATOR'); 6: WRITE('ERROR IN EXPRESSION:'); 7: WRITE('TOO MANY P OR LIST LEVELS'); 8: WRITE('TOO MANY POPS'); 9: WRITE('RECURSIVE MACRO CALL TO'); 10: WRITE('UNKNOWN COMMAND'); 11: WRITE('EXPECTING POSITIVE NUMBER; GOT'); 12: WRITE('LM < 0'); 13: WRITE('LM > 136'); 14: WRITE('LM OUT OF RANGE'); 15: WRITE('LM FOLLOWED BY') end end; procedure Snd15; begin case i of 16: WRITE('RM > 136'); 17: WRITE('RM < 1'); 18: WRITE('RM OUT OF RANGE'); 19: WRITE('RM FOLLOWED BY'); 20: WRITE('INVALID PS COLUMN'); 21: WRITE('INVALID PS LINES'); 22: WRITE('PARAGRAPH TP'); 23: WRITE('PARAGRAPH SPACE'); 24: WRITE('PARAGRAPH INDENT'); 25: WRITE('INDENT LESS THAN 0'); 26: WRITE('I FOLLOWED BY'); 27: WRITE('BAD HEADER LEVEL'); 28: WRITE('SP FOLLOWED BY'); 29: WRITE('PAGE NUMBER WAS'); 30: WRITE('LIST SPACING') end end; procedure Third15; begin case i of 31: WRITE('NO ACTIVE LIST'); 32: WRITE('NO ACTIVE LIST'); 33: WRITE('TOO MANY PENDING FIGS'); 34: WRITE('FIG FOLLOWED BY'); 35: WRITE('MISSING = IN MACRO DEF'); 36: WRITE('NO MACRO NAME'); 37: WRITE('NESTED MACRO DEFS'); 38: WRITE('TOO MANY VARIABLES'); 39: WRITE('NEED VAR NAME; GOT'); 40: WRITE('UNDEDECLARED VAR'); 41: WRITE('INC FOLLOWED BY'); 42: WRITE('UNDECLARED VAR'); 43: WRITE('DEC FOLLOWED BY'); 44: WRITE('NO ROOM FOR ARRAY '); 45: WRITE('BAD ARRAY SIZE') end end; procedure Fourth15; begin case i of 46: WRITE('ALREADY DECLARED'); 47: WRITE('NOT A VARIABLE SYMBOL'); 48: write('ILLEGAL NESTED INCLUDE COMMAND '); 49: write('INCLUDE FILE NOT PRESENT'); 50: WRITE('TP FOLLOWED BY'); 51: WRITE('RIGHT SPACE '); 52: WRITE('LINES FOLLOWED BY'); 53: write('Input line truncated'); 54: write('Asis text past right margin.'); 55: write('Unrecognized variable.'); 56: write('Lone period.'); 57: write('Macro stack overflow.'); 58: write('Number too big.'); 59: write('Invalid character constant.') end end; begin for i := 1 to MaxErrors do if i in ErrorSet then begin write(' >> ',i:2, ': '); case (i - 1) div 15 of 0: Fst15; 1: Snd15; 2: Third15; 3: Fourth15; end; writeln; end; end;