我想知道我想做的事情是否可以在 COBOL 中完成。我正在尝试从一个无序的文件中读取医院和患者数据。我将使用数组以某种方式对传入的数据进行排序,而不是使用排序(就像每个人在现实生活中一样)。最后,我应该将报告打印到按医院编号分组的另一个文件中。
所以,
Hospital #
patient 018
patient 020
total for hospital #
Hospital #
patient 011
patient 009
total for hospital #
所有这些医院的人数都在 1 到 30 之间,患者人数在 1 到 20 之间。我很清楚该怎么做以及如何总结患者余额,但你觉得这样去做怎么样:
将数据读入数组(这显然不止一维)。此时数据在数组中未排序。我认为它是否在数组中排序并不重要,只要它出现在排序的报告中即可。这听起来对吗?是的,这是一个任务。任何提示或建议,可以在不给出答案的情况下提供的反馈?
编辑:好的,所以我尝试创建一个二维类型数组,其中包含完成工作所需的字段(hos num、pat name、pat num、pat amnt)。当然,我想将每个患者的数量添加到医院小计的运行总计中。
这是我的数组:
01 HospArray value spaces.
05 hosnum occurs 30 times indexed by subsa.
07 patnum occurs 20 times indexed by subsb.
10 patname PIC X(20).
10 patamt PIC 9(7)v99.
07 hossubtotal PIC 9(7)v99.
在读取文件并将其移动到我的工作存储字段时,我尝试执行两个执行不同的循环,如下所示:
perform varying subsa from 1 by 1 until subsa > 30
move hos-num-ws to hosnum (subsa)
perform varying subsb from 1 by 1 until subsb > 20
move pat-name-ws to patname(subsa, subsb)
move pat-amnt-od-ws to patamt(subsa, subsb)
add patamt(subsa, subsb) to hossubtotal (suba)
end-perform
end-perform
由于某种原因,这将无法编译,并给出以下错误:意外添加,我不确定为什么。我正在使用 openCobol。我没有很多经验,所以我不确定为什么不编译。我仍然不确定我是否朝着正确的方向前进。我知道我想说,为什么计数是在给定的医院号码上将患者数据移动到变量中,然后我应该知道当前医院号码何时完成。输出医院小计,然后再次重复该过程。