如何在 COBOL 中打印数组 (table) 内的迭代?
How to print the iteration inside an array (table) in COBOL?
我试图只打印此 COBOL table 的一个元素,但我似乎无法理解数组 (tables) 在 COBOL 中的工作原理!
data division.
working-storage section.
01 m-airlines.
05 m-united occurs 3 times.
10 m-u-a330 pic 9(1) value 3.
10 m-u-a321 pic 9(1) value 1.
10 m-u-a300 pic 9(1) value 5.
05 m-delta occurs 3 times.
10 m-dl-a330 pic 9(2) value 35.
10 m-dl-a321 pic 9(2) value 27.
10 m-dl-b777 pic 9(2) value 20.
procedure division.
display "number of Delta's Airbus a330: " m-delta(1,1).
我收到此错误:
Too many subscripts.
根据代码,您有两个 table 元素(或)2 个一维 tables、m-united
和 m-delta
。要引用 table 中的项目,您应该使用 table 元素的数据名称,以及括号中的出现次数(下标)。这称为 订阅 。正如@Bruce Martin 在评论中提到的,您应该尝试 m-delta(1)
来引用 table 中的第一个元素。
您引用 table 元素的方式,m-delta(1,1)
适用于二维 table。这种引用方式是错误的,因为您没有定义 2D table。相反,您已经定义了 2 个一维 table。有关创建 2D/3D table 的更多信息,请参阅 Nesting tables。
这些是您的代码生成的表格。这不是你想要的。
+-------------+-------------+-------------+
m-united(1): | m-u-a330(1) | m-u-a321(1) | m-u-a300(1) |
+-------------+-------------+-------------+
m-united(2): | m-u-a330(2) | m-u-a321(2) | m-u-a300(2) |
+-------------+-------------+-------------+
m-united(3): | m-u-a330(3) | m-u-a321(3) | m-u-a300(3) |
+-------------+-------------+-------------+
+--------------+--------------+--------------+
m-delta(1): | m-dl-a330(1) | m-dl-a321(1) | m-dl-b777(1) |
+--------------+--------------+--------------+
m-delta(2): | m-dl-a330(2) | m-dl-a321(2) | m-dl-b777(2) |
+--------------+--------------+--------------+
m-delta(3): | m-dl-a330(3) | m-dl-a321(3) | m-dl-b777(3) |
+--------------+--------------+--------------+
或许,这就是你想要的:
01 AIRLINE-TABLE.
05 M-U-A330 PIC 99 VALUE 3.
05 M-U-A321 PIC 99 VALUE 1.
05 M-U-A300 PIC 99 VALUE 5.
05 M-U-B777 PIC 99 VALUE 0.
05 M-D-A330 PIC 99 VALUE 35.
05 M-D-A321 PIC 99 VALUE 27
05 M-D-A300 PIC 99 VALUE 0.
05 M-D-B777 PIC 99 VALUE 20.
01 FILLER REDEFINES AIRLINE-TABLE.
05 AIRLINE OCCURS 2 TIMES.
10 NUM-A330 PIC 99.
10 NUM-A321 PIC 99.
10 NUM-A300 PIC 99.
10 NUM-B777 PIC 99.
生成:
+-------------+-------------+-------------+-------------+
airline(1): | num-a330(1) | num-a321(1) | num-a300(1) | num-b777(1) |
+-------------+-------------+-------------+-------------+
airline(2): | num-a330(2) | num-a321(2) | num-a300(2) | num-b777(2) |
+-------------+-------------+-------------+-------------+
... DISPLAY "Number of Delta's Airbus a330 : " num-a330(2)
或者这样:
01 AIRLINE-TABLE.
05 M-U-A330 PIC 99 VALUE 3.
05 M-U-A321 PIC 99 VALUE 1.
05 M-U-A300 PIC 99 VALUE 5.
05 M-U-B777 PIC 99 VALUE 0.
05 M-D-A330 PIC 99 VALUE 35.
05 M-D-A321 PIC 99 VALUE 27
05 M-D-A300 PIC 99 VALUE 0.
05 M-D-B777 PIC 99 VALUE 20.
01 FILLER REDEFINES AIRLINE-TABLE.
05 AIRLINE OCCURS 2 TIMES.
10 AIRPLANE OCCURS 4 TIMES.
15 NUM-PLANES PIC 99.
这给出了
+------------------+------------------+------------------+------------------+
airline(1): | num-planes(1, 1) | num-planes(1, 2) | num-planes(1, 3) | num-planes(1, 4) |
+------------------+------------------+------------------+------------------+
airline(2): | num-planes(2, 1) | num-planes(2, 2) | num-planes(2, 3) | num-planes(2, 4) |
+------------------+------------------+------------------+------------------+
... DISPLAY "Number of Delta's Airbus a330 : " num-planes(2, 1)
我试图只打印此 COBOL table 的一个元素,但我似乎无法理解数组 (tables) 在 COBOL 中的工作原理!
data division.
working-storage section.
01 m-airlines.
05 m-united occurs 3 times.
10 m-u-a330 pic 9(1) value 3.
10 m-u-a321 pic 9(1) value 1.
10 m-u-a300 pic 9(1) value 5.
05 m-delta occurs 3 times.
10 m-dl-a330 pic 9(2) value 35.
10 m-dl-a321 pic 9(2) value 27.
10 m-dl-b777 pic 9(2) value 20.
procedure division.
display "number of Delta's Airbus a330: " m-delta(1,1).
我收到此错误:
Too many subscripts.
根据代码,您有两个 table 元素(或)2 个一维 tables、m-united
和 m-delta
。要引用 table 中的项目,您应该使用 table 元素的数据名称,以及括号中的出现次数(下标)。这称为 订阅 。正如@Bruce Martin 在评论中提到的,您应该尝试 m-delta(1)
来引用 table 中的第一个元素。
您引用 table 元素的方式,m-delta(1,1)
适用于二维 table。这种引用方式是错误的,因为您没有定义 2D table。相反,您已经定义了 2 个一维 table。有关创建 2D/3D table 的更多信息,请参阅 Nesting tables。
这些是您的代码生成的表格。这不是你想要的。
+-------------+-------------+-------------+
m-united(1): | m-u-a330(1) | m-u-a321(1) | m-u-a300(1) |
+-------------+-------------+-------------+
m-united(2): | m-u-a330(2) | m-u-a321(2) | m-u-a300(2) |
+-------------+-------------+-------------+
m-united(3): | m-u-a330(3) | m-u-a321(3) | m-u-a300(3) |
+-------------+-------------+-------------+
+--------------+--------------+--------------+
m-delta(1): | m-dl-a330(1) | m-dl-a321(1) | m-dl-b777(1) |
+--------------+--------------+--------------+
m-delta(2): | m-dl-a330(2) | m-dl-a321(2) | m-dl-b777(2) |
+--------------+--------------+--------------+
m-delta(3): | m-dl-a330(3) | m-dl-a321(3) | m-dl-b777(3) |
+--------------+--------------+--------------+
或许,这就是你想要的:
01 AIRLINE-TABLE.
05 M-U-A330 PIC 99 VALUE 3.
05 M-U-A321 PIC 99 VALUE 1.
05 M-U-A300 PIC 99 VALUE 5.
05 M-U-B777 PIC 99 VALUE 0.
05 M-D-A330 PIC 99 VALUE 35.
05 M-D-A321 PIC 99 VALUE 27
05 M-D-A300 PIC 99 VALUE 0.
05 M-D-B777 PIC 99 VALUE 20.
01 FILLER REDEFINES AIRLINE-TABLE.
05 AIRLINE OCCURS 2 TIMES.
10 NUM-A330 PIC 99.
10 NUM-A321 PIC 99.
10 NUM-A300 PIC 99.
10 NUM-B777 PIC 99.
生成:
+-------------+-------------+-------------+-------------+
airline(1): | num-a330(1) | num-a321(1) | num-a300(1) | num-b777(1) |
+-------------+-------------+-------------+-------------+
airline(2): | num-a330(2) | num-a321(2) | num-a300(2) | num-b777(2) |
+-------------+-------------+-------------+-------------+
... DISPLAY "Number of Delta's Airbus a330 : " num-a330(2)
或者这样:
01 AIRLINE-TABLE.
05 M-U-A330 PIC 99 VALUE 3.
05 M-U-A321 PIC 99 VALUE 1.
05 M-U-A300 PIC 99 VALUE 5.
05 M-U-B777 PIC 99 VALUE 0.
05 M-D-A330 PIC 99 VALUE 35.
05 M-D-A321 PIC 99 VALUE 27
05 M-D-A300 PIC 99 VALUE 0.
05 M-D-B777 PIC 99 VALUE 20.
01 FILLER REDEFINES AIRLINE-TABLE.
05 AIRLINE OCCURS 2 TIMES.
10 AIRPLANE OCCURS 4 TIMES.
15 NUM-PLANES PIC 99.
这给出了
+------------------+------------------+------------------+------------------+
airline(1): | num-planes(1, 1) | num-planes(1, 2) | num-planes(1, 3) | num-planes(1, 4) |
+------------------+------------------+------------------+------------------+
airline(2): | num-planes(2, 1) | num-planes(2, 2) | num-planes(2, 3) | num-planes(2, 4) |
+------------------+------------------+------------------+------------------+
... DISPLAY "Number of Delta's Airbus a330 : " num-planes(2, 1)