do while
DO WHILE markiert den Anfang einer DO-WHILE-Schleife. Das Ende der Schleife wird durch die Anweisung ENDDO markiert. Innerhalb dieses Blockes wird durch die Bedingung im Schleifenkopf festgelegt, wie lange der Programmblock wiederholt wird.
DO WHILE <LoopCondition>
<...StatementList>
[LOOP]
[EXIT]
ENDDO
Beispiel Endlosschleife
Die folgende Schleife wird endlos ausgeführt und führt zu einer hängenden
Anwendung, illustriert aber sehr gut die einfache Version einer Schleife:
1
2
3
4
DO WHILE .T.
? "Dieser Text wird so lange auf dem Bildschirm ausgegeben" + ;
"bis jemand den Prozess abbricht."
ENDDO
Dieser Text wird so lange auf dem Bildschirm ausgegeben
bis jemand den Prozess abbricht.
Dieser Text wird so lange auf dem Bildschirm ausgegeben
bis jemand den Prozess abbricht.
...
Vorzeitiges Beenden der Schleife
Die Schleife kann vorzeitig beendet werden, wenn innerhalb des
des Programmblocks das Schlüsselwort EXIT verwendet wird.
1
2
3
4
5
DO WHILE .T.
? "Anfang der Schleife"
EXIT
? "Ende der Schleife"
ENDDO
Anfang der Schleife
Vorzeitiges Wiederholen der Schleife
Die Schleife kann vorzeitig wiederholt werden, wenn innerhalb des
des Programmblocks das Schlüsselwort LOOP verwendet wird.
1
2
3
4
5
6
7
8
9
i = 1
DO WHILE m.i < 10
IF m.i < 8
i = m.i + 1
LOOP
ENDIF
? m.i
i = m.i + 1
ENDDO
8
9