ファイル更新も、キーの大小関係を先に判定する場合と、訂正種別を先に判定する場合が考えられますが、一般的にキーの大小関係が先に判定される場合が多いので、そのパターンを採用しています。 次のReadを『制御Module』に入れるべきか『各機能Module』の中に入れるべきか考慮の末、『機能Module』の独立性を尊重する意味で『制御Module』の中に入れています。
***** 順編成ファイル更新 ドライバパターン - 1 ***** [UPDDV0] (20 F10) * [キーの大小関係優先判定] * * [ マスタ データ ともキーが昇順で かつ ユニーク な場合 ] * ( ) 内に命令等を記述する procedure division. ********** [ 制御-MODULE ] ********** open input (f1) (f2) output (f3) perform f1-rtn thru f1-ext perform f2-rtn thru f2-ext perform until (f1キー = high-value) and (f2キー = high-value) evaluate true when (f1キー < f2キー) perform 複写処理 thru 複写出口 perform f1-rtn thru f1-ext when (f1キー = f2キー) evaluate (訂正種別) when "M" perform 修正処理 thru 修正出口 perform f1-rtn thru f1-ext perform f2-rtn thru f2-ext when "D" perform 削除処理 thru 削除出口 perform f1-rtn thru f1-ext perform f2-rtn thru f2-ext when other perform err-処理 thru err-出口 perform f2-rtn thru f2-ext end-evaluate when (f1キー > f2キー) evaluate (訂正種別) when "A" perform 追加処理 thru 追加出口 perform f2-rtn thru f2-ext when other perform err-処理 thru err-出口 perform f2-rtn thru f2-ext end-evaluate end-evaluate end-perform close (f1) (f2) (f3) stop run. ********** [ 機能-MODULE ] ********** 複写処理. (f1 を f3 に copy する). 複写出口. exit. 修正処理. (修正処理を行い f3 に書き出す). 修正出口. exit. 削除処理. (何もしない). 削除出口. exit. 追加処理. (f2 を f3 に書き出す). 追加出口. exit. err-処理. (error の処理を行う). err-出口. exit. ********** [ 読込-MODULE ] ********** f1-rtn. read (f1) end move high-value to (f1キー) not end continue end-read. f1-ext. exit. f2-rtn. read (f2) end move high-value to (f2キー) not end continue end-read. f2-ext. exit.