我在COBOL中编程并尝试将此客户端文件放在一个数组中。我无法理解这个问题。我知道数组可能基于预订类型,因为有4种不同的选项。任何帮助,将不胜感激。
这就是我到目前为止定义数组的方式:
01 Booking-Table.
05 BookingType OCCURS 4 TIMES PIC 9.
这是客户端文件。
答案 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
只有在预订类型(和/或其行为)在运行时变化时,才需要使用数组方法。