Appendix:appendix

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.

If you encounter the error messages XBT0068, XBT0400, XBT0403 to XBT0405 and XBT0515 please do not change your PRG file until you have copied it to a diskette together with your #include files which are necessary for compilation. Please send the diskette to your local software dealer or directly to Alaska. You also could transmit the files to Alaska by eMail. Doing so helps us improve the compiler.

Compiler messages in the Information category
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.

Compiler messages in the Warning category
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).

Compiler messages in the Error category
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 messages asserted by the preprocessor
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.

Feedback

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.