Die REPEAT-Schleife unterscheidet sich von der WHILE-Schleife dadurch, dass die Abbruchbedingung erst nach Ausführung der Schleife geprüft wird. Dies bedeutet, dass die Schleife mindestens einmal durchlaufen wird, unabhängig vom Wortlaut der Abbruchbedingung.
Syntax:
REPEAT
<Anweisungen>
UNTIL <Boolean expression>
END_REPEAT;
Die <Anweisungen> werden ausgeführt, bis der <Boolesche Ausdruck> TRUE zurückgibt.
Wenn <Boolescher Ausdruck> schon bei der ersten TRUE-Auswertung erzeugt wird, dann werden <Anweisungen> nur einmal ausgeführt. Wenn <Boolean_expression> nie den Wert TRUE 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 beispielsweise einen Zähler hoch- oder runterzählt.
Beispiel:
REPEAT
Var1 := Var1*2;
Counter := Counter-1;
UNTIL
Counter=0
END_REPEAT;