How to generate the multiplication table in COBOL

1 Answer

0 votes
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 
*> ==================================================
*> 

 



answered 6 days ago by avibootz
...