COBOLサンプルソース集)印刷制御

【LSTDV3】データ0件対応 (見出しも印刷しない) の場合

データが0件の場合はEnd-Performを出た時、カウンタ値は00なのでここで判定します。 コメントの表示をドライバの中で行うのか、機能モジュールの中に作り込むのかはどちらでも良いと思います。

      *****  印 刷 制 御 ドライバ(3) [整構造]  *****  [LSTDV3]     (20 F10)
      *  [ 1頁に指定される明細行数によって ? 印の値を変更する ]
      *  [ データが0件の場合は見出しも印刷しないでコメントだけ表示する ]
      *  (  ) 内に命令等を記述する

       procedure         division.
      **********  [ 制御-module ]  **********
           open input (入力f) output (出力f)
      *    ***** [ファイル終了までの繰返し] *****
           perform until (入力fステータス) not = "00"
             read (入力f)
               end     continue
               not end add 1 to cnt
      *                ***** [印刷処理の制御] *****
                       evaluate cnt
                           when  01   perform 改頁処理 thru 改頁出口
                                      perform 見出処理 thru 見出出口
                           when  06   perform 頁計処理 thru 頁計出口
      *                          ??
                                      perform 行送処理 thru 行送出口
                                      perform 改頁処理 thru 改頁出口
                                      perform 見出処理 thru 見出出口
                                      move 1 to cnt
                           when other continue
                       end-evaluate
      *                ***** [1件の処理] *****
                       perform 明細処理 thru 明細出口
             end-read
           end-perform
      *    ***** [ファイル終了後の処理] *****
           if cnt = 0
              then (コメントを表示又は印刷する)
              else perform 行送処理 thru 行送出口 until cnt = 5
      *                                                       ?
                   perform 頁計処理 thru 頁計出口
                   perform 総計処理 thru 総計出口
                   perform 改頁処理 thru 改頁出口
           end-if
           close (入力f) (出力f) stop run.

      **********  [ 機能-module ]  **********
       改頁処理. (改頁処理に必要な機能)
       改頁出口. exit.

       見出処理. (見出処理に必要な機能)
       見出出口. exit.

       明細処理. (明細1件の処理に必要な機能)
       明細出口. exit.

       頁計処理. (頁計処理に必要な機能と累計域のクリア)
       頁計出口. exit.

       総計処理. (総計処理に必要な機能)
       総計出口. exit.

       行送処理. (行送りに必要な機能と cnt + 1)
       行送出口. exit.

<< Back   Index   Next >> < Top >