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:
- 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).
- 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