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

【LSTDV4】ファイルが存在しない場合

LSTDV3に更に条件を追加したものです。ファイルが存在しない時のパターンサンプルです。基本的にファイルがない場合、制御側で何かしらのエラーメッセージが表示されるとは思いますが、やはりプログラミングとは如何なる条件であろうとも、キチンと動作するように作るコトこそが大事なのです。イレギュラーがあってもエラーとして処理できるか否か。それが大事。

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

       procedure         division.
      **********  [ 制御-module ]  **********
           open input (入力f) output (出力f)
      *    ***** [OPEN 可否の判定] *****
           if (入力fステータス) = "00"
      *       ***** [ファイル終了までの繰返し] *****
              then 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 perform err2処理 thru err2出口
                      else perform 行送処理 thru 行送出口 until cnt = 5
      *                                                               ?
                           perform 頁計処理 thru 頁計出口
                           perform 総計処理 thru 総計出口
                           perform 改頁処理 thru 改頁出口
                   end-if
                   close (入力f) (出力f)
              else perform err1処理 thru err1出口
           end-if
           stop run.

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

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

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

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

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

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

       err1処理. (OPEN-ERROR のコメントを表示する)
       err1出口. exit.

       err2処理. (データ0件 のコメントを表示する)
       err2出口. exit.

<< Back   Index   Next >> < Top >