Preprocessor Error Messages
The following is a list of error messages specific to Pascal.
E_DC000A
"Table 'employee' contains column(s) of unlimited length."
Explanation:
Character strings(s) of zero length have been generated. This causes a compile-time error.
Action:
Modify the output file to specify an appropriate length.
E_E20001
"PASCAL attribute conflict in declaration of size for '%0c'."
Explanation:
The program has specified conflicting size attributes for this object. For example, the following declaration is erroneous because of the attempt to extend the attribute size of the type:
'smaller': typesmaller = [byte] 1..100;
varbigger : [word] smaller;
E_E20002
"PASCAL subrange conflict. Upper and lower bounds are not the same type or they are not an ordinal type."
Explanation:
Both bounds of a subrange declaration must be of the same ordinal type (single character or integer). If the subrange bounds types are different or if they are not ordinal types, the preprocessor will use the type of the second bound and accept the usage of variables declared with this subrange type. This will cause an error in later PASCAL compilation.
E_E20003
"Mismatching statement at end of PASCAL subprogram. Check balanced subprogram headers and END pairs."
Explanation:
You may have an exec sql end statement that is not balanced by a exec sql label statement. These subprogram delimiters provide scoping for PASCAL labels generated by the preprocessor.
Action:
If you had syntax errors on the exec sql label statement, then correct those errors and preprocess the file again.
E_E20005
"PASCAL character array '%0c' must be PACKED or VARYING."
Explanation:
A string referenced in an embedded statement must be a PACKED ARRAY OF CHAR, a VARYING OF CHAR or a single CHAR. You have used a non-packed ARRAY OF CHAR as an embedded string variable.
Action:
Convert the variable declaration to either PACKED or VARYING, or subscript the array to reference only one element.
E_E20006
"Extraneous semicolon in PASCAL declaration ignored."
Explanation:
Only one semicolon is allowed between components of a record declaration. The preprocessor ignores the extra semicolons.
Action:
Delete the extra semicolon in your source code.
E_E20007
"PASCAL dimension of '%0c' is %1c, but subscripted %2c times."
Explanation:
You have not referenced the specified variable with the same number of subscripts as the number of dimensions with which the variable was declared. This error indicates that you have failed to subscript an array, or you have subscripted a non-array. The preprocessor does not parse declaration dimensions or subscript expressions.
E_E20008
"Incorrect indirection of PASCAL variable '%0c'. Variable is declared with indirection of %1c, but dereferenced (^) %2c time(s)."
Explanation:
This error occurs when the address or value of a variable is incorrectly expressed because of faulty indirection. For example, the name of an integer pointer has been given instead of the variable at which the pointer was pointing.
Action:
Either redeclare the variable with the intended indirection (and check any implicit indirection in the type), or change its use in the current statement.
E_E20009
"PASCAL Pass 2 failure on INCLUDE file. The maximum INCLUDE nesting exceeded %0c."
Explanation:
The PASCAL preprocessor must take a second pass in order to declare implicitly generated labels. If the source file referenced embedded INCLUDE files, then the second pass needs to generate labels into those files. Consequently there is a maximum nesting limit of INCLUDE files.
Action:
Try reorganizing your files to create a flatter source file structure.
E_E2000B
"PASCAL Pass 2 open file failure. Cannot pass information from file '%0c' to '%1c'."
Explanation:
The PASCAL preprocessor must take a second pass in order to declare implicitly generated labels. Because there is a temporary file involved, and this file has a fixed name, you should avoid running the preprocessor more than once in the same directory. This error may also occur if the intermediate file disappeared, the system protections of the current directory are too restrictive or have changed, or if the original input file was moved between the first and second pass of the preprocessor.
E_E2000C
"PASCAL Pass 2 file inconsistency. Mismatching number of label markers in '%0c'."
Explanation:
The PASCAL preprocessor must take a second pass in order to declare implicitly generated labels. There was a difference between the number of label declaration sections the preprocessor expected to generate and the number of markers found in the intermediate file. This may be caused by an embedded INCLUDE statement that requires its own scope for label generation.
Action:
If there are nested INCLUDE statements whose files require labels, try to flatten them out into larger source files.
E_E2000D
"Missing PASCAL keyword '%0c' in declaration."
Explanation:
You did not use the specified keyword, or you did not make the word known to the preprocessor. If there are no other errors the preprocessor will generate correct PASCAL code.
E_E2000F
"Can not use indirection (^) on an undeclared PASCAL variable '%0c'."
Explanation:
You have used pointer indirection on a name that was not declared as a PASCAL variable to the preprocessor.
Action:
If this really is a variable, make its declaration known to the preprocessor.
E_E20010
"Can not subscript ([]) an undeclared PASCAL variable '%0c'."
Explanation:
You have used array subscription on a name that was not declared as a PASCAL variable to the preprocessor.
Action:
If this really is a variable, make its declaration known to the preprocessor.
E_E20011
"Can not subscript VARYING PASCAL variable '%0c'."
Explanation:
Elements of a varying-length character string array cannot be passed to the runtime system.
Action:
If you need to pass a single element, then declare the array as a plain array (not PACKED nor VARYING).
E_E20012
"Scalar PASCAL type required for conformant schema bounds type."
Explanation:
PASCAL requires that bounds expressions of conformant arrays be of a scalar type.
Action:
Choose a scalar type, such as a single character or an integer.
E_E20013
"PASCAL object '%0c' is not a variable."
Explanation:
You have used the specified name as an embedded variable, but you have not declared it to the preprocessor. This may also be a scope problem.
Action:
Make sure you have typed the name correctly, declared the variable to the preprocessor and have used it in its scope.
E_E20014
"Too many comma separated names in declaration. Maximum number of names is %0c."
Explanation:
The declaration of a comma-separated list of names in a declaration is too long. For example: vara, b, ..... N : Integer;
Action:
Try breaking up the declaration into groups.
E_E20018
"Last PASCAL record member referenced in '%0c' is unknown."
Explanation:
The last record member referenced is not a member of the current record.
Action:
Make sure you have spelled the member name correctly, and that it is a member of the specified record.
E_E20019
"Unclosed PASCAL block. There are %0c unbalanced subprogram headers."
Explanation:
The end of the file was reached with some program blocks left open.
Action:
Make sure you have an END statement for each subprogram header or embedded LABEL statement.
E_E2001A
"PASCAL %0c '%1c' is not yet defined. An INTEGER is assumed."
Explanation:
The specified TYPE or CONST name has not yet been declared.
Action:
Make sure that all types and constants are defined before use. Forward type declarations (such as pointers to undefined types) are an exception.
E_E2001B
"Underflow of comma separated name list in declaration."
Explanation:
The stack used to store comma-separated names in declarations has been corrupted.
Action:
Try rearranging the list of names in the declaration.
E_E2001C
"PASCAL variable '%0c' is of unsupported type SET or QUADRUPLE."
Explanation:
You may declare variables of type SET And QUADRUPLE, but you may not use them in embedded statements. The declarations are only allowed so that you can declare records with components of those types.
Action:
If those variables need to interact with Ingres, then declare the SET variable as an ARRAY OF BOOLEAN, and the QUADRUPLE variable as a DOUBLE.
E_E20022
"PASCAL variable '%0c' is a record, not a scalar value."
Explanation:
The named variable refers to a record. It was used where a variable must be used to retrieve data from Ingres. This error may also cause a syntax error on any subsequent record components that are referenced.
E_E20023
"No embedded LABEL statement for current scope but labels have been generated."
Explanation:
The PASCAL preprocessor must take a second pass in order to declare implicitly generated labels. If labels were implicitly generated then the preprocessor needs to know where to declare them on the second pass.
Action:
Be sure to issue the embedded LABEL statement (and corresponding END statement) in each subprogram that issues an embedded block-structured statement. If you did not issue the EXEC SQL LABEL statement, the generated labels will be marked as undeclared by the PASCAL compiler.