COBOLサンプルソース集)ドライバの組合せ例

【BRK910】コントロールブレイク主体の印刷制御

キーがブレイクするまで、データを印刷しながら、ブレイクしたらグループ計を印刷して改頁します。なお、1頁の印刷行数が指定されている場合を想定しております。これもよく見かけるパターンのサンプルですので参考にして下さい。

      *****  [ コントロールブレイク主体の印刷制御 ]  *****    (10 F9)
      *(1頁5件の明細を表示しながら キーが変わったら計を表示して改頁・見出し)

       identification   division.
       program-id.      brk910.
       environment      division.
       input-output     section.
       file-control.
           select f1 assign "c:\dat\mas91.dat" status fst
                        organization line sequential.
       data             division.
       file             section.
       fd  f1.
       01  f1r.
           03           pic x(05).
           03  f1-cd    pic x(03).
           03           pic x(56).
           03  f1-kin   pic 9(07).

       working-storage  section.
       01  fst          pic x(02).
       01  h1-cd        pic x(03).
       01  累計         pic 9(07) value 0.
       01  行数         pic 9(02) value 0.
       01  改頁         pic x(71) value all "-".
       01  見出.
           03           pic x(20) value space.
           03           pic x(28) value "********** 見出し **********".
       01  空白         pic x(56) value space.

       procedure        division.
      ********** [ main-proc-driver ] **********
           open input f1
           display "!!! brk910-started !!!"
      *    ***** 最初の1件の read *****
           perform 読込処理
      *    ***** ファイル 終了までの繰返し *****
           perform until f1-cd = high-value
      *        ***** キーの保存と領域のクリア *****
               move f1-cd to h1-cd  initialize 累計
      *        ***** キーが変わるまでの繰り返し *****
               perform until f1-cd not = h1-cd
      *            ***** 印刷の制御 *****
                   add 1 to 行数
                   evaluate 行数
      *                ***** 最初の1件とキーが変わった後 *****
                       when  1    perform 改頁処理  perform 見出処理
      *                ***** 次頁の明細データがある時の改頁 *****
                       when  6    perform 改頁処理  perform 見出処理
                                  move 1 to 行数
      *                ***** 上記以外の時 *****
                       when other continue
                   end-evaluate
      *            ***** 累計計算と明細の表示 (same-key) *****
                   perform 明細処理
      *            ***** 次のデータの read *****
                   perform 読込処理
               end-perform
      *        ***** キーが変わった時の処理 (累計印刷) *****
               perform 累計処理
           end-perform
           perform 改頁処理
           display "!!! brk910 - ended !!!"
           close f1  stop run.

      ********** [ process-module ] **********
       改頁処理. display 改頁.
       改頁出口. exit.

       見出処理. display 見出.
       見出出口. exit.

       明細処理. add f1-kin to 累計  display f1r.
       明細出口. exit.

       累計処理. display 空白 "(" h1-cd ") = " 累計
                 move 0 to 行数.
       累計出口. exit.

      ********** [ read-module ] **********
       読込処理. read f1 end move high-value to f1-cd
                         not end continue
                 end-read.
       読込出口. exit.

<< Back   Index   Next >>    < Top >