キーが増えても基本的な考え方は同じで、単に重層度が増すだけです。 ただし下位のキーを判定する時は、同時に上位のキーも判定する必要があります。プログラム内のOR条件に注意して下さい。
***** コントロールブレイクのドライバ ***** [BRKDV2] (20 F10)
* (ブレイクキー が2つの場合 [LING構造のドライバ]
* ( ) 内に命令等を記述する
procedure division.
********** [ 制御-module ] **********
open input (入力f) output (出力f)
perform 読込処理 thru 読込出口
* ***** [file-end までの繰返し] *****
perform until (入力キー) = high-value
(大キーの保存 と 大キー累計域のクリア)
* ***** [大キーが変わるまでの繰り返し] *****
perform until (大キー) not = (保存大キー)
(中キーの保存 と 中キー累計域のクリア)
* ***** [中キーが変わるまでの繰り返し] *****
perform until (中キー) not = (保存中キー)
or (大キー) not = (保存大キー)
* ***** [キーが同じ時の処理] *****
perform 同一処理 thru 同一出口
perform 読込処理 thru 読込出口
end-perform
* ***** [中キーが変わった時の処理] *****
perform 中計処理 thru 中計出口
end-perform
* ***** [大キーが変わった時の処理] *****
perform 大計処理 thru 大計出口
end-perform
* ***** [file-end の時の処理] *****
perform 総計処理 thru 総計出口
close (入力f) (出力f) stop run.
********** [ 機能-module ] **********
同一処理. (キーが同じ時の処理).
同一出口. exit.
中計処理. (中キーが変わった時の処理).
中計出口. exit.
大計処理. (大キーが変わった時の処理).
大計出口. exit.
総計処理. (総計の処理).
総計出口. exit.
読込処理. read (入力f) end move high-value to (入力キー)
not end continue
end-read
読込出口. exit.