对 COBOL 中二维数组的声明感到困惑
Confused with the declaration of 2D arrays in 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-B
和WS-D
是什么。如果我想创建一个像我提到的那样的数组(10 x 3),我该怎么做?
谢谢
首先,COBOL 本身没有数组,它有 tables。没办法做个二维的table。您给出的示例实际上是您可以获得的最接近的示例(嵌套 table)。如果我遇到你遇到的问题(一个有姓名、性别和年龄的 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
因此,假设我有一个包含 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-B
和WS-D
是什么。如果我想创建一个像我提到的那样的数组(10 x 3),我该怎么做?
谢谢
首先,COBOL 本身没有数组,它有 tables。没办法做个二维的table。您给出的示例实际上是您可以获得的最接近的示例(嵌套 table)。如果我遇到你遇到的问题(一个有姓名、性别和年龄的 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