La sentencia RETURN finaliza el proceso actual de forma inmediata, como si se llegara al END de su BEGIN.
Esta sentencia en el código principal lo finalizará, pero si quedan procesos vivos éstos se seguirán ejecutando. Para terminar un programa y todos sus procesos se puede utilizar, por ejemplo, la función exit().
Un RETURN dentro de un proceso lo finalizará, matando a dicho proceso.
PROGRAM mi_juego; BEGIN LOOP IF (key(_esc)) RETURN; END FRAME; END END
En este ejemplo, al pulsarse la tecla de escape (ESC) se ejecutará la sentencia RETURN, finalizando el programa.
Uso de RETURN para retornar un valor
Es posible construir procesos con un comportamiento similar a las funciones de otros lenguajes de programación, que reciban una serie de parámetros y devuelvan un valor. Por ejemplo, un proceso que reciba dos valores numéricos y devuelva el mayor de ambos.
Para ello, se debe utilizar esta sentencia con la siguiente sintaxis:
RETURN(<expresión>)
También es importante no utilizar la sentencia FRAME dentro del proceso, pues ésta retornará inmediatamente al proceso llamante. Cuando el compilador encuentra la sentencia FRAME dentro de un PROCESS lo cataloga directamente como proceso, descartando su posible uso como función.
Importante: Para poder retornar un valor con la sentencia RETURN después de haber ejecutado una o varias sentencias FRAME, se debe construir un bloque de tipo FUNCTION.
A continuación se muestra el ejemplo antes propuesto: una implementación de la función matemática max que devuelve el mayor de sus dos parámetros.
PROGRAM mi_juego; BEGIN x=max(2, 3)+max(5, 4); END PROCESS max(a, b) BEGIN IF (a>b) RETURN(a); ELSE RETURN(b); END END
Tras ejecutarse este programa, la variable x del proceso principal valdrá 8 (3+5).
Nota: Por defecto, si se utiliza la sentencia RETURN sin la expresión entre paréntesis o la sentencia FRAME en un proceso, el valor de retorno del mismo será su código identificador de proceso.