最近の情報処理試験に出題される『リング構造』というスタイルです。これはIF命令を用いない判り易いものです。機能が重層構造になっていてブレイクするキーが増えても、同じパターンで階層を増やせるので大変便利です。一番内側に、『キーが同じ時の処理』と『次のREAD』があり、その外側を『キーが変わるまでの繰り返し』と『繰返し終了』で囲みます。更に、その前に『キーの保存と必要な領域のクリア』を置き、『繰返し終了』の後に『キーが変わった時の処理』を置きます。ここまでをワンセットとし、この前後に『FILE-ENDまでの繰返し』と『繰返し終了』をかぶせます。文章で書くとチンプンカンプンでしょうから、以下にソースコードを掲載します。
***** コントロールブレイクのドライバ ***** [BRKDV1] (20 F10) * (ブレイクキー が1つの場合) [LING構造のドライバ] * ( ) 内に命令等を記述する procedure division. ********** [ 制御-module ] ********** open input (入力f) output (出力f) perform 読込処理 thru 読込出口 * ***** [file-endまでの繰返し] ***** perform until (入力キー) = high-value (キーの保存 と 累計域のクリア) * ***** [キーが変わるまでの繰り返し] ***** perform until (入力キー) not = (保存キー) * ***** [キーが同じ時の処理] ***** perform 同一処理 thru 同一出口 perform 読込処理 thru 読込出口 end-perform * ***** [キーが変わった時の処理] ***** perform 合計処理 thru 合計出口 end-perform * ***** [file-end の時の処理] ***** perform 総計処理 thru 総計出口 close (入力f) (出力f) stop run. ********** [ 機能-module ] ********** 同一処理. (キーが同じ時の処理). 同一出口. exit. 合計処理. (キーが変わった時の処理). 合計出口. exit. 総計処理. (総計の処理). 総計出口. exit. 読込処理. read (入力f) end move high-value to (入力キー) not end continue end-read 読込出口. exit.