COBOL程序员 - 如何使用数组

时间:2018-04-15 18:02:02

标签: arrays cobol

我在COBOL中编程并尝试将此客户端文件放在一个数组中。我无法理解这个问题。我知道数组可能基于预订类型,因为有4种不同的选项。任何帮助,将不胜感激。

这就是我到目前为止定义数组的方式:

01 Booking-Table.                                    
   05 BookingType          OCCURS 4 TIMES     PIC 9. 

这是客户端文件。

Here is the problem

2 个答案:

答案 0 :(得分:2)

猜测解决方案是将成本存储在数组中。要计算平均值,阵列需要具有成本+数字,预订类型为 index 。 “棘手”部分可能是每种类型的最大金额(9999.99)*此类型的最大客户(所有和客户编号暗示 3个给定的位置是数字:1000 [包括零,所有都可以有相同的类型])。

这样的东西
REPLACE ==MaxBookingType== BY ==4==.

01 Totals-Table.
   05 Type-Total  OCCURS MaxBookingType TIMES.
      10 type-amount      pic 9(8)V99 COMP.
      10 type-customers   pic 9(4)    COMP.

现在从头到尾遍历文件,检查BookingType >= 1 AND <= MaxBookingType(我总是怀疑“数据永远不会改变并且总是正确的”然后

ADD 1         TO type-customers(BookingType)
ADD trip-cost TO type-amount   (BookingType)

并在文件结束后使用PERFORM VARYING计算所有4个条目的平均值。

在这里使用“数组”的主要好处是,您只需更改MaxBookingType的值即可更新程序以包含20种预订类型 - 并且您添加了一个检查,告诉您什么是“在那里你可以看到很糟糕的数字,你可以很快调整它。

我不确定你的编译器是否允许自定义数字常量,如果有办法:使用它而不是强制编译器检查所​​有出现的文本“MaxBookingType”。

答案 1 :(得分:0)

我相信图表试图说你需要一个枚举。在COBOL中,您可以使用

实现此功能
Service_name

只有在预订类型(和/或其行为)在运行时变化时,才需要使用数组方法。