ZBasic Language Reference
30
ZX Microcontroller Family
Do While <boolean-expression>
[<statements>]
Loop
Do Until <boolean-expression>
[<statements>]
Loop
Do
[<statements>]
Loop While <boolean-expression>
Do
[<statements>]
Loop Until <boolean-expression>
As you can see, the difference between the four variations is whether the test is at the top of the loop or
at the bottom of the loop and, secondly, the logic sense of the condition. Testing the condition at the top
of the loop means that the statements within the loop may be executed zero or more times. Testing the
condition at the bottom of the loop means that the statements will always be executed at least once.
The difference between using While and Until is nothing more than a logic inversion. The construct Do
While Not <boolean-expression> is logically equivalent to Do Until <boolean-expression>.
There is no fixed limit on how deeply Do loops may be nested. The actual limit is governed by how much
memory is available to the compiler. For all practical purposes, there is no limit.
BasicX Compatibility Note
In BasicX mode, the nesting of Do loops is limited to 10 for compatibility.
2.5.7 Exit Statement
The Exit statement allows you to terminate the execution of a loop, a function or a subroutine earlier than
it otherwise would. This is most commonly used when a condition is detected by the code that prevents
further normal processing. The syntax for the Exit statement is:
Exit <exit-type>
The <exit-type> element may be Do, For, Sub or Function but the use of each is restricted to use
within a Do-Loop, For-Next, subroutine and function, respectively. Any other use will result in a compiler
error.
Example
Do
<other-statements>
If (i > 5) Then
Exit Do
End If
<other-statements>
Loop
When an Exit Do is executed within nested Do-Loop statements only the innermost Do-Loop that
contains the exit statement will be terminated. Control will be transferred to the first statement following
the terminated Do-Loop. The same idea applies to an Exit For within nested For-Next statements.