Arrays in COBOL

Our first example demonstrates the use of arrays in COBOL. In COBOL, an array is called a table and is a sequence of elements of a specific length.

       IDENTIFICATION DIVISION.
       PROGRAM-ID. ARRAYS-EXAMPLE.
       ENVIRONMENT DIVISION.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 A-TABLE.
          05 A OCCURS 5 TIMES PIC 9(3).
       01 B-TABLE.
          05 B OCCURS 5 TIMES PIC 9(3).
       01 TWO-D-TABLE.
          05 TWO-D OCCURS 2 TIMES.
             10 TWO-D-INNER OCCURS 3 TIMES PIC 9(3).
       01 I PIC 9(3).
       01 J PIC 9(3).

       PROCEDURE DIVISION.
       MAIN-PROCEDURE.
           PERFORM INITIALIZE-A
           PERFORM DISPLAY-A
           PERFORM SET-AND-GET-A
           PERFORM INITIALIZE-B
           PERFORM DISPLAY-B
           PERFORM INITIALIZE-TWO-D
           PERFORM DISPLAY-TWO-D
           STOP RUN.

       INITIALIZE-A.
           MOVE 0 TO A(1)
           MOVE 0 TO A(2)
           MOVE 0 TO A(3)
           MOVE 0 TO A(4)
           MOVE 0 TO A(5).

       DISPLAY-A.
           DISPLAY "emp: " A-TABLE.

       SET-AND-GET-A.
           MOVE 100 TO A(5)
           DISPLAY "set: " A-TABLE
           DISPLAY "get: " A(5)
           DISPLAY "len: 5".

       INITIALIZE-B.
           MOVE 1 TO B(1)
           MOVE 2 TO B(2)
           MOVE 3 TO B(3)
           MOVE 4 TO B(4)
           MOVE 5 TO B(5)
           DISPLAY "dcl: " B-TABLE.

       INITIALIZE-TWO-D.
           PERFORM VARYING I FROM 1 BY 1 UNTIL I > 2
               PERFORM VARYING J FROM 1 BY 1 UNTIL J > 3
                   COMPUTE TWO-D(I, J) = I + J - 2
               END-PERFORM
           END-PERFORM.

       DISPLAY-TWO-D.
           DISPLAY "2d: " TWO-D-TABLE.

In this COBOL program:

  1. We define a table A-TABLE with 5 elements, each capable of storing a 3-digit number.

  2. We initialize all elements of A-TABLE to zero and display it.

  3. We set the 5th element of A-TABLE to 100, then display the whole table and the 5th element individually.

  4. We initialize B-TABLE with values 1 through 5 and display it.

  5. We create a two-dimensional table TWO-D-TABLE with 2 rows and 3 columns, initialize it with values, and display it.

Note that COBOL doesn’t have a built-in function to get the length of a table, so we manually display the length of A-TABLE.

Also, COBOL doesn’t support dynamic array initialization like Go does. We have to explicitly set each value.

To run this COBOL program, you would typically compile it and then execute the resulting program. The exact commands may vary depending on your COBOL compiler and environment.

$ cobc -x arrays-example.cob
$ ./arrays-example
emp: 000000000000000
set: 000000000000100
get: 100
len: 5
dcl: 001002003004005
2d: 000001002001002003

This example demonstrates basic array (table) operations in COBOL, including initialization, setting and getting values, and working with multi-dimensional tables.