IDENTIFICATION DIVISION.
PROGRAM-ID. MultTable.
*> ===============================================================
*> Program: MultTable
*> Purpose: Generates and displays a clean 10x10 multiplication grid
*> with proper spacing between columns.
*> ===============================================================
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*> Loop counters for rows and columns
01 WS-ROW PIC 9(02) VALUE 0.
01 WS-COL PIC 9(02) VALUE 0.
01 WS-PRODUCT PIC 9(03) VALUE 0.
*> Table structure with an explicit FILLER space between cells
01 WS-ROW-STRING.
05 WS-TABLE-ENTRY OCCURS 10 TIMES.
10 WS-CELL PIC ZZ9.
10 FILLER PIC X VALUE SPACE.
PROCEDURE DIVISION.
MAIN-LOGIC.
DISPLAY "=================================================="
DISPLAY " 10x10 MULTIPLICATION TABLE "
DISPLAY "=================================================="
*> Invoke the modular procedure to generate the table
PERFORM GENERATE-MULT-TABLE
DISPLAY "=================================================="
STOP RUN.
*> Procedural block to build and print the grid
GENERATE-MULT-TABLE.
PERFORM VARYING WS-ROW FROM 1 BY 1 UNTIL WS-ROW > 10
*> Calculate values for each cell in the current row
PERFORM VARYING WS-COL FROM 1 BY 1 UNTIL WS-COL > 10
COMPUTE WS-PRODUCT = WS-ROW * WS-COL
MOVE WS-PRODUCT TO WS-CELL(WS-COL)
END-PERFORM
*> Display the completed row buffer with column spacing
DISPLAY WS-ROW-STRING
END-PERFORM
EXIT.
*> run:
*>
*> ==================================================
*> 10x10 MULTIPLICATION TABLE
*> ==================================================
*> 1 2 3 4 5 6 7 8 9 10
*> 2 4 6 8 10 12 14 16 18 20
*> 3 6 9 12 15 18 21 24 27 30
*> 4 8 12 16 20 24 28 32 36 40
*> 5 10 15 20 25 30 35 40 45 50
*> 6 12 18 24 30 36 42 48 54 60
*> 7 14 21 28 35 42 49 56 63 70
*> 8 16 24 32 40 48 56 64 72 80
*> 9 18 27 36 45 54 63 72 81 90
*> 10 20 30 40 50 60 70 80 90 100
*> ==================================================
*>