Declaración de funciones
Los bloques de funciones se comportan de forma análoga a las funciones de C/C++ se ejecutan de forma secuencial (y no en paralelo como los bloques PROCESS), no retornando hasta que encuentre una sentencia return o no retorne nada si dicha función es del tipo void (vacío).
Declaración de una función:
tipo nombre ( parámetros ){ Declaración de datos sentencia ; ... }
Estos bloques seguirán funcionando de forma muy similar a los procesos normales, pero con una importante diferencia: detendrán al proceso llamador hasta finalizar, es decir, que estas funciones dormirán al proceso que las ha llamado, hasta que estas funciones retornen.
Una función no puede utilizar sentencias FRAME, ni variables locales de los procesos (x, y, angle, etc...), solo las definidas dentro de la función.
Aplicaciones en el programa principal.
Las sentencias que aparecen entre las palabras BEGIN_PROGRAM y END_PROGRAM del programa principal (tras las declaraciones de datos), controlan el proceso principal del programa. Este es el encargado de inicializar el programa, realizar las presentaciones, controlar los bucles de menú, los bucles de juego (creando los procesos necesarios), y finalizar el programa.
En el programa principal, puede ser muy útil llamar a funciones. Ya que de esta forma será detenido el programa principal mientras se ejecuta la parte que controla dicha función.
Por ejemplo, la secuencia de presentación podría hacerse en una función, el menú de opciones en otra, etc. Además, se recuerda que las funciones pueden finalizar, devolviendo un valor con return(expresión) o simplemente return, lo cual puede ser también útil para que, por ejemplo el menú, devuelva el número de opción que ha sido seleccionada.
Nota: Que finalice la ejecución del código principal no implica que finalice la ejecución del programa, pues ésta continuará si quedan procesos vivos; si se quiere forzar la terminación del programa cuando finalice este código, se puede utilizar, por ejemplo, la función let_me_alone() justo antes del END_PROGRAM del código principal, o bien la función cdiv_exit() (en cualquier punto del programa).