Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
← Back to Tables & Arrays
Tables & Arrays | Intermediate | COBOL

Two Dimension Table

Problem Description

Create and work with a two-dimensional table.

Expected Output

2D array for matrix operations

Hints

Nested OCCURS for multi-dimensional tables.

Solution

IDENTIFICATION DIVISION. PROGRAM-ID. TABLE2D. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-MATRIX. 05 WS-ROW OCCURS 3 TIMES. 10 WS-COL PIC 9(2) OCCURS 3 TIMES. 01 WS-I PIC 9. 01 WS-J PIC 9. 01 WS-VAL PIC 9(2) VALUE 1. 01 WS-SUM PIC 9(3) VALUE 0. 01 WS-LINE PIC X(20). PROCEDURE DIVISION. * Fill matrix with sequential values PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 3 PERFORM VARYING WS-J FROM 1 BY 1 UNTIL WS-J > 3 MOVE WS-VAL TO WS-COL(WS-I, WS-J) ADD 1 TO WS-VAL END-PERFORM END-PERFORM. * Display matrix DISPLAY "MATRIX:". PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 3 MOVE SPACES TO WS-LINE STRING WS-COL(WS-I, 1) " " WS-COL(WS-I, 2) " " WS-COL(WS-I, 3) DELIMITED SIZE INTO WS-LINE DISPLAY WS-LINE END-PERFORM. * Sum diagonal elements PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 3 ADD WS-COL(WS-I, WS-I) TO WS-SUM END-PERFORM. DISPLAY "DIAGONAL SUM: " WS-SUM. * Access specific element DISPLAY "ELEMENT(2,3): " WS-COL(2, 3). STOP RUN.

Explanation:

Nested OCCURS creates 2D table. Access with two subscripts: TABLE(row, col).