COBOL入門 Mission3-3

処 理 内 容 PROGRAM-ID 難易度 言語
偶数行・奇数行を表示する LST003 1 COBOL
1:処理図
2:処理概要

キーボードからパラメータ(1・2・9)を入力しプログラムの奇数行又は偶数行を表示する
繰返し指定出来るようにする

入力するパラメータ
   1・・・奇数行を表示する
   2・・・偶数行を表示する
   3・・・プログラムを表示する
   以外 "type-in err" を表示し再度タイプイン
※図は手違いでLST024になってます
3:ファイル名称 I-O 外部ファイル名 編成 KP/KL RL/BF access
(1)ソースプログラム in c:\cobol\lst003.cbl seq  /  72/1
4:その他

★多分岐命令 [ EVALUATE ]

     EVALUATE   比較する項目名
          WHEN    条件1
              条件1を肯定した場合の命令
          WHEN    条件2
              条件2を肯定した場合の命令
          WHEN    条件3
              条件3を肯定した場合の命令
                  :
                  :
          WHEN    OTHER
              全ての条件に当てはまらなかった場合の命令
     END-EVALUATE
 IDENTIFICATION             DIVISION.
 PROGRAM-ID.                LST003.
 ENVIRONMENT                DIVISION.
 INPUT-OUTPUT               SECTION.
 FILE-CONTROL.
     SELECT  F1  ASSIGN  TO  "c:\cobol.lst003.cbl"  STATUS  FST
                         ACCESS  MODE  IS  SEQUENTIAL.
 DATA                       DIVISION.
 FILE                       SECTION.
 FD  F1.
 01  F1R                    PIC X(72).
 WORKING-STORAGE            SECTION.
 01  FST                    PIC X(02).
 01  SW                     PIC 9(01) VALUE 1.
 PROCEDURE                  DIVISION.
     PERFORM  UNTIL  sw  =  9
         display "奇数=1 偶数=2 終了=9 type-in"
         accept sw
*        (分岐)  (基本項目名)
         evaluate  sw
            when   1   perform a-rtn  thru  a-ex
            when   2   perform a-rtn  thru  a-ex
            when   9   continue
            when   other   display "!!! type-in irregal !!!"
         end-evaluate
     end-perform
     display "!!! lst003-ended !!!"
     stop-run.
 a-rtn. open  input  f1
        perform  until  fst  not  =  "00"
            read  f1
                 end    continue
                 not end  if sw = 1
                            then  move  2  to  sw  display  f1r
                            else  move  1  to  sw
                          end-if
            end-read
        end-perform
        close  f1.
 a-ex.  exit.

「evaluate」は、他言語でお馴染みの「case」や「elif」と同じ命令です。同じ項目(もしくは真偽)に対して複数の条件分岐ができます。これはCOBOLに限らずプログラム言語では頻繁に利用される命令ですね。覚えましょう。


<< Back    Index    Next >>   < Top >