Una cosa para tener en cuenta en cuanto se encuentre la palabra clave SUB_BEGIN es que el compilador
automáticamente añade una instrucción END antes de que empiece la subrutina si al usuario se le olvida
inicializarla y evade resultados inesperados cuando se ejecute el.
Similar al SALTO condicional, la instrucción LLAMAR puede ser utilizada en conjunto con la palabra clave
IF, para ramificar el programa cuando se detecte una condición.
Ejemplo:
IF BI_1 IS OPEN THEN CALL SUBROUTINE_PRG_2
.. Cuando acabe la subrutina,
El programa continuara ejecutando
Las líneas siguientes a la palabra LLAMAR
END
SUB_BEGIN [SUBROUTINE_ PRG_2]
.. Programa de subrutina
SUB_END
En el ejemplo de arriba, el CALL llama a la subrutina si el resultado de la comparación es VERDADERO, de
otra manera la subrutina no será llamada. En este capítulo se dará más información de la apalabra clave
IF.
NOTA: Es importante tener en mente que las subrutinas no son de re-entrada, esto significa que una
subrutina no puede llamar a otra subrutina, entonces existen básicamente solo dos niveles de programa
corriendo en cualquier momento:
El bucle del programa principal.
Los niveles de subrutinas.
Entonces cada vez que una instrucción END es encontrada es interpretada dependiendo del contexto, si
el programa esta en el bucle principal el programa acabará y empezará un nuevo nivel de iteración.
Si en lugar el END se encuentra mientras hay una subrutina, acabará la subrutina y cederá control a la
instrucción siguiendo a la subrutina CALL en el bucle principal.
Wizard de HVAC Y automatización de edificios eZ rev. 2, @ 22/03/2018
// El programa acaba aquí
// Subrutina condicional LLAMAR
// del programa principal
// Etiquetas de documentación
// llamadas o saltos pueden ser
//
creadas
fácilmente
corchetes
// El programa vuelve a tomar el
// control de una subrutina
cuando
la
instrucción
// es encontrada
utilizando
END_SUB
Page 40