(Complete) Compile-Time Error Chart for Macintosh QuickBasic (43020)
This article was previously published under Q43020
SUMMARY
The "Compile-Time Error Messages" chart was left out of the "Microsoft
QuickBasic For Apple Macintosh: Language Reference" manual for
versions 1.00, 1.00a, and 1.00b. To supplement the manual, you may use
the error message chart included below, which is taken from the
earlier compiler (pages 437-448 of the "Microsoft Basic Compiler for
Apple Macintosh" manual for Microsoft Basic Compiler version 1.00 for
Apple Macintosh).
MORE INFORMATION
The following compile-time error messages are described in greater
detail further below:
Error # Compile-Time Error Message
------- --------------------------
1 SUB without END SUB
2 Wrong Number of arguments
3 Undefined DATA label
4 Expecting a variable
5 Expecting end of statement
6 Illegal character
7 END SUB/EXIT SUB in main program
8 DEF statement syntax error
9 Invalid statement label
10 Duplicate statement label
11 Duplicate subprogram name
12 Duplicate variable name
13 Missing main program
14 Missing argument
15 Numeric overflow
16 Illegal statement ordering
17 Syntax error
18 Undefined statement label
19 Undeclared array
21 Expecting closing parenthesis
23 I/O control list error
24 Maximum of seven dimensions exceeded
25 Array subscript error
27 Spelling error?
28 Unterminated FOR or WHILE loop
29 IF without END IF
30 ELSE/ELSEIF without IF
31 Static array redimensioned
32 $INCLUDE file not found
33 Alpha character expected
34 Illegal $INCLUDE statement in $INCLUDE file
36 SELECT CASE without END SELECT
37 CASE statement expected
39 DATA statement in single-line IF statement
40 I/O control argument is not CHARACTER
41 Expecting a symbol
42 Expecting an opening parenthesis
43 Unexpected end of statement
44 Invalid $OPTION specifier
45 NEXT without FOR or WEND without WHILE
46 END IF without IF
47 Array boundary error
48 Illegal FOR variable
49 Case constant exceeds 126-character limit
50 Semicolon was expected
51 A comma was expected
52 Argument type mismatch
53 This feature requires the N option
54 FOR/WHILE loops nested deeper than 64
55 CASE without SELECT CASE
56 Statement not in a subprogram block
58 Attempt to redefine option base
59 Illegal argument
60 Address out of 16-bit-range - use A option
61 An equals sign was expected
62 Undeclared subprogram
63 Static variables cannot be erased
64 System startup code file not found
65 Internal error
99 Internal stack level error
Undefined error code - internal error
Below is a description of each compile-time error message:
Error # Compile-Time Error Message
------- --------------------------
1 SUB without END SUB
This occurs when the compiler encounters two SUB state-
ments without an intervening END SUB statement, or a
SUB statement without a matching END SUB statement.
2 Wrong number of arguments
An intrinsic or user-defined function or subprogram was
called with the wrong number of arguments. For
example, the number of arguments in a subprogram CALL
statement was not the same as the number of parameters
in the corresponding SUB statement.
3 Undefined DATA label
A label referenced by a RESTORE statement does not
exist in the program.
4 Expecting a variable
An intrinsic function expects a variable in this
position, but was passed an expression instead. An
example of this is VARPTR, which takes a single
parameter that must be a variable.
5 Expecting end of statement
The statement has been completely processed by the
compiler and there is text remaining on the line that
is not a trailing comment or legal statement separator.
This can be caused by characters unrecognizable to
Basic on the line, an incorrect trailing comment
format, or parameters beyond those defined for the
statement.
6 Illegal character
The compiler did not find an expected character, as in
the following examples:
1. A parameter in a function definition statement
(DEF FN) is not followed by a comma or a right
parenthesis.
2. The compiler expected an expression or subexpres-
sion, but the next character was not one of the
characters that can legally begin an expression,
namely, an alphanumeric character, left or right
parenthesis, +, or -.
7 END SUB/EXIT SUB in main program
This indicates an END SUB or EXIT SUB statement that
has no matching SUB statement.
8 DEF statement syntax error
This error is caused by one of the following two
conditions:
1. The name following the DEF keyword in a user-
defined function does not start with the letters FN.
2. The range of characters in a DEFINT, DEFSNG, DEFDBL,
or DEFSTR statement is out of alphabetical order.
9 Invalid statement label
A line number has a value greater the 65,529.
10 Duplicate statement label
The same line number or label exists in a previous line
in the program or subprogram.
11 Duplicate subprogram name
A subprogram name appears in two SUB statements in the
same program.
12 Duplicate Variable name
The same variable appears in more than one COMMON
statement.
13 Missing main program
The program contains no executable statements outside
of a subprogram definition.
14 Missing argument
An intrinsic function was called without enough
arguments.
15 Numeric overflow
This occurs when an expression resolved at compile time
exceeds the maximum number that can be represented.
16 Illegal statement ordering
This can be caused by several conditions, four of which
are as follows:
1. A SHARED statement either follows executable code in
a subprogram or appears outside a subprogram block.
2. An ERASE statement for shared or passed arrays
occurs in a subprogram.
3. A user-defined function is called before the function
definition is given in a DEF FN statement.
4. A COMMON statement appears in a subprogram.
17 Syntax error
This can be caused by a number of different conditions,
some of which are listed below:
1. An expression contains an operator without a
following operand.
2. An expression contains two operands without a
connecting operator.
3. A THEN keyword is missing an IF...THEN...ELSE
statement.
4. A TO keyword is missing in a FOR...NEXT loop.
5. SELECT appears without the CASE keyword.
6. IF condition or ELSEIF condition is not followed by
the keyword THEN.
7. An ON ERROR clause is not followed by GOTO, or an ON
event clause is not followed by GOSUB.
8. The hyphen (-) is missing between coordinate pairs
in a statement such as BUTTON or LINE.
18 Undefined statement label
A label referred to in an IF...THEN [[...ELSE]], GOSUB,
or GOTO statement does not exist in the program or
subprogram.
19 Undeclared array
This error can result from one of the following
conditions:
1. A GET, PUT, or WAVE statement contains a reference
to an array that has not been previously declared in
a DIM statement.
2. An array referenced in a SHARED statement was not
found in the main program.
21 Expecting closing parenthesis
The end of an expression was reached without enough
right parentheses to balance the left parentheses
encountered.
23 I/O control list error
This error can be caused by one of the following
conditions:
1. No legal mode is specified after FOR in an OPEN
statement.
2. The keyword AS is missing in an OPEN or NAME
statement.
3. The LEN keyword was not used when an attempt was
made to specify a file buffer size in an OPEN
statement.
4. A constant null string ("") is used for a filename
in an OPEN statement.
5. There is an error in the format of a PRINT [#] USING
format string or an INPUT statement prompt string.
24 Maximum of seven dimensions exceeded
The Basic compiler limits arrays to a maximum of seven
dimensions.
25 Array subscript error
A static array reference has the wrong number of
indexes.
27 Spelling error?
A statement does not begin with a number, label,
keyword, or comment character.
28 Unterminated FOR or WHILE loop
The compiler has reached the end of the program with an
unbalanced FOR statement; that is, one without a
corresponding NEXT. This error message also appears
when the program has a WHILE statement without a
matching WEND statement.
29 IF without END IF
The compiler has reached the end of the program with an
unbalanced block IF statement; that is, one without a
matching END IF statement.
30 ELSE/ELSEIF without IF
There was no block IF statement pending when this block
ELSE statement was encountered.
31 Static array redimensioned
Limits for a static array were declared more than once.
32 $INCLUDE file not found
A file specified in a $INCLUDE statement does not exist
or cannot be found by the compiler in the specified
volume or folder.
33 Alpha character expected
An identifier that starts with a letter is expected at
this point.
34 Illegal $INCLUDE statement in $INCLUDE file
The compiler has encountered an $INCLUDE statement
while processing another $INCLUDE statement. $INCLUDE
statements cannot be nested.
36 SELECT CASE without END SELECT
The compiler has reached the end of the program with an
unbalanced CASE statement, that is, one without a
corresponding END SELECT.
37 CASE statement expected
The statement immediately following a SELECT CASE
statement is not a CASE statement. All statements
between a SELECT CASE statement and the matching END
SELECT statement must be introduced by a CASE
statement.
39 DATA statement in single-line IF statement
A DATA statement cannot be part of a single-line
IF...THEN...ELSE statement. DATA statements can appear
in block IF...THEN...ELSE statements, but they are not
conditional.
40 I/O control argument is not CHARACTER
This is caused by one of the following two conditions:
1. AS in a FIELD statement is not defined by a string
variable.
2. A non-string expression is used for the mode or the
filename in an OPEN statement.
41 Expecting a symbol
The compiler encountered something such as a constant,
keyword, or operator, instead of an expected symbol.
42 Expecting an opening parenthesis
This can be caused by one of the following two
conditions:
1. The compiler did not find a required left
parenthesis before the argument list in a call to a
subprogram, an intrinsic Basic function, or a
user-defined function.
2. The compiler did not find a required left
parenthesis before a coordinate pair in a statement
such as BUTTON, EDIT FIELD, or WINDOW.
43 Unexpected end of statement
The compiler reached a statement separator without
completely processing the statement; it expects more
text.
44 Invalid $OPTION specifier
An attempt was made to change some option other than A
(use long addressing mode) or C (check array
boundaries) in an $OPTION metacommand.
45 NEXT without FOR or WEND without WHILE
A NEXT statement was encountered when no FOR was
pending, or a WEND statement was encountered when no
WHILE was pending.
46 END IF without IF
An END IF statement was encountered when no block IF
statement was pending.
47 Array boundary error
This error can result from one of the following
conditions:
1. A static array reference is outside the limits of
the array. This is the only boundary checking that
can be done in the compiler; all other types are
done at run time.
2. A static array is declared in such a way that it
cannot have any elements, as in the following
example:
OPTION BASE 1
DIM STATIC ARRAY%(0)
48 Illegal FOR variable
An array reference is used as a FOR variable.
49 Case constant exceeds 126 character limit
The maximum length permissible for a string in a CASE
selector statement is 126 characters.
50 Semicolon was expected
The compiler did not find a semicolon after
string-expression in a PRINT USING string-expression or
PRINT #filenumber USING string-expression statement.
51 A comma was expected
The compiler encountered a syntax error in any of
several I/O statements, subprograms and function
calls, or declarations.
52 Argument type mismatch
This error is encountered in a number of instances
where types should match. For example, in subprogram
calls, this message indicates that the actual argument
types do not exactly match the declared parameter types
in the SUB statement. In function calls, it indicates a
character has been passed for a number of vice-versa.
This error also occurs in the following situations:
1. A LINE INPUT statement is followed by some-
thing other that a string variable.
2. There is a string array in a graphics GET or
PUT statement.
3. Something other that a string expression is
used in a BUTTON, EDIT FIELD, PICTURE, or
WINDOW statement.
53 This feature requires the N option
This features requires some process to occur between
each statement; this processing is enabled by the
compiler N option. Note that this option significantly
slows program execution.
54 FOR/WHILE loops nested deeper than 64
The combined number of FOR and WHILE statements
without matching NEXT or WEND statements is greater
that 64.
55 CASE without SELECT CASE
The compiler has encountered a CASE statement outside
a SELECT CASE...END SELECT block.
56 Statement not in a subprogram block
After the main program block, the compiler encountered
statements following an END SUB statement that are not
in a new SUB...END SUB subprogram block.
Subprogram blocks cannot be interspersed with the main
program; subprograms must appear either before or after
the main program block.
58 Attempt to redefine option base
The option base is a global value in a compiled Basic
program and can be defined only once. This value can
be defined explicitly in an OPTION BASE statement or
implicitly by simply declaring an array. In the latter
case, the option base is 0, the default.
59 Illegal argument
An invalid argument was passed to an intrinsic Basic
function, such as a static array as the argument to
LBOUND or UBOUND.
60 Address out of 16-bit-range - use A option
Your program is too large for the default addressing
mode. Recompile your program with the A option
(long addressing mode). (See Section 4.3.1 for
information about the A option.)
61 An equals sign was expected
The compiler did not encounter an expected equal (=)
sign. This error can be caused by any situation where
an equal sign should appear (such as after the LEN
keyword in an OPEN statement), but does not.
62 Undeclared subprogram
A name does not refer to a legal subprogram. This error
occurs when both of the following conditions are true:
1. A user-defined name in a CALL statement is
not defined in a SUB statement and is not
a defined variable.
2. There are no LIBRARY statements in the program.
63 Static variables cannot be erased
The argument in an ERASE statement is a static array.
64 System startup code file not found
The compiler was unable to find the basinit file
(basinit contains the run-time start-up object code
and other resources required by the compiler).
65 Internal error
The compiler has detected an unexpected error. This
error report indicates a problem within the compiler
rather than within the source code being compiled.
Please report the conditions and the circumstances in
which it occurred to Microsoft, using the Software
Problem Report at the back of this manual.
99 Internal stack level error
This occurs when the compiler detects that the code
it has generated would leave the run-time stack in
an inconsistent state. As in error 65, this indicates
a problem in the compiler that should be reported to
Microsoft.
Undefined error code - internal error
This error occurs when the compiler error handler
encounters an undefined error number. As in errors
65 and 99, this indicates a problem in the compiler
that should be reported to Microsoft.
Modification Type: |
Minor |
Last Reviewed: |
1/8/2003 |
Keywords: |
KB43020 |
|