En aquest tema, aprendrem com ordenar i fusionar dades en COBOL. Aquestes operacions són fonamentals per a la gestió eficient de grans volums de dades, especialment en aplicacions empresarials. COBOL proporciona instruccions específiques per a aquestes tasques, que veurem en detall a continuació.
- Introducció a l'Ordenació de Dades
L'ordenació de dades és el procés d'organitzar les dades en un ordre específic, ja sigui ascendent o descendent. COBOL utilitza la instrucció SORT
per a aquesta finalitat.
1.1. Sintaxi de la Instrucció SORT
1.2. Explicació de la Sintaxi
file-name
: Nom del fitxer de treball que s'utilitzarà per a l'ordenació.ASCENDING/DESCENDING KEY
: Especifica si l'ordenació serà en ordre ascendent o descendent.key-name
: Nom del camp que s'utilitzarà com a clau d'ordenació.USING input-file
: Nom del fitxer d'entrada que conté les dades a ordenar.GIVING output-file
: Nom del fitxer de sortida on es guardaran les dades ordenades.
1.3. Exemple Pràctic
IDENTIFICATION DIVISION. PROGRAM-ID. SortExample. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT InputFile ASSIGN TO 'input.dat'. SELECT OutputFile ASSIGN TO 'output.dat'. SELECT WorkFile ASSIGN TO 'work.dat'. DATA DIVISION. FILE SECTION. FD InputFile. 01 InputRecord. 05 KeyField PIC X(10). 05 DataField PIC X(40). FD OutputFile. 01 OutputRecord. 05 KeyField PIC X(10). 05 DataField PIC X(40). SD WorkFile. 01 WorkRecord. 05 KeyField PIC X(10). 05 DataField PIC X(40). PROCEDURE DIVISION. SORT WorkFile ON ASCENDING KEY KeyField USING InputFile GIVING OutputFile. STOP RUN.
1.4. Explicació de l'Exemple
- InputFile: Fitxer d'entrada amb les dades a ordenar.
- OutputFile: Fitxer de sortida amb les dades ordenades.
- WorkFile: Fitxer de treball utilitzat per a l'ordenació.
- SORT: Instrucció que ordena les dades del
InputFile
en ordre ascendent segonsKeyField
i les guarda enOutputFile
.
- Introducció a la Fusió de Dades
La fusió de dades és el procés de combinar dos o més fitxers ordenats en un sol fitxer ordenat. COBOL utilitza la instrucció MERGE
per a aquesta finalitat.
2.1. Sintaxi de la Instrucció MERGE
MERGE file-name ON ASCENDING/DESCENDING KEY key-name USING input-file-1 input-file-2 ... GIVING output-file.
2.2. Explicació de la Sintaxi
file-name
: Nom del fitxer de treball que s'utilitzarà per a la fusió.ASCENDING/DESCENDING KEY
: Especifica si la fusió serà en ordre ascendent o descendent.key-name
: Nom del camp que s'utilitzarà com a clau de fusió.USING input-file-1 input-file-2 ...
: Noms dels fitxers d'entrada que contenen les dades a fusionar.GIVING output-file
: Nom del fitxer de sortida on es guardaran les dades fusionades.
2.3. Exemple Pràctic
IDENTIFICATION DIVISION. PROGRAM-ID. MergeExample. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT InputFile1 ASSIGN TO 'input1.dat'. SELECT InputFile2 ASSIGN TO 'input2.dat'. SELECT OutputFile ASSIGN TO 'output.dat'. SELECT WorkFile ASSIGN TO 'work.dat'. DATA DIVISION. FILE SECTION. FD InputFile1. 01 InputRecord1. 05 KeyField PIC X(10). 05 DataField PIC X(40). FD InputFile2. 01 InputRecord2. 05 KeyField PIC X(10). 05 DataField PIC X(40). FD OutputFile. 01 OutputRecord. 05 KeyField PIC X(10). 05 DataField PIC X(40). SD WorkFile. 01 WorkRecord. 05 KeyField PIC X(10). 05 DataField PIC X(40). PROCEDURE DIVISION. MERGE WorkFile ON ASCENDING KEY KeyField USING InputFile1 InputFile2 GIVING OutputFile. STOP RUN.
2.4. Explicació de l'Exemple
- InputFile1, InputFile2: Fitxers d'entrada amb les dades a fusionar.
- OutputFile: Fitxer de sortida amb les dades fusionades.
- WorkFile: Fitxer de treball utilitzat per a la fusió.
- MERGE: Instrucció que fusiona les dades dels
InputFile1
iInputFile2
en ordre ascendent segonsKeyField
i les guarda enOutputFile
.
- Exercicis Pràctics
Exercici 1: Ordenació de Dades
Descripció: Escriu un programa COBOL que ordeni un fitxer d'entrada students.dat
en ordre ascendent segons el camp StudentID
i guardi el resultat en sorted_students.dat
.
Solució:
IDENTIFICATION DIVISION. PROGRAM-ID. SortStudents. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT StudentsFile ASSIGN TO 'students.dat'. SELECT SortedStudentsFile ASSIGN TO 'sorted_students.dat'. SELECT WorkFile ASSIGN TO 'work.dat'. DATA DIVISION. FILE SECTION. FD StudentsFile. 01 StudentRecord. 05 StudentID PIC X(10). 05 StudentName PIC X(30). FD SortedStudentsFile. 01 SortedStudentRecord. 05 StudentID PIC X(10). 05 StudentName PIC X(30). SD WorkFile. 01 WorkRecord. 05 StudentID PIC X(10). 05 StudentName PIC X(30). PROCEDURE DIVISION. SORT WorkFile ON ASCENDING KEY StudentID USING StudentsFile GIVING SortedStudentsFile. STOP RUN.
Exercici 2: Fusió de Dades
Descripció: Escriu un programa COBOL que fusioni dos fitxers d'entrada sales1.dat
i sales2.dat
en ordre descendent segons el camp SaleID
i guardi el resultat en merged_sales.dat
.
Solució:
IDENTIFICATION DIVISION. PROGRAM-ID. MergeSales. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT SalesFile1 ASSIGN TO 'sales1.dat'. SELECT SalesFile2 ASSIGN TO 'sales2.dat'. SELECT MergedSalesFile ASSIGN TO 'merged_sales.dat'. SELECT WorkFile ASSIGN TO 'work.dat'. DATA DIVISION. FILE SECTION. FD SalesFile1. 01 SalesRecord1. 05 SaleID PIC X(10). 05 SaleAmount PIC 9(5)V99. FD SalesFile2. 01 SalesRecord2. 05 SaleID PIC X(10). 05 SaleAmount PIC 9(5)V99. FD MergedSalesFile. 01 MergedSalesRecord. 05 SaleID PIC X(10). 05 SaleAmount PIC 9(5)V99. SD WorkFile. 01 WorkRecord. 05 SaleID PIC X(10). 05 SaleAmount PIC 9(5)V99. PROCEDURE DIVISION. MERGE WorkFile ON DESCENDING KEY SaleID USING SalesFile1 SalesFile2 GIVING MergedSalesFile. STOP RUN.
- Resum
En aquest tema, hem après com ordenar i fusionar dades en COBOL utilitzant les instruccions SORT
i MERGE
. Hem vist la sintaxi d'aquestes instruccions, exemples pràctics i hem realitzat exercicis per reforçar els conceptes apresos. Aquestes operacions són essencials per a la gestió eficient de dades en aplicacions empresarials, i dominar-les és crucial per a qualsevol programador COBOL.
Curs de Programació COBOL
Mòdul 1: Introducció al COBOL
- Què és el COBOL?
- Història del COBOL
- Configuració de l'Entorn COBOL
- Estructura Bàsica d'un Programa COBOL
Mòdul 2: Sintaxi Bàsica del COBOL i Tipus de Dades
Mòdul 3: Estructures de Control
Mòdul 4: Treballant amb Dades
- Gestió d'Arxius en COBOL
- Processament d'Arxius Seqüencials
- Processament d'Arxius Indexats
- Processament d'Arxius Relatius
Mòdul 5: Gestió Avançada de Dades
Mòdul 6: Subprogrames i Programació Modular
Mòdul 7: Gestió d'Errors i Depuració
Mòdul 8: COBOL i Bases de Dades
Mòdul 9: Temes Avançats
- COBOL Orientat a Objectes
- COBOL i Serveis Web
- Optimització del Rendiment
- Millors Pràctiques en Programació COBOL