
SUBRUTINAS
- Las subrutinas son secciones de código que pueden ser utilziadas más de una vez.
- Permiten modularizar nuestro código.
- Nos permite mejorar la lectura y el mantenimiento de nuestro código.
- Modularizar nos permite encontrar más fácil los errores del programa. Esto se debe a que al debuggear un programa solo me preocupo que el resultado de una subrutina sea el esperado sin entrar en detalle de como se llega a ese resultado.
- Una subrutina se declara usando la palabra reservado PERFORM. Ejemplo: PERFORM selecciono_datos.
- Una subrutina puede ser colocada en un INCLUDE de datos o en el mismo control del programa, es decir, en nuestro código principal. Para declarar la subrutina se usa la palabra reservada FORM y ENDFORM.
TIPOS DE SUBRUTINAS
- Internas : Cuando la subrutina está dentro del mismo programa que la llama.
- externas: Cuando la subrutina está en un programa distinta al que las llama.
SUBRUTINAS INTERNAS
Se puede pasar datos entre los programas principales y una subrutinas a través de parámetros. A los parámetros definidos en el programa principal, a la derecha de la palabra PERFORM se los llama parámetros actuales.
A los parámetros definidos en la subrutina, a la derecha de la palabra FORM, se los llama parámetros formales.
Los parametros pueden ser de 3 tipos:
- De entrada: cuando se utilizan para psar datos del programa principal a la subrutinas.
- De salida: cuando se utilizan para pasar datos de la subrutina al programa principal.
- De entrada y salida: cuando se utilizan para pasar datos de la subrutina al programa principal y también viceversa.
PASO DE PARÁMETROS A SUBRUTINAS
Para pasar los parámetros utilizaremos tres opciones: USING, CHANGING, TABLES. Estas opciones se deben escribir en el orden que mostramos a continuación en el siguiente gráfico.
PERFORM subrutina TABLES tabla_salida
USING <parámetro de entrada>
CHANGING <parámetro de salida>.
En el bloque FORM-ENDFORM debemos especificar el tipo de los parámetros formales. De esta forma nos aseguramos que sólo se pasen parámetros del tipo que corresponden a la subrutina.
FORMAS DE PASAR PARAMETROS:
- Paso por valor: Durante la llamada a la subrutina, los parámetros formales son creadas como copias de los parámetros actuales. USING value (nombre_variable).
- Paso por referencia: Se pasa la dirección de memoria de los parámetros. Si cambiamos el valor de la variables en la subrutina también se reflejará en el programa principal. USING CHANGING.
- Paso por valor y resultado: Durante la llamada a la subrutina, los parámetros formales son cerados como copias de los parámetros actuales.
SUBRUTINAS EXTERNAS
Para llamar a una subrutina que no se encuentra en el mismo programa usamos PERFORM sub(programa) USING. También podemos agregar INCLUDEs de subrutinas a nuestro programa de la siguiente manera INCLUDE report.