Microsoft KB Archive/35718
Article ID: 35718
Article Last Modified on 1/9/2003
- Microsoft QuickBasic Compiler for Macintosh 1.0
This article was previously published under Q35718
Executing an isolated NEXT statement within a block IF...END IF statement produces an error in the Macintosh QuickBASIC interpreter; however, it will compile and run.
Executing the NEXT statement without the matching FOR in the same IF statement is a bad programming practice because it may cause problems with the stack. This practice can cause the stack to overflow and generate a memory error, or cause the program's flow of control to branch incorrectly. (In the interpreter, the stack keeps track of where to return when a loop is finished.)
The NEXT statement should never be executed conditionally in a single-line or block IF...END IF statement. It is easy to find an alternative flow-of-control structure that performs the same logic.
The following are error messages you are likely to encounter in the interpreter when attempting to conditionally execute a NEXT statement.
The following is a code example that will give an "IF without END IF" error message in the interpreter, but will successfully compile and execute:
' **** This is an example of BAD PROGRAMMING **** FOR loopme = 1 to 2 ' conditionally begin inner loop IF loopme = 1 THEN FOR i = 1 TO 5 PRINT loopme; i; "Hi there." ' conditionally end inner loop IF loopme = 1 THEN '(interpreter error here) NEXT i END IF NEXT loopme
This example works in both environments if both IF statements are single-line IF statements. However, this unstructured programming practice may not be supported in future versions of Macintosh BASIC.
Additional query words: MQuickB