Die WHILE-Schleife kann wie die FOR-Schleife verwendet werden, mit dem Unterschied, dass die Abbruchbedingung ein beliebiger boolescher Ausdruck sein kann. Das heißt, Sie geben eine Bedingung an, bei deren Erfüllung die Schleife ausgeführt wird.
Syntax:
WHILE <Boolean expression>
<Anweisungen>
END_WHILE;
Die <Anweisungen> werden wiederholt ausgeführt, solange der <Boole_Ausdruck> TRUE liefert. Wenn der <Boolean_Ausdruck> bei der ersten Auswertung bereits FALSE ist, dann werden die <Anweisungen> nie ausgeführt. Wenn <Boolean_expression> nie den Wert FALSE annimmt, dann werden die <Instructions> endlos wiederholt, was eine relative Zeitverzögerung verursacht.
Der Programmierer muss sicherstellen, dass keine Endlosschleife verursacht wird. Er tut dies, indem er die Bedingung im Anweisungsteil der Schleife ändert, indem er zum Beispiel einen Zähler hoch- oder runterzählt.
Beispiel:
WHILE counter<>0 DO
Var1 := Var1*2;
Counter := Counter-1;
END_WHILE
Die WHILE- und REPEAT-Schleifen sind in gewissem Sinne leistungsfähiger als die FOR-Schleife, da man die Anzahl der Zyklen vor der Ausführung der Schleife nicht kennen muss. In manchen Fällen wird man daher nur mit diesen beiden Schleifentypen arbeiten können. Wenn jedoch die Anzahl der Schleifenzyklen klar ist, dann ist eine FOR-Schleife vorzuziehen, da sie keine Endlosschleifen zulässt.