FORMATO DEL MERGE Prof. Nelliud D. Torres
PROPÓSITO Se utiliza como una alternativa para organizar un archivo con datos que sea extremadamente grande. Proviene de la necesidad de aquella época de organizar datos con pocos recursos (memoria, espacio en disco, etc.) Se divide el archivos en varias partes y se organiza cada uno por separado (Sort) Al final se utiliza el concepto del MERGE para unir esos pequeños archivos en el archivo grande original, pero ya organizado.
DIAGRAMA Proceso de MERGE Proceso de SORT
MERGE file-name-1 ON {DESCENDING KEY { data-name-1}... } ASCENDING} COLLATING SEQUENCE IS alphabet-name USING file-name-2 [ file-name-3 ]... THRU OUTPUT PROCEDURE IS procedure-name-1 THROUGH procedure-name-2 GIVING {fine-name-4} MERGE SYNTAX
EJEMPLO MERGE MERGEWORKFILE ON ASCENDING KEY TRANSDATEWF, TRANSCODEWF, STUDENTIDWF USING INSERTTRANSFILE, DELETETRANSFILE, UPDATETRANSFILE GIVING COMBINEDTRANSFILE.
Ejemplo de Código IDENTIFICATION DIVISION. PROGRAM-ID. MergeFiles. AUTHOR. MICHAEL COUGHLAN. * Example program demonstrating the use of the MERGE. * The program merges the file Students.Dat and * Transins.Dat to create a new file Students.New ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT StudentFile ASSIGN TO "STUDENTS.DAT" ORGANIZATION IS LINE SEQUENTIAL. SELECT InsertionsFile ASSIGN TO "TRANSINS.DAT" ORGANIZATION IS LINE SEQUENTIAL. SELECT NewStudentFile ASSIGN TO "STUDENTS.NEW" ORGANIZATION IS LINE SEQUENTIAL. SELECT WorkFile ASSIGN TO "WORK.TMP".
DATA DIVISION. FILE SECTION. FD StudentFile. 01 StudentRec PIC X(30). FD InsertionsFile. 01 InsertionRec PIC X(30). FD NewStudentFile. 01 NewStudentRec PIC X(30). SD WorkFile. 01 WorkRec. 02 StudentIdWF PIC 9(7). 02 FILLER PIC X(23). PROCEDURE DIVISION. Begin. MERGE WorkFile ON ASCENDING KEY StudentIdWF USING InsertionsFile, StudentFile GIVING NewStudentFile. STOP RUN. Ejemplo de Código (Cont.)
LOGICA DEL MERGE 1.Para unir dos archivos secuenciales, ambos deben estar organizados (SORT) por un campo clave en común. 2.El resultado se debe almacenar en un archivo diferente de los originales. 3.Para propósitos del proyecto, solo vamos a trabajar con dos (2) archivos a la misma vez. 4.Para el siguiente ejemplo, asuma que R1 es un record del primer archivo y R2 es un record del segundo archivo.
PROCEDIMENTO PARA MERGE IF R1 > R2 1. Mover el record del archivo 2 al archivo nuevo. 2. Leer un nuevo record del archivo 2. IF R1 < R2 1. Mover el record del archivo 1 al archivo nuevo. 2. Leer un nuevo record del archivo 1. IF R1 = R2 1. Mover ambos records al archivo nuevo. 2. Leer los próximos dos records de cada archivo y volver a comparar. Recuerde que tiene que contenplar la posibilidad de que se termine cualquiera de los dos archivos en cualquier momento. archivo 1 B D archivo nuevo A B C D archivo 2 A C