私がやりたいことがCOBOLで達成できるかどうか疑問に思っています。順番に並んでいないファイルから病院と患者のデータを読み込もうとしています。Sort を使用する代わりに (誰もが実際に行うように)、配列を使用して、受信したデータを何らかの方法で並べ替えます。最後に、病院番号でグループ化された別のファイルにレポートを出力することになっています。
そう、
Hospital #
patient 018
patient 020
total for hospital #
Hospital #
patient 011
patient 009
total for hospital #
これらの病院の数はすべて 1 から 30 の間で、患者の数は 1 から 20 の間です。私は何をすべきか、患者のバランスをどのように合計するかについてかなり良い考えを持っていますが、この方法でそれを行うことについてどう思いますか? :
データを配列に読み込みます (これは明らかに 1 次元以上になります)。この時点で、データは配列内でソートされていません。ソートされたレポートに出てくる限り、配列内でソートされていても問題ないと思います。これは正しいと思いますか?はい、これは課題用です。答えを出さずに提供できるヒントや推奨事項、フィードバックはありますか?
編集:さて、仕事を完了するために必要なフィールド(hos num、pat name、pat num、pat amnt)を持つ2dタイプの配列を作成しようとしました。そしてもちろん、病院の小計の現在の合計に各患者の金額を追加したいと思います。
これが私の配列です:
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.
ファイルを読み込んで作業用ストレージ フィールドに移動している間に、次のような 2 つの異なるループを実行しようとしました。
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
何らかの理由でこれはコンパイルされず、次のエラーが表示されます: Unexpected ADD and I am not know why. openCobol を使用しています。私は多くの経験を持っていないので、なぜこれがコンパイルされないのかわかりません。正しい方向に進んでいるかどうかはまだわかりません。私が言いたいのは、なぜ特定の病院番号にカウントがあるのか 、患者データを変数に移動してから、現在の病院番号がいつ終了するかを知る必要があるということです。病院の小計を出力し、プロセスをもう一度繰り返します。