APPENDIX B: ERROR MESSAGES

Recursion stack overflow: evaluation stack collision with symbol table; correct by reducing symbol table size, simplifying expressions.

  1: Error in simple type
     Self-explanatory.

  2: Identifier expected
     Self-explanatory.

  3: 'PROGRAM' expected
     Self-explanatory

  4: ')' expected
     Self-explanatory

  5: ': ' expected
     Possibly a = used in a VAR declaration

  6: Illegal symbol (possibly missing ';' on line above)
     Symbol encountered is not allowed in the syntax at this point.

  7: Error in parameter list
     Syntactic error in parameter list declaration.

  8: 'OF' expected
     Self-explanatory.

  9: '(' expected
     Self-explanatory.

 10: Error in type
     Syntactic error in TYPE declaration.

 11: '[' expected
     Self-explanatory.

 12: ']' expected
     Self-explanatory.

 13: 'END' expected
     All procedures, functions, and blocks of statements
     must have an 'END'. Check for mismatched BEGIN/ENDs.

 14: ';' expected (possibly on line above)
     Statement separator required here.

 15: Integer expected
     Self-explanatory.

 16: '=' expected
     Possibly a : used in a TYPE or CONST declaration.

 17: 'BEGIN' expected
     Self-explanatory.

 18: Error in declaration part
     Typically an illegal backward reference to a type in
     a pointer declaration.

 19: error in <field-list>
     Syntactic error in a record declaration

 20: '.' expected
     Self-explanatory.

 21: '*' expected
     Self-explanatory.

 50: Error in constant
     Syntactic error in a literal constant, also when using recursion
     and improperly using INP and OUT.

 51: ':=' expected
     Self-explanatory.

 52: 'THEN' expected
     Self-explanatory.

 53: 'UNTIL' expected
     Can result from mismatched begin/end sequences

 54: 'DO' expected
     Syntactic error.

 55: 'TO' or 'DOWNTO' expected in FOR statement
     Self-explanatory.

 56: 'IF' expected
     Self-explanatory.

 57: 'FILE' expected
     Probably an error in a TYPE declaration.

 58: Error in <factor> (bad expression)
     Syntactic error in expression at factor level.

 59: Error in variable
     Syntactic error in expression at variable level.

 99: MODEND expected
     Each MODULE must end with MODEND.

101: Identifier declared twice
     Name already in visible symbol table.

102: Low bound exceeds high bound
     For subranges the lower bound must be <= high bound.

103: Identifier is not of the appropriate class
     A variable name used as a type, or a type used
     as a variable, etc. can cause this error.

104: Undeclared identifier
     The specified identifier is not in the visible
     symbol table.

105: sign not allowed
     Signs are not allowed on non-integer/non-real constants.

106: Number expected
     This error can often come from making the compiler totally
     confused in an expression as it checks for numbers after all
     other possibilities have been exhausted.

107: Incompatible subrange types
     (e.g. 'A'..'Z' is not compatible with 0..9).

108: File not allowed here
     File comparison and assignment is not allowed.

109: Type must not be real
     Self-explanatory.

110: <tagfield> type must be scalar or subrange
     Self-explanatory.

111: Incompatible with <tagfield> part
     Selector in a CASE-variant record is not
     compatible with the <tagfield> type

112: Index type must not be real
     An array may not be declared with real dimensions

113: Index type must be a scalar or a subrange
     Self-explanatory.

114: Base type must not be real
     Base type of a set may be scalar or subrange.

115: Base type must be a scalar or a subrange
     Self-explanatory.

116: Error in type of standard procedure parameter
     Self-explanatory.

117: Unsatisified forward reference
     A forwardly declared pointer was never defined.

118: Forward reference type identifier in variable declaration
     The user has attempted to declare a variable as a pointer
     to a type which has not yet been declared.

119: Re-specified params not OK for a forward declared procedure
     Self-explanatory.

120: Function result type must be scalar, subrange or pointer
     A function has been declared with a string or other non-scalar
     type as its value.  This is not allowed.

121: File value parameter not allowed
     Files must be passed as VAR parameters.

122: A forward declared function's result type can't be re-specified
     Self-explanatory.

123: Missing result type in function declaration
     Self-explanatory.

125: Error in type of standard procedure parameter
     This is often caused by not having the parameters in the
     proper order for built-in procedures or by attempting to
     read/write
     pointers, enumerated types, etc.

126: Number of parameters does not agree with declaration
     Self-explanatory.

127: Illegal parameter substitution
     Type of parameter does not exactly match the
     corresponding formal parameter.

128: Result type does not agree with declaration
     When assigning to a function result, the types must be
     compatible.

129: Type conflict of operands
     Self-explanatory.

130: Expression is not of set type
     Self-explanatory.

131: Tests on equality allowed only
     Occurs when comparing sets for other than equality.

133: File comparison not allowed
     File control blocks may not be compared as they contain multiple
     fields which are not available to the user.

134: Illegal type of operand(s)
     The operands do not match those required for this operator.

135: Type of operand must be boolean
     The operands to AND, OR and NOT must be BOOLEAN.

136: Set element type must be scalar or subrange
     Self-explanatory.

137: Set element types must be compatible
     Self-explanatory.

138: Type of variable is not array
     A subscript has been specified on a non-array variable.

139: Index type is not compatible with the declaration
     Occurs when indexing into an array with the wrong type of
     indexing expression.

140: Type of variable is not record
     Attempting to access a non-record data structure
     with the 'dot' form or the 'with' statement.

141: Type of variable must be file or pointer
     Occurs when an up arrow follows a variable which is not
     of type pointer or file.

142: Illegal parameter solution
     Self-explanatory.

143: Illegal type of loop control variable
     Loop control variables may be only local non-real scalars.

144: Illegal type of expression
     The expression used as a selecting expression in a case
     statement must be a non-real scalar.

145: Type conflict
     Case selector is not the same type as the selecting expression.

146: Assignment of files not allowed
     Self-explanatory.

147: Label type incompatible with selecting expression
     Case selector is not the same type as the selecting expression.

148: Subrange bounds must be scalar
     Self-explanatory.

149: Index type must be integer
     Self-explanatory.

150: Assignment to standard function is not allowed
     Self-explanatory.

151: Assignment to formal function is not allowed
     Self-explanatory.

152: No such field in this record
     Self-explanatory.

153: Type error in read
     Self-explanatory.

154: Actual parameter must be a variable
     Occurs when attempting to pass an expression as a VAR parameter.

155: Control variable cannot be formal or non-local
     The control variable in a FOR loop must be LOCAL.

156: Multidefined case label
     Self-explanatory.

157: Too many cases in case statement
     Occurs when jump table generated for case overflows its bounds.

158: No such variant in this record
     Self-explanatory.

159: Real or string tagfields not allowed
     Self-explanatory.

160: Previous declaration was not forward

161: Again forward declared

162: Parameter size must be constant

163: Missing variant in declaration
     Occurs when using NEW/DISPOSE and a variant does not
     exist.

164: Substition of standard proc/func not allowed

165: Multidefined label
     Label more than one statement with same label.

166: Multideclared label
     Declare same label more than once.

167: Undeclared label
     Label on statement has not been delcareed.

168: Undefined label

     A declared label was not used to label a statement.

169: Error in base set

170: Value parameter expected

171: Standard file was re-declared

172: Undeclared external file

174: Pascal function or procedure expected
     Self-explanatory.

183: External declaration not allowed at this nesting level
     Self-explanatory.

187: Attempt to open library unsuccessful
     Self-explanatory.

191: No private files
     Files may not be declared other than in the GLOBAL
     variable section of a program or module as they must
     be statically allocated.

193: Not enough room for this operation
     Self-explanatory.

194: Comment must appear at top of program

201: Error in real number - digit expected
     Self-explanatory.

202: String constant must not exceed source line

203: Integer constant exceeds range
     Range on integer constants are -32768..32767

250: Too many scopes of nested identifiers
     There is a limit of 15 nesting levels at compile-time.
     This includes WITH and procedure nesting.

251: Too many nested procedures or functions
     There is a limit of 15 nesting levels at execution
     time. Also occurs when more than 80 routines in one compiled
     module.

253: Procedure (or program body) too long
     A procedure has generated code which has overflowed
     the internal procedure buffer.  Reduce the size of
     the procedure and try again.  The limit is target
     machine dependent.  Consult the CPU applications note
     for more information.

259: Expression too complicated
     The users expression is too compilated (i.e. too many
     recursive calls needed to compile it).  The user should
     reduce the compilcation using temporary variable

397: Too many FOR or WITH statments in a procedure
     Only 16 FOR and / or WITH statments are allowed in
     a single procedure (in recursive mode only)

398: Implementation restriction
     Normally used for arrays and sets which are too big to
     be manipulated or allocated.

400: Illegal character in text
     A character which is a non-Pascal special character
     was found outside of a quoted string.

401: Unexpected end of input
     End. encountered before returning to outer level.

402: Error in writing code file, not enough room
     Self-explanatory.

403: Error in reading include file
     Self-explanatory.

404: Error in writing list file, not enough room
     Self-explanatory.

405: Call not allowed in separate procedure
     Self-explanatory.

406: Include file not legal
     Self-explanatory.

407: Symbol Table Overflow

496: Invalid operand to INLINE
     Usually due to reference which requires address
     calculation at run time.

497: Error in closing code file.
     An error occured when the .ERL file was closed.
     Make more room on the destination disk and try again.

999: Compiler confused due to previous errors.  Make some
     corrections and try again. It is also possible that while
     your program is syntactically correct it may cause the
     compiler to become confused if semantic errors exist.
     The compiler will abort early with this error number.
     Look carefully at the line on which the compilation halts.