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.