Els arrays multidimensionals en COBOL permeten emmagatzemar dades en una estructura de taula amb més d'una dimensió. Això és útil per representar matrius, taules de dades i altres estructures complexes. En aquest tema, aprendrem com definir i utilitzar arrays multidimensionals en COBOL.
Definició d'Arrays Multidimensionals
En COBOL, els arrays multidimensionals es defineixen utilitzant la clàusula OCCURS
dins d'una altra clàusula OCCURS
. A continuació es mostra un exemple de com definir un array bidimensional:
01 SALES-TABLE. 05 SALES-RECORD OCCURS 12 TIMES. 10 MONTHLY-SALES OCCURS 4 TIMES. 15 SALES-AMOUNT PIC 9(5)V99.
En aquest exemple:
SALES-TABLE
és l'element principal que conté l'array.SALES-RECORD
és un array que conté 12 elements (per als 12 mesos de l'any).MONTHLY-SALES
és un array dins deSALES-RECORD
que conté 4 elements (per a 4 setmanes de cada mes).SALES-AMOUNT
és l'element que emmagatzema la quantitat de vendes, amb un format de 5 dígits enters i 2 decimals.
Accés a Elements d'Arrays Multidimensionals
Per accedir a un element específic d'un array multidimensional, cal especificar els índexs de cada dimensió. A continuació es mostra un exemple de com assignar un valor a un element específic i com llegir-lo:
MOVE 12345.67 TO SALES-AMOUNT (5, 2). DISPLAY 'Sales Amount for Week 2 of Month 5: ' SALES-AMOUNT (5, 2).
En aquest exemple:
SALES-AMOUNT (5, 2)
fa referència a l'element de la cinquena fila (mes) i la segona columna (setmana).- El valor
12345.67
es mou a aquest element. - El valor es mostra a la pantalla.
Exemple Pràctic
A continuació es presenta un programa complet que defineix un array bidimensional, assigna valors i mostra els resultats:
IDENTIFICATION DIVISION. PROGRAM-ID. MultiDimArrayExample. DATA DIVISION. WORKING-STORAGE SECTION. 01 SALES-TABLE. 05 SALES-RECORD OCCURS 12 TIMES. 10 MONTHLY-SALES OCCURS 4 TIMES. 15 SALES-AMOUNT PIC 9(5)V99. PROCEDURE DIVISION. MAIN-PARA. MOVE 1000.50 TO SALES-AMOUNT (1, 1). MOVE 2000.75 TO SALES-AMOUNT (1, 2). MOVE 1500.25 TO SALES-AMOUNT (1, 3). MOVE 1750.00 TO SALES-AMOUNT (1, 4). DISPLAY 'Sales Amount for Week 1 of Month 1: ' SALES-AMOUNT (1, 1). DISPLAY 'Sales Amount for Week 2 of Month 1: ' SALES-AMOUNT (1, 2). DISPLAY 'Sales Amount for Week 3 of Month 1: ' SALES-AMOUNT (1, 3). DISPLAY 'Sales Amount for Week 4 of Month 1: ' SALES-AMOUNT (1, 4). STOP RUN.
Exercicis Pràctics
Exercici 1
Defineix un array tridimensional per emmagatzemar les temperatures diàries de diverses ciutats durant una setmana. Assigna valors a alguns elements i mostra'ls.
Solució
IDENTIFICATION DIVISION. PROGRAM-ID. ThreeDimArrayExample. DATA DIVISION. WORKING-STORAGE SECTION. 01 TEMPERATURE-TABLE. 05 CITY-RECORD OCCURS 3 TIMES. 10 WEEK-RECORD OCCURS 7 TIMES. 15 DAILY-TEMPERATURE OCCURS 24 TIMES. 20 TEMPERATURE PIC 99V9. PROCEDURE DIVISION. MAIN-PARA. MOVE 25.5 TO TEMPERATURE (1, 1, 1). MOVE 26.0 TO TEMPERATURE (1, 1, 2). MOVE 24.8 TO TEMPERATURE (1, 2, 1). MOVE 23.5 TO TEMPERATURE (2, 1, 1). DISPLAY 'Temperature for City 1, Day 1, Hour 1: ' TEMPERATURE (1, 1, 1). DISPLAY 'Temperature for City 1, Day 1, Hour 2: ' TEMPERATURE (1, 1, 2). DISPLAY 'Temperature for City 1, Day 2, Hour 1: ' TEMPERATURE (1, 2, 1). DISPLAY 'Temperature for City 2, Day 1, Hour 1: ' TEMPERATURE (2, 1, 1). STOP RUN.
Exercici 2
Crea un programa que calculi la mitjana de les vendes setmanals per a cada mes utilitzant un array bidimensional. Mostra la mitjana de vendes per a cada mes.
Solució
IDENTIFICATION DIVISION. PROGRAM-ID. AverageSalesExample. DATA DIVISION. WORKING-STORAGE SECTION. 01 SALES-TABLE. 05 SALES-RECORD OCCURS 12 TIMES. 10 MONTHLY-SALES OCCURS 4 TIMES. 15 SALES-AMOUNT PIC 9(5)V99. 01 TOTAL-SALES PIC 9(7)V99 VALUE 0. 01 AVERAGE-SALES PIC 9(7)V99 VALUE 0. PROCEDURE DIVISION. MAIN-PARA. MOVE 1000.50 TO SALES-AMOUNT (1, 1). MOVE 2000.75 TO SALES-AMOUNT (1, 2). MOVE 1500.25 TO SALES-AMOUNT (1, 3). MOVE 1750.00 TO SALES-AMOUNT (1, 4). PERFORM VARYING I FROM 1 BY 1 UNTIL I > 12 MOVE 0 TO TOTAL-SALES PERFORM VARYING J FROM 1 BY 1 UNTIL J > 4 ADD SALES-AMOUNT (I, J) TO TOTAL-SALES END-PERFORM DIVIDE TOTAL-SALES BY 4 GIVING AVERAGE-SALES DISPLAY 'Average Sales for Month ' I ': ' AVERAGE-SALES END-PERFORM. STOP RUN.
Conclusió
Els arrays multidimensionals en COBOL són una eina poderosa per gestionar dades complexes. Hem après com definir-los, accedir-hi i utilitzar-los en programes pràctics. Amb aquests coneixements, estàs preparat per abordar problemes més complexos que requereixen estructures de dades avançades.
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