Mostrando entradas con la etiqueta division. Mostrar todas las entradas
Mostrando entradas con la etiqueta division. Mostrar todas las entradas

martes, 25 de enero de 2011

Esquema de un programa cobol

Los programas cobol se dividen en partes llamadas "DIVISION" que a su vez se separan en secciones llamadas "SECTION". Vamos a ver el esquema básico que todo programa cobol debe tener:

IDENTIFICATION DIVISION.
PROGRAM-ID. PRUEBA1.

   Nombre del programa. Debe coincidir con el nombre externo del programa.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
    DECIMAL-POINT IS COMMA.


   Nosotros usamos los puntos como separadores de miles y la coma como el separador de decimales.

INPUT-OUTPUT SECTION.
FILE-CONTROL.

   En esta parte se definen los ficheros en caso de que los haya.

    SELECT FICHERO1

   Nombre de fichero.

    ACCES MODE IS SEQUENTIAL

   Tipo de acceso: SEQUENTIAL para los planos, INDEXED para los indexados.

    FILE STATUS IS FS-FICHERO1

   Variable donde guardará el file-status (código de control de errores de acceso a ficheros).

DATA DIVISION.
FILE SECTION.
FD FICHERO1 RECORDING MODE IS F

   Fichero con longitud fija. Si fuese de longitud variable pondríamos V.

    BLOCK CONTAINS 0 RECORDS
    RECORD CONTAINS 129 CHARACTERS.

   Longitud del fichero.

01 REG-FICHERO1 PIC X(129).

   Donde guardaremos la información.

WORKING-STORAGE SECTION.

   En ella definimos las variables que usaremos en el programa.

01 WX-VARIABLE PIC X.

   Definición de variables lo veremos más adelante.

LINKAGE SECTION.

   Área de comunicación con otros programas

01 AREA-LINKAGE PIC X.
PROCEDURE DIVISION. / PROCEDURE DIVISION USING AREA-LINKAGE.

   Si hay un área definida en la linkage debemos incluir el USING en la procedure.

Aquí es donde va el programa en sí. La estructura general será:

0000-PRINCIPAL.
    PERFORM 1000-INICIO

    PERFORM 2000-PROCESO
      UNTIL CUMPLE-CONDICION

    PERFORM 3000-FINAL
    .


La numeración de párrafos suele ser esa, pero cada empresa puede tener su propia nomenclatura estándar.

El proceso en un programa se suele repetir n veces, hasta que se cumple la condición indicada en el UNTIL.

En el párrafo de final se incluye la instrucción de finalización de ejecución:
STOP RUN para programas principales.
GOBACK para rutinas.

Se pueden definir tantos párrafos como queramos, pero la estructura de todos ellos será la siguiente:

1000-INICIO.
    código con instrucciones a realizar
    .


Es decir, todos los párrafos terminan con un punto "." que indica el final de párrafo.

A tener en cuenta:
En cobol no podemos empezar a escribir donde queramos, pues cada cosa tiene su sitio^^
Un programa cobol mide de ancho 80 posiciones, aunque sólo escribiremos hasta la 72.

----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
       01 WX-CAMPOS.
          05 WX-CAMPO1 PIC X.
          05 WX-LITERAL PIC X(40) VALUE 'LITERAL TAN GRANDE QUE NO CABE '
      -   'EN UNA LINEA Y LO TENEMOS QUE PARTIR'.
      *
       PROCEDURE DIVISION.
      ******************************************************************
       00000-PRINCIPAL.
      *
           PERFORM 10000-INICIO.


* De la posición 1 a la 6: no se codifica nada.
* Posición 7: se escribirá un * si queremos comentar la línea. En caso de que un texto no nos quepa en una línea, se escribirá en esta posición un guión "-" para continuarlo.
* De la posición 8 a la 11: se denomina área A. Aquí escribiremos las "divisiones" y "secciones", los niveles 01 y los descriptores de ficheros "FD".
* De la 12 a la 72: se denomina área B. Aquí se escribirán el resto de instrucciones del programa, y los niveles de variables subordinadas (02 en adelante).
* De la 73 a la 80: no se codifica nada.

Esto que acabamos de ver es algo muuuuy general, pero iremos viéndolo mejor con ejemplos.


Y hasta aquí la primera lección. En el siguiente artículo veremos la WORKING-STORAGE, donde se definen las varibles que vamos a usar a lo largo del programa. Veremos los diferentes tipos de variables, el cálculo de longitudes y como se visualizan en un fichero.