【问题标题】:COBOL programmers - How to use arraysCOBOL 程序员 - 如何使用数组
【发布时间】:2018-04-15 18:02:02
【问题描述】:

我正在使用 COBOL 编程并尝试将此客户端文件放入一个数组中。我很难理解这个问题。我知道该数组可能基于 bookingtype,因为有 4 个不同的选项。任何帮助,将不胜感激。

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

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

这是客户端文件。

【问题讨论】:

    标签: arrays cobol


    【解决方案1】:

    解决方案是将成本存储在数组中。要计算平均值,数组需要有成本 + 数量,预订类型是使用的 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”。

    【讨论】:

      【解决方案2】:

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

      01  client-file-record.
          *> ...
          03  booking-type         PIC 9.
              88 cruise            VALUE 1.
              88 air-independent   VALUE 2.
              88 air-tour          VALUE 3.
              88 other             VALUE 4.
          *> ...
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-02
        • 2022-01-18
        • 1970-01-01
        • 1970-01-01
        • 2010-11-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多