Compiler warnings and error messages Foundation
This section contains a list of all possible compiler warnings and error messages. All messages are identified by a code starting with the abbreviation XBT which is followed by a four digit number. After the error code, the compiler outputs the error message as text. Error messages are divided into four categories: Information (20-99), Warning (100-199), Error (200-500) and Preprocessor (>500). Within the categories Warning and Error the compiler additionally outputs the name of the compiled file together with the row and column number where the error was detected.
Error code | Description |
---|---|
XBT0020 | Command-line error: option <opt> needs an argument |
A compiler option that needs an argument was specified | |
without an argument (e.g. /d ). | |
XBT0021 | Command-line error: invalid option <opt> |
The compiler was started with an invalid option specified. | |
XBT0022 | Command-line error: too many input files or invalid option |
The compiler was started with more than one input file name | |
specified or the delimiting character for an option is | |
missing (either / or -), thus the option is interpreted | |
as a file name. | |
XBT0023 | Command-line error: no input file specification |
The compiler was started without specifying an input file name, | |
e.g. XPP -q | |
XBT0024 | Command-line error: cannot find file <filename> |
The compiler is unable to find the input file <filename>. | |
XBT0025 | Command-line error: Cannot execute /pre to preload compiler DLLs |
The compiler is unable to start the utility program XPPLOAD.EXE | |
to load the compiler DLLs. | |
XBT0060 | File <filename> compiled successfully. |
The input file <filename> has been compiled successfully. | |
XBT0061 | No syntax errors in file <filename>. |
The compiler has performed a syntax check with the file | |
<filename> and no error was detected (option /s). | |
XBT0062 | Code size: <bytes>, Data size: <bytes> Const size: <bytes> |
Statistics about the size of code and data segments and | |
constants in bytes | |
XBT0066 | <n> error(s) found in file <filename> |
The compiler has detected <n> errors in the file <filename>. | |
XBT0067 | Too many errors, exiting |
The compiler has detected too many errors and has terminated | |
compilation for this reason. The default is 20 errors and | |
can be changed using the option /err. In general this | |
error message is created by an initial error that causes | |
several subsequent errors. | |
XBT0068 | Fatal error, exiting |
If you encounter this error message please send the PRG file | |
together with the necessary #include files to your local | |
software dealer or directly to ALASKA. |
Error code | Description |
---|---|
XBT0100 | RETURN statement with no value in function |
The RETURN statement is used in a function without | |
an accompanying expression. This results in RETURN NIL. | |
XBT0101 | Procedure returns value |
A RETURN value is specified within a procedure. | |
(The return value of a procedure is always NIL). | |
XBT0102 | Ambiguous variable reference |
In the program an undeclared variable is referenced | |
(only appears when option /w is specified) | |
XBT0103 | Ambiguous variable reference, assuming MEMVAR |
In the program an undeclared variable is referenced | |
(only appears when option /w is specified). From the | |
program context the compiler assumes a memory variable | |
(e.g. because a value is assigned to the variable). | |
XBT0104 | Method INITCLASS is not defined as class-method |
The method INITCLASS must be declared as CLASS METHOD | |
not with the METHOD declaration. | |
XBT0105 | Function does not end with RETURN |
XBT0106 | Procedure does not end with RETURN |
XBT0107 | Method does not end with RETURN |
Function, procedure or method ends without the RETURN statement. | |
XBT0108 | Constant expression might raise a floating-point exception when executed |
The compiler has detected a constant expression that might | |
cause a runtime error during a floating point operation | |
e.g.: x := 100 / (1-1) | |
XBT0109 | Constant expression will cause a type-conflict-error when executed |
The compiler has detected a constant expression that will | |
cause a runtime error due to mismatching data types. | |
(e.g.: x := 1 + "123") | |
XBT0110 | Redefinition or duplicate definition of #define |
The preprocessor has detected a #define constant | |
which has been defined already. | |
XBT0111 | More than one class defined for implicit method declaration; using class: <class> |
While implementing a method the optional class name was not | |
specified. If more than one class is programmed in a file | |
the compiler assumes the method to belong to the last | |
declared class and displays the class name <class>. | |
XBT0112 | Implicit method declaration; using class: <class> |
While implementing a method the optional class name was not | |
specified. The compiler issues a warning and displays the | |
name of the class <class> the method belongs to. | |
XBT0113 | Unclosed comment section at end-of-file |
A comment has been started using the characters /* but has | |
not been closed by the corresponding characters */. | |
XBT0114 | Usage of dynamic scoped variable |
The compiler has detected a variable which is not | |
lexically scoped (neither LOCAL nor STATIC variable). | |
This warning is displayed only with the option /wl set. | |
XBT0115 | File not found, assumed external |
A file which is requested with SET PROCEDURE TO could not | |
be found (PROCREQUEST failed). | |
XBT0116 | LOCAL variable <var> unused |
XBT0117 | STATIC variable <var> unused |
XBT0118 | STATIC variable <var> unused in this file |
XBT0119 | Parameter <var> unused |
When compiling with the option /wu the compiler displays | |
warnings for all lexically scoped variables which are | |
declared either STATIC or LOCAL or within the formal | |
parameter list and are not used in the program code. | |
XBT0120 | LOCAL variable <var> may not have been set before first use |
XBT0121 | STATIC variable <var> may not have been set before first use |
When compiling with the option /wi the compiler displays | |
warnings for all lexically scoped variables which are | |
declared either STATIC or LOCAL and are used within | |
expressions before being initialized (before a value was | |
assigned to the variable). |
Error code | Description |
---|---|
XBT0200 | Syntax Error |
The compiler has detected a syntactically incorrect expression. | |
XBT0204 | Statement not allowed outside procedure or function |
The option /n was used for compilation and the PRG file | |
does not start with a FUNCTION, PROCEDURE or METHOD declaration. | |
XBT0205 | Unterminated string |
A delimiter for a character string is missing | |
XBT0206 | Invalid use of @ (pass by reference) operator |
The reference operator @ is valid only for parameters (except self). | |
If the preprocessor was unable to translate an @-command | |
the code remains unchanged. The compiler then assumes the | |
character @ to be the reference operator within an invalid | |
context. | |
XBT0207 | Incorrect number of arguments |
An Xbase++ function was called passing too many or | |
not enough parameters. | |
XBT0208 | EXIT statement with no loop in sight |
An EXIT statement was detected outside the context of a loop. | |
XBT0209 | LOOP statement with no loop in sight |
A LOOP statement was detected outside the context of a loop. | |
XBT0210 | There is only one INIT-procedure allowed per module |
In a PRG file more than one INIT PROCEDURE was declared. | |
XBT0211 | There is only one EXIT-procedure allowed per module |
In a PRG file more than one EXIT PROCEDURE was declared. | |
XBT0212 | Illegal initialization of STATIC variable |
A STATIC variable is initialized incorrectly. When initializing | |
STATIC variables only constant expressions are allowed | |
which can be resolved at compile time | |
(e.g. STATIC xVar := MyFunction() is not allowed). | |
XBT0213 | Name conflicts with previous declaration |
An attempt was made to create a dynamic variable which | |
is already lexically declared. (e.g: A PRIVATE statement | |
creates a variable which is declared as LOCAL already). | |
XBT0214 | Duplicate variable declaration |
An attempt was made to declare a variable a second time. | |
XBT0216 | Redefinition of Xbase++ internal procedure or function |
An attempt was made to declare a function or procedure | |
which is already provided by Xbase++ and so cannot be redefined. | |
XBT0218 | Unclosed control structures or unexpected end-of-file |
A control structure (IF, FOR, DO WHILE,...) has not been | |
closed correctly. | |
XBT0219 | ELSE does not match IF |
XBT0220 | ELSEIF does not match IF |
XBT0221 | ENDIF does not match IF |
ELSE, ELSEIF or ENDIF is used without preceding IF. | |
XBT0222 | ENDDO does not match WHILE |
ENDDO is used without preceding DO WHILE or WHILE. | |
XBT0223 | NEXT does not match FOR |
NEXT is used without preceding FOR. | |
XBT0224 | ENDCASE does not match DO CASE |
XBT0225 | CASE does not match DO CASE |
XBT0226 | OTHERWISE does not match DO CASE |
ENDCASE, CASE or OTHERWISE is used without preceding DO CASE | |
XBT0227 | Mayhem in CASE handler |
Between DO CASE and the first CASE or OTHERWISE statement | |
are located expressions which are syntactically out of place. | |
XBT0228 | Formal parameters already declared |
An attempt is made to declare parameters using the PARAMETER | |
statement for a function or procedure which was already declared | |
with a formal parameter list. | |
XBT0231 | Invalid lvalue |
An invalid operand was detected on the left side of an | |
assignment operator. E.g. an attempt is made to assign | |
a value to a constant or an expression. | |
(e.g: 1 := 2, or UserFunc() := 123 ) | |
XBT0232 | LOCAL declaration follows executable statement |
XBT0233 | MEMVAR declaration follows executable statement |
XBT0234 | FIELD declaration follows executable statement |
XBT0235 | STATIC declaration follows executable statement |
Within a function, procedure or method the declarations | |
LOCAL, STATIC, MEMVAR or FIELD must appear always before | |
the first executable statement. | |
XBT0236 | Incomplete statement or unbalanced delimiters |
Statement od expression is not correct (usually a closing | |
parenthesis is missing). | |
XBT0237 | Unbalanced array-specification |
When accessing array elements brackets have been set incorrectly. | |
XBT0238 | Function MAIN already exists |
An attempt was made to declare the MAIN procedure a second time. | |
Note: MAIN is implicitely declared if program code is found outside | |
a function or procedure and the option /n is not specified. | |
XBT0239 | Invalid use of ++ (increment) operator |
XBT0240 | Invalid use of -- (decrement) operator |
The operator ++ or -- has been used incorrectly. | |
E.g. it cannot be used with constants | |
( nVar := 2++ is not allowed). | |
XBT0241 | Invalid declaration |
A variable was declared incorrectly. | |
( e.g: LOCAL &w := 12 or STATIC &mv[12] ) | |
XBT0242 | Macro of LOCAL, STATIC or FIELD variable |
An attempt was made to use the macro operator & in an | |
invalid way with LOCAL, STATIC or FIELD variables. E.g: | |
LOCAL lv := "p" ; &lv.1 := 12 | |
XBT0243 | RETURN statement violates enclosing sequence |
XBT0244 | EXIT statement violates enclosing sequence |
XBT0245 | LOOP statement violates enclosing sequence |
RETURN, EXIT or LOOP must not be used within the control | |
structure BEGIN SEQUENCE ... ENDSEQUENCE. They are only | |
allowed following the RECOVER or the ENDSEQUENCE statement. | |
XBT0246 | Invalid alias expression |
Alias is not correct (e.g.: a numeric alias must fall | |
into the range 0 to 9999). | |
XBT0247 | Redefinition of function or procedure |
XBT0248 | Redefinition of class |
XBT0249 | Redefinition of method |
An already existing function, procedure, class or method is | |
declared a second time. This is not allowed. | |
XBT0250 | Incomplete expression |
An incomplete expression was detected (e.g. in one line of code | |
only x or a[x], or a == 0 is written. This is not allowed.) | |
XBT0251 | Reserved keyword |
A keyword which is reserved for Xbase++ has been used. | |
XBT0252 | Invalid use of MEMVAR-> or M-> prefix |
An incorrect usage of the alias for memory variables has been detected. | |
( e.g: MEMVAR -> (x + FieldGet(2)) is not allowed). | |
XBT0253 | REQUEST declaration follows executable statement |
The REQUEST declaration always must appear before the first | |
executable statement. | |
XBT0254 | Procedure/Function MAIN cannot be declared static |
The MAIN procedure must not be declared as STATIC FUNCTION | |
or STATIC PROCEDURE. | |
XBT0255 | Constant number not allowed in this expression |
A numeric constant is not allowed in this context | |
(e.g: WHILE (1) ) | |
XBT0256 | Constant string not allowed in this expression |
A literal string is not allowed in this context | |
(e.g: WHILE ("forever") ) | |
XBT0257 | Invalid PRAGMA directive |
An invalid option is specified for #pragma | |
XBT0260 | Class cannot be a superclass of itself |
An attempt was made to derive a class from another one | |
having the same class name. This is not allowed. | |
XBT0261 | Superclass already defined |
A superclass is defined more than once. | |
XBT0262 | Class cannot be a shared class of itself |
The class declaration uses SHARED classes having the same | |
class name as the declared class. | |
XBT0263 | Shared class already defined |
A SHARED class is defined more than once. | |
XBT0270 | Duplicate method declaration |
A method is declared more than once. | |
XBT0271 | self-object cannot be redefined |
Within methods an assignment to the variable SELF is | |
not allowed. | |
XBT0272 | self-object cannot be passed by reference |
Within methods the variable SELF cannot be passed to | |
other methods, functions or procedures using the | |
reference operator @. | |
XBT0273 | Member variable with same name as superclass or shared class |
A member variable cannot be created because a superclass or | |
shared class exists already with the same name. | |
XBT0274 | Method :new() cannot be overloaded |
XBT0275 | Method :classObject() cannot be overloaded |
XBT0276 | Method :className() cannot be overloaded |
The methods :new(), :classObject() and :className() are | |
reserved and may not be redefined (overloaded). | |
XBT0278 | No class defined for implicit method declaration |
An attempt was made to implement a method without specifying | |
the class name in a file where no class declaration exists. | |
XBT0279 | Method with same name as superclass or shared class |
A method was declared having the same name as a superclass | |
or a SHARED class. This is not allowed. | |
XBT0280 | Cannot find declaration of class <className> |
A method is programmed in a file but the class declaration | |
is missing. Methods must be implemented in the same file | |
where the class declaration is located. | |
XBT0281 | Method <name> not declared in class <className> |
A method is implemented which is not declared in the | |
class declaration. | |
XBT0282 | Class method <name> not declared in class <className> |
A class method is implemented which is not declared in the | |
class declaration. | |
XBT0283 | Method <name> declared but not implemented |
A method is declared in the class declaration but | |
is not implemented in the source code. | |
XBT0284 | Class method <name> declared but not implemented |
A class method is declared in the class declaration but | |
is not implemented in the source code. | |
XBT0285 | Only a direct superclass is allowed for this alias |
An attempt is made to cast a superclass which is not the | |
direct superclass | |
XBT0400 | Internal error: contact ALASKA technical support |
If you encounter this error message please send the PRG file | |
together with the necessary #include files to your local | |
software dealer or directly to ALASKA. | |
XBT0401 | Cannot open output file |
OBJ file cannot be opened (e.g. the same PRG file is | |
compiled in two different sessions at the same time). | |
XBT0402 | Write error on output file |
An error occured while writing the OBJ file | |
(e.g. there is not enough disk space left). | |
XBT0403 | Record too long on output file |
The compiler has created an OMF record which is too long. | |
If you encounter this error message please send the PRG file | |
together with the necessary #include files to your local | |
software dealer or directly to ALASKA. | |
XBT0404 | String too long on output file |
The compiler attempts to write a too long string into an OMF record. | |
If you encounter this error message please send the PRG file | |
together with the necessary #include files to your local | |
software dealer or directly to ALASKA. | |
XBT0405 | Index too large on output file |
The fixup index in an OMF record is too large. | |
If you encounter this error message please send the PRG file | |
together with the necessary #include files to your local | |
software dealer or directly to ALASKA. |
Error code | Description |
---|---|
XBT0501 | Preprocessor: Unexpected EOF |
The preprocessor unexpectedly has reached the end of file. | |
XBT0502 | Preprocessor: Unbalanced delimiters |
Within a pseudo function parentheses are not correct or | |
another delimiting character is missing, | |
e.g. #define Foo( x, y . | |
XBT0503 | Preprocessor: Invalid directive |
An invalid identifier for a directive is specified after | |
the character #. | |
XBT0504 | Preprocessor: Unbalanced #IFDEF-#ELSE-#ENDIF |
#ifdef or #ifndef directive is missing. | |
XBT0505 | Preprocessor: Missing #ENDIF |
#endif directive is missing. | |
XBT0506 | Preprocessor: Invalid Identifier |
An invalid identifier was detected within a directive. | |
Identifiers must begin with an underscore or a letter | |
which is followed by alpha numeric characters. | |
XBT0507 | Preprocessor: Include file not found |
The preprocessor was unable to find an #include file. | |
These files are searched for only in the current directory | |
or in the path specified with SET INCLUDE=. | |
XBT0508 | Preprocessor: Cannot read include file |
The preprocessor was unable to read an #include file. | |
(e.g. if such a file does not contain Xbase++ source code) | |
XBT0509 | Preprocessor: Invalid marker |
An invalid marker symbol was used in a directive. | |
XBT0510 | Preprocessor: Missing => in directive |
Within a #command, #translate, #xcommand or #xtranslate directive | |
the characters => are missing which are necessary to identify | |
the left and right part of a directive. | |
XBT0511 | Preprocessor: Cannot match parameter |
The parameters for a pseudo function do not match within a | |
#define directive. | |
XBT0512 | Preprocessor: Include nesting level exceeds limit |
The #include directive has been nested more than 25 levels deep. | |
XBT0513 | Preprocessor: Optional result clauses cannot be nested |
An optional result marker has been nested by brackets. | |
This is not allowed. | |
XBT0514 | Preprocessor: Cannot read file |
The preprocessor was unable to read a PRG file. | |
(e.g. if such a file does not contain Xbase++ source code) | |
XBT0515 | Preprocessor: Internal Error |
If you encounter this error message please send the PRG file | |
together with the necessary #include files to your local | |
software dealer or directly to ALASKA. | |
XBT0516 | Preprocessor: Unknown result marker |
For the identifier of a result marker on the right side of a | |
directive no corresponding identifier for a match marker on the | |
left side was found. | |
XBT0517 | Preprocessor: #ERROR |
This error message is created by the #error directive. | |
XBT0518 | Circularity detected in #DEFINE - directive : |
XBT0519 | Circularity detected in #TRANSLATE - directive : |
XBT0520 | Circularity detected in #COMMAND - directive : |
XBT0521 | Circularity detected in directive : |
The preprocessor has detected a recursion. It would translate | |
program code to a result which would be translated again using | |
the same directive. | |
XBT0522 | Too many nested #IFDEF - directives |
The #ifdef ... #endif directive has been nested more than 256 levels deep. | |
XBT0523 | Length of input line exceeds input buffer length |
A single line of code which is broken down into several lines | |
using the line continuation character (;) exceeds the limit of | |
20kB characters. This line must be split into several lines without | |
line continuation, or blank spaces must be converted into tabs. | |
XBT0524 | Preprocessor: Cannot open PPO-file |
The preprocessor is to write its result into a PPO file (option /p), | |
but is unable to open this file. | |
XBT0525 | Newline character detected in string |
A delimiting character is missing in a character string. The | |
preprocessor searches the delimiter and reaches the end of line | |
(carriage return / line feed) before the delimiter is found. |
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.