COBOLサンプルソース集) 順編成のファイル更新

【UPDDV2】訂正種別を先に判定する場合

UPDDV1と比べ少々煩雑な感じもしますが、条件による統合がなく、それぞれが完全に独立したルートを確定するので、この方が良いかも知れないですね。またコチラはデータの重複もカバーしています。

      *****  順編成ファイル更新 ドライバパターン - 2  *****  [UPDDV2]  (15 F10)
      *           [訂正種別を優先判定]           *
      *   [ データ のキーが昇順で 重複がある場合も OK ] 
      *  (  ) 内に命令を記述する

       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 (訂正種別)
               when  "A"
                    evaluate true
                       when (f1キー < f2キー) perform 複写処理 thru 複写出口
                                          perform f1-rtn   thru f1-ext
                       when (f1キー = f2キー) perform err-処理 thru err-出口
                                          perform f2-rtn   thru f2-ext
                       when (f1キー > f2キー) perform 追加処理 thru 追加出口
                                          perform f2-rtn   thru f2-ext
                    end-evaluate
               when  "M"
                    evaluate true
                       when (f1キー < f2キー) perform 複写処理 thru 複写出口
                                          perform f1-rtn   thru f1-ext
                       when (f1キー = f2キー) perform 修正処理 thru 修正出口
                                          perform f2-rtn   thru f2-ext
                       when (f1キー > f2キー) perform err-処理 thru err-出口
                                          perform f2-rtn   thru f2-ext
                    end-evaluate
               when  "D"
                    evaluate true
                       when (f1キー < f2キー) perform 複写処理 thru 複写出口
                                          perform f1-rtn   thru f1-ext
                       when (f1キー = f2キー) perform 削除処理 thru 削除出口
                                          perform f1-rtn   thru f1-ext
                                          perform f2-rtn   thru f2-ext
                       when (f1キー > f2キー) perform err-処理 thru err-出口
                                          perform f2-rtn   thru f2-ext
                    end-evaluate
               when high-value            perform 複写処理 thru 複写出口
                                          perform f1-rtn   thru f1-ext
               when other                 perform err-処理 thru err-出口
                                          perform f2-rtn   thru f2-ext
             end-evaluate
           end-perform
           close (f1) (f2) (f3)  stop run.

      **********  [ 機能-MODULE ]  **********
       複写処理. (f1 を f3 に書き出す).
       複写出口. exit.

       修正処理. (CHECK OK なら 修正する部分を置き換えるだけ).
       修正出口. exit.

       削除処理. (何もしない).
       削除出口. exit.

       追加処理. (CHECK OK なら 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.

<< Back   Index   Next >>    < Top >