Procedure Division

Bien, hemos llegado a la última división que existe un los programas Cobol, en ella encontramos todos los procesos necesarios para que el programa funcione, que haga para la que fue concebido.
Todo ésto se realiza con instrucciones (ordenes, verbos, comandos, etc..), que se explican en otros capítulos del manual. Cada uno de ellos con un formato y una solución que resolver.

A continuación vamos a explicar su formato y algunas consideraciones generales aparte de las propias instrucciones:

PROCEDURE DIVISION (USING Variable, Variable …).
DECLARATIVES.
Nombre-seccionSECTION.
USE AFTER ERROR PROCEDURE ON tipo.
Nombre-parrafo.
Sentencias.
…..
END DECLARATIVES.
Nombre-seccion SECTION.
Nombre-parrafo.
Sentencias.

…..

Este sería a groso modo el formato general de una Procedure, pero incluso se puede omitir si en un programa no vamos a realizar ningún proceso (es obvio que siempre lo realizaremos, pero se podría omitir). Vamos a explicar un poco su formato:

PROCEDURE DIVISION (USING Variable, Variable …).
Cuando especificamos USING en la linea de PROCEDURE DIVISION , después deberemos de dar los nombres de variables que hayamos definido en la LINKAGE SECTION, para compartir en el programa, lo que nos indicará que éste ha sido llamado por otro programa y que esas variables traerán un valor procedente del programa llamador, que a su vez utilizó la instrucción CALL con las mismas variables.

DECLARATIVES, es una sección dentro de la PROCEDURE que nos va a servir para controlar los posibles errores en cuanto al manejo de ficheros se refiere. La linea de DECLARATIVES, (si se va a utilizar) deberá de ir siempre a continuación de la linea de PROCEDURE DIVISION . Despues de subdiviría en tantas secciones como opciones de error tengamos, éstas pueden ser definidas por archivo o bien forma de apertura, es decir podremos controlar los errores que nos lleguen de un fichero en concreto o de todos aquellos que hayan sido abiertos de de igual forma, ésto se especifica en la linea USER AFTER ERROR PROCEDURE ON tipo, pudiendo ser tipo, el nombre del archivo o su modo de apertura (INPUT, OUTPUT, I-O , EXTEND. A continuación irían los párrafos con sus respectivas instrucciones a realizar en caso de error.
Se pondrían tantos párrafos y secciones como quisieramos controlar, siempre teniendo en cuenta que ésta se acaba cuando se indique END DECLARATIVES.
Si no quisieramos utilizar ésta sección, podriamos de igual manera controlar los errores en nuestro programa preguntando siempre por la variable de error de cada fichero que se definió como FILE STATUS en la FILE-CONTROL.

Nombre-seccion SECTION, a partir de aqui incluiremos todas las instucciones necesarias para la correcta ejecución del programa.


Ya sabemos que Cobol es un lenguaje estructurado, pues bien no pensemos que la Procedure va a ser un caos de instrucciones escritas secuencialmente, no, en ella podremos definir tantas Secciones (SECTION) y Párrafos como queramos para organizar mejor las instrucciones y para delimitar acciones concretas, eso si siempre se ejecutarán secuencialmente, excepto cuando encuentre algún verbo de bifurcación como GO, PERFORM que haciendo referencia a esos nombres de párrafo harán que se rompa la secuencia lógica de ejecución.


En las comparaciones que hagamos podremos utilizar los siguientes formatos:

MAYOR QUE
[ (NOT) GREATER ]
[ (NOT) > ]
MENOR QUE
[ (NOT) LESS ]
[ (NOT) < ]
IGUAL QUE
Literal [ (NOT) EQUAL ] Literal
Variable [ (NOT) = ] Variable
MAYOR O IGUAL QUE
[ GREATER OR EQUAL ]
[ = ]
MENOR O IGUAL QUE
[ LESS OR EQUAL ]
[ <= ]

Si se especifica (NOT ) se da a entender lo contrario de la comparación, con lo que no mayor que puede ser igual que menor o igual que.


Tambien podemos utilizar para las condiciones complejas los operandos lógicos, AND, OR y NOT según se requieran, todas las condicionea que incluyan AND han de ser correctas para que pase la condición, si se utiliza OR solo alguna de ellas ha de ser correcta, cuando se utilice NOT no podrá ser correcta para que la condición sea válida.