COBOL入門 Mission3-6

処 理 内 容 PROGRAM-ID 難易度 言語
ドライバと機能の分割記述 LST006 1 COBOL
1:処理図
2:処理概要

命令がダラダラと長く書かれると読み辛くなりますので、プログラムを分割して記述してみよう

LST005 ⇒ LST006 1本のプログラムの処理(open〜closeまで)を分割する

分割する場合も色々な考え方があります
分割するのと、しないもの、どちらが見易いでしょうか?

※図は手違いでLST050に…
3:ファイル名称
I-O
外部ファイル名 編成 KP/KL RL/BF access
(1)ソースプログラム in c:\cobol\??????.cbl seq  /  72/1
4:出力メッセージ
☆『ドライバ』と『機能モジュール』☆
プログラムは『ドライバ』と『機能モジュール』をはっきり区別して記述した方が分かり易い!
********  ( LST005 を分割記述 )  ********

 IDENTIFICATION             DIVISION.
 PROGRAM-ID.                LST006.
 ENVIRONMENT                DIVISION.
 INPUT-OUTPUT               SECTION.
 FILE-CONTROL.
     SELECT  F1  ASSIGN  TO  f1idt STATUS  状態
                         ACCESS  MODE  IS  SEQUENTIAL.
 DATA                       DIVISION.
 FILE                       SECTION.
 FD  F1.
 01  F1R                    PIC X(72).
 WORKING-STORAGE            SECTION.
 01  状態                   PIC X(02).
 01  確認                   PIC X(01).
 01  行数                   PIC 9(02) VALUE 0.
 01  F1IDT.
     03                     PIC X(09) VALUE "c:\cobol\".
     03 名前                PIC X(06).
     03                     PIC X(04) VALUE ".cbl".
 PROCEDURE                  DIVISION.
**********  制御モジュール  **********
     PERFORM  UNTIL  名前  =  "END006"
       DISPLAY  "プログラム名  6桁  タイプイン  終了-->END006"
       ACCEPT  名前
       IF  名前  =  "END006"
           THEN  DISPLAY  "<<< LST006 - 終了 >>>"
           ELSE  PERFORM  表示処理  THRU  表示出口
       END-IF
     END-PERFORM
     STOP  RUN.
**********  機能モジュール  ***********
 表示処理. OPEN  INPUT  F1
           INITIALIZE  行数
           PERFORM  UNTIL  状態  NOT  =  "00"
             READ  F1
                   END  DISPLAY  "!!! 表示 - 終了 !!!"
                   NOT  END  DISPLAY  F1R
                             ADD  1  TO  行数
                             IF  行数  =  20
                                 THEN  DISPLAY  "NEXT ? TYPE-IN Y"
                                       ACCEPT  確認  MOVE  0  TO  行数
                                 ELSE  CONTINUE
                             END-IF
             END-READ
           END-PERFORM
           CLOSE  F1
 表示出口. EXIT.

*    [OPEN 出来ない時も CLOSE命令が実行される]

どうでしょうか?LST005と比較してみるとよくわかりますが、プログラムの制御部分と機能部分を完全に分離した方が明らかに見た目にもスマートになりますね。

良いプログラムとは、バグがなく・誰が見ても理解でき・仕様変更が容易である、という三点に尽きます。

処理の制御部分と機能部分を完全に独立させることにより、それぞれの役割を明確に出来ます。こういうことをキッチリやることが一番大事ですし、結果的に一番早くプログラムが組めます。


<< Back    Index    Next >>   < Top >