Esperando [UNTIL]

Un bloque de sentencias que comenzó con la palabra reservada REPEAT debe acabar necesariamente con la palabra UNTIL; en la posición indicada del programa se ha finalizado el bloque de sentencias con otra palabra diferente, lo más probable es:

- Que se ha finalizado un REPEAT con un END en cuyo caso, si lo que se prentende es realizar un bucle indefinidamente, se debe utilizar la sentencia LOOP ... END.

Ejemplo:
PROGRAM mi_juego;
BEGIN
    REPEAT
    //...
    END // Error: Esperando [UNTIL]
END


- Que dentro del bucle REPEAT ... UNTIL aparezca una palabra como END o ELSE de más y, por lo tanto, sin su correspondiente inicio (IF, WHILE, ...).

Ejemplo:
PROGRAM mi_juego;
BEGIN
    REPEAT
        IF (x<0) x++; END
            y++;
        END // Error: Esperando [UNTIL]
    UNTIL (x>=0);
END


  En este caso, se ha puesto el END del IF dos veces, interpretando el compilador que el segundo END pretende cerrar el REPEAT.

- O, por último, que se haya olvidado poner el UNTIL del REPEAT.


Ver: Sintaxis - Sentencia REPEAT - IF - WHILE