【问题标题】:Confused with the declaration of 2D arrays in COBOL对 COBOL 中二维数组的声明感到困惑
【发布时间】:2019-01-15 10:53:07
【问题描述】:

假设我有一个包含 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),我该怎么做?

谢谢

【问题讨论】:

    标签: arrays cobol


    【解决方案1】:

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

    【讨论】:

    • 我明白了。但是如果我们要使用这些“表格”,那么如果我想知道第 6 个学生的年龄(不循环),我应该怎么做?
    • @Huzo - MOVE WS-AGE (6) TO ...
    猜你喜欢
    • 2016-02-13
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多