Microsoft KB Archive/43020
Article ID: 43020
Article Last Modified on 11/21/2006
This article was previously published under Q43020
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).
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.
Additional query words: MQuickB