Llamada a un proceso

<nombre_del_proceso>(<lista de parámetros>)

Una llamada a un proceso se hace poniendo el nombre del proceso (su nombre), seguido de una lista con tantas expresiones separadas por comas (,), como parámetros tenga el proceso, entre paréntesis (()). Los paréntesis son obligatorios aun cuando el proceso no tenga parámetros de llamada.

Una llamada a un proceso siempre devolverá un valor, que depende de cual de las siguientes acciones realice primero el proceso llamado.

- Si ejecuta la sentencia FRAME el proceso retornará su código identificador.

- Si el proceso ejecuta la sentencia RETURN(<expresión>) retornará el resultado de dicha expresión.

- Si el proceso termina, bien porque llegue el END de su BEGIN o porque ejecute una sentencia RETURN sin expresión, el proceso retornará el código identificador que tuvo, pero como el proceso ha finalizado (muerto), se debe tener en cuenta que dicho código identificador puede ser ahora utilizado por cualquier otro proceso que se cree a partir de ahora.

El valor de retorno puede ignorarse, asignarse a una variable o bien utilizarse dentro de una expresión.

Ejemplo:
PROGRAM mi_juego;
PRIVATE
  id2;
BEGIN
    mi_proceso(0, 0);
    id2=mi_proceso(320, 200);
    // ...
END
PROCESS mi_proceso(x, y)
BEGIN
    LOOP
        FRAME;
    END
END


En este ejemplo el proceso principal mi_juego realiza dos llamadas al proceso mi_proceso, que recibe dos parámetros en sus variables locales x e y.

Como el proceso ejecuta la sentencia FRAME devolverá su código identificador.

Se puede observar cómo el valor devuelto en la primera llamada al proceso es despreciado (no se utiliza para nada), y cómo en la segunda se asigna el código identificador de mi_proceso(320, 200) a la variable privada del proceso principal id2.

Cuando se realiza una llamada a un proceso se detiene momentáneamente la ejecución del proceso actual y se pasa a ejecutar el código del proceso llamado, hasta que este retorne por uno de los tres casos enumerados (hasta que termine o ejecute una sentencia FRAME o RETURN).

Si el proceso ha terminado con una sentencia FRAME se visualizará en la siguiente imagen según los valores establecidos en sus variables locales (x, y, graph, ...) y, en la preparación de la siguiente imagen, dicho proceso continuará ejecutándose a partir de la sentencia FRAME.


Ver: Sintaxis - Parámetros de un proceso