viernes, 7 de febrero de 2020

Cobol - cruce de ficheros

Veamos cómo es el cruce de ficheros.

La estructura de un programa Cobol (o el cualquier otro lenguaje) suele ser:

     INICIO
     TRATAMIENTO hasta FIN-FICHERO-ENTRADA
     FINAL

En el cruce tendríamos:

     INICIO
     TRATAMIENTO hasta FIN-FICHERO1 y FIN-FICHERO2
     FINAL

En el párrafo INICIO tendríamos la primera lectura de ambos ficheros. En cada  una de las lecturas se debe tener en cuenta lo siguiente:
  1. Si el file-status es 0 se debe mover la clave leída del fichero a CLAVE1 (si hemos leído del FICHERO1) o a CLAVE2 (si hemos leído del FICHERO2).
  2. Si el file-status es 10, no sólo hay que activar el correspondiente switch que indica que se ha llegado a final de fichero, sino que además hay que mover HIHG-VALUES a CLAVE1 (si hemos leído del FICHERO1) o a CLAVE2 (si hemos leído del FICHERO2).

En el párrafo TRATAMIENTO (que se ejecuta hasta que finalicen ambos ficheros) tendríamos la comparación de claves:

     EVALUATE TRUE
           WHEN CLAVE1 = CLAVE2
                  DISPLAY 'HAY CRUCE. CLAVE1: ' CLAVE1 '. CLAVE2: ' CLAVE2
                  PERFORM LEER-FICHERO2
           WHEN CLAVE1 < CLAVE2
                  DISPLAY 'CLAVE1 no existe en FICHERO2'
                  PERFORM LEER-FICHERO1
           WHEN CLAVE1 > CLAVE2
                  DISPLAY 'CLAVE2 no existe en FICHERO1'
                  PERFORM LEER-FICHERO2
           WHEN OTHER
                  CONTINUE
     END-EVALUATE

          Nota: Se pone WHEN OTHER, aunque no llegue a ejecutarse nunca, por-
          que por temas de calidad todo EVALUATE tiene que tener WHEN OTHER.

Espero que os sirva de ayuda si tenéis que hacer un programa de cruce en Cobol.

No hay comentarios:

Publicar un comentario