与COBOL中的2D数组的声明混淆

时间:2019-01-15 10:53:07

标签: arrays cobol

因此,假设我有一个文件,其中包含10位学生,其中包括3个字段:姓名,性别,年龄。因此,从理论上讲,我想创建一个10 x 3的数组。
但是当涉及到COBOL时,此示例将创建二维表:

01 WS-TABLE.
   05 WS-A OCCURS 10 TIMES.
      10 WS-B PIC A(10).
      10 WS-C OCCURS 5 TIMES.
         15 WS-D PIC X(6).

在此示例中,我无法理解WS-BWS-D是什么。如果我想创建一个我提到的数组(10 x 3),我该怎么做?

谢谢

1 个答案:

答案 0 :(得分:4)

首先,COBOL实际上没有数组,它有表。无法制作二维表。您给出的示例实际上是您可以获得的最接近的示例(嵌套表)。如果我遇到了您遇到的问题(一个由10名学生组成的姓名,性别和年龄的字段),我将按以下方式构建数据:

01 WS-TABLE.
   05 WS-STUDENT OCCURS 10 TIMES.
      10 WS-NAME   PIC X(10).
      10 WS-GENDER PIC X.
      10 WS-AGE    PIC 9(3).

在此示例中,我将使用下标访问为学生创建的字段。因此,这是一个将它们全部显示出来的循环:

PERFORM VARYING WS-X 
           FROM 1 BY 1
          UNTIL WS-X > 10
   DISPLAY "NAME: " WS-NAME(WS-X) " GENDER: " WS-GENDER(WS-X) " AGE: " WS-AGE(WS-X)
END-PERFORM