代码之家  ›  专栏  ›  技术社区  ›  Huzo

与COBOL中的二维数组声明混淆

  •  0
  • Huzo  · 技术社区  · 6 年前

    所以假设我有一个由10个学生组成的文件,其中有3个字段:姓名、性别、年龄。所以,理论上,我想创建一个10乘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-B WS-D 是。如果我想创建一个像我提到的那样的数组(10乘3),我该怎么做?

    谢谢

    1 回复  |  直到 6 年前
        1
  •  4
  •   SaggingRufus    6 年前

    首先,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