Single Dimension Table
Problem Description
Create and access a single-dimension table (array).
Expected Output
Working with 1D arrays
Hints
Use OCCURS clause to define arrays. Subscripts start at 1.
Solution
IDENTIFICATION DIVISION.
PROGRAM-ID. TABLE1D.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-DAYS-TABLE.
05 WS-DAY PIC X(10) OCCURS 7 TIMES.
01 WS-NUMBERS.
05 WS-NUM PIC 9(3) OCCURS 10 TIMES.
01 WS-I PIC 9(2).
01 WS-SUM PIC 9(5) VALUE 0.
01 WS-INPUT PIC 9(2).
PROCEDURE DIVISION.
* Initialize days table
MOVE "MONDAY" TO WS-DAY(1).
MOVE "TUESDAY" TO WS-DAY(2).
MOVE "WEDNESDAY" TO WS-DAY(3).
MOVE "THURSDAY" TO WS-DAY(4).
MOVE "FRIDAY" TO WS-DAY(5).
MOVE "SATURDAY" TO WS-DAY(6).
MOVE "SUNDAY" TO WS-DAY(7).
* Access by subscript
DISPLAY "ENTER DAY NUMBER (1-7): ".
ACCEPT WS-INPUT.
IF WS-INPUT >= 1 AND WS-INPUT <= 7
DISPLAY "DAY: " WS-DAY(WS-INPUT)
ELSE
DISPLAY "INVALID DAY NUMBER"
END-IF.
* Fill numbers and sum
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 10
MOVE WS-I TO WS-NUM(WS-I)
END-PERFORM.
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 10
ADD WS-NUM(WS-I) TO WS-SUM
END-PERFORM.
DISPLAY "SUM OF 1-10: " WS-SUM.
STOP RUN.
Explanation:
OCCURS n TIMES creates array. Access with subscript in parentheses.