PROCEDURE DIVISION

 

Contiene todas las instrucciones que la computadora ejecutará. Se divide en párrafos (módulos o rutinas) independientes. Los nombres de los párrafos comienzan en el Area A, se escriben en una línea independiente y terminan con un punto. Cada párrafo consiste de instrucciones que empiezan con verbos (como ADD, READ, MOVE) o condiciones como IF… . Las instrucciones se ejecutan en secuencia, excepto cuando hay un ciclo, como por ejemplo PERFORM UNTIL.

 

Instrucciones:

OPEN – Accesa los archivos e indica cuáles son de Input y cuáles de Output.

Ej.        OPEN INPUT             EMPLOYEE-IN

                        OUTPUT        PAGA-OUT

 

CLOSE – Cierra los archivos al finalizar el proceso. No se indica si el archivo fue usado para entrada (Input) o salida (Output).

Ej.        CLOSE          PAYROLL

                                    PAYCHECKS

 

PERFORM UNTIL … END-PERFORM – Crea un ciclo o "loop", que es una técnica de programación que ejecuta una serie de instrucciones un número determinado de veces o hasta que una condición se cumpla. Las instrucciones en medio son ejecutadas hasta que se cumpla la condición en la cláusula UNTIL. Cuando se cumple la condición, el control del programa se coloca en la instrucción que le sigue al END-PERFORM.

Ej.        PERFORM UNTIL A = B

                        .           (Se repite las instrucciones hasta que A sea igual a B.

                        .             En algún momento se tiene que igualar A a B para que termine

                        .             el ciclo. De lo contrario, el ciclo será infinito y habrá error.)

 

            END-PERFORM

 

READ – Transmite datos desde el equipo de entrada o input (descritos en el Environment Division) al área de almacenar los datos de entrada (descritos en el Data Division). Su función principal es transmitir un record de datos al área de input reservada para ese archivo. Se usa el nombre del archivo al lado del READ según esté descrito en el FD y en el SELECT de ese archivo.

Ej.        READ EMP-IN

                        AT END MOVE “N” TO HAY-MAS-RECORDS

(opcional)                        NOT AT END PERFORM 500-PROCESO

            END-READ

 

STOP-RUN – Indica a la computadora que el programa ha terminado. Es usualmente la última instrucción del párrafo principal (MAIN).

 

WRITE – Toma datos del área de output definida en el Data Division y los transmite al equipo de output detallado en el Environment Division. Se usa el nombre del record al lado del verbo WRITE, según se definió en la cláusula 01 de ese archivo.

Ej.        WRITE PAGA-OUT-RECORD

 

MOVE – Mueve (o copia) el valor de un identificador (variable) a otro identificador. Al finalizar la instrucción, ambos identificadores deben tener el mismo valor.

Ej.        MOVE 123 TO NUMERO

            MOVE “MARIA” TO NOMBRE

            MOVE NAME-IN TO NAME-OUT

 

Verbos Aritméticos

Es bien importante definir correctamente la cláusula PICTURE al definir los campos en el Data Division para asegurarse que el tamaño del campo que recibe el resultado sea el correcto. El resultado se guardará en el último identificador de la instrucción. La cláusula GIVING es opcional, excepto al usar DIVIDE BY.

 

Para los siguientes ejemplos, asumir que A = 2, B = 3 y C = 4

 

ADDPara sumar dos identificadores.

Ej.        ADD 5 TO A                          (el valor de A cambia a 7)

ADD 5 TO B GIVING C        (el valor de C cambia a 8, B sigue igual a 3)

ADD B TO C GIVING A        (el valor de B y C no cambia, A cambia a 7)

ADD A TO B                          (el valor de B cambia a 5)

 

SUBTRACT – Resta el primer identificador del segundo identificador.

Ej.        SUBTRACT 1 FROM B                               (B = 2)                                    (B-1)

            SUBTRACT B FROM C                               (B = 3, C = 1)                         (C-B)

            SUBTRACT B FROM C GIVING A             (B = 3, C = 4, A = 1)              (C-B)

 

MULTIPLY – Multiplica el primer identificador por el segundo identificador.

Ej.        MULTIPLY 5 BY A                                         (A = 10)                                  (5*A)

            MULTIPLY A BY C                                        (A = 2, C = 8)                         (A*B)

            MULTIPLY A BY C GIVING B                      (A = 2, C = 4, B = 8)              (A*C)

 

DIVIDE INTO – Divide el segundo identificador entre el primer identificador.

Ej.        DIVIDE 6 INTO B                                          (B = 0.5)                                 (B/6)

            DIVIDE A INTO C                                          (A = 2, C = 2)                         (C/A)

            DIVIDE A INTO C GIVING B                        (A = 2, C = 4, B = 2)              (C/A)

 

DIVIDE BY – Divide el primer identificador entre el segundo identificador. Requiere el uso de la cláusula GIVING.

Ej.        DIVIDE 6 BY B GIVING A                            (B = 3, A = 2)                         (6/B)

            DIVIDE C BY A GIVING B                            (C = 4, A = 2, B = 2)              (C/A)

            DIVIDE C BY 2 GIVING A                            (C = 4, A = 2)                         (C/2)