COBOLサンプルソース集)コントロールブレイク

【BRKDV2】ブレイクキーが2つの場合

キーが増えても基本的な考え方は同じで、単に重層度が増すだけです。 ただし下位のキーを判定する時は、同時に上位のキーも判定する必要があります。プログラム内の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.

<<Back   Index   Next >>  < Top >