COBOL入門 Mission2-3 カウントアップ中に10ずつ表示

処 理 内 容 PROGRAM-ID 難易度 言語
カウントを表示 CNT003 1 COBOL
1:処理図
2:処理概要

[CNT002の条件変更]
1〜1,000までカウントアップしながら
10,20,30,40…のように10飛びで表示する

カウントは1ずつ加算すること

処理に要した時間も計算し最後に表示すること

このプログラムは、先ほどのCNT002に少し手を加えただけです。時間計算自体は前のプログラムと何ら変わりません。この問題で学ぶべき箇所は、1ずつ加算したカウントを10ずつ表示させるにはどうすれば良いか?ということ。できた人からサンプルを見て下さい

 IDENTIFICATION             DIVISION.
 PROGRAM-ID.                CNT003.
 DATA                       DIVISION.
 WORKING-STORAGE            SECTION.
 01  CNT                    PIC 9(04) VALUE 0. 
 01  CNT1                   PIC 9(02) VALUE 0.
 01  WTIME.
     03  HH                 PIC 9(02).
     03  MM                 PIC 9(02).
     03  SS                 PIC 9(02).
 01  STIME                  PIC 9(06) VALUE 0.
 01  ETIME                  PIC 9(06) VALUE 0.
 01  XTIME                  PIC 9(06) VALUE 0.
 PROCEDURE                  DIVISION.
     ACCEPT   WTIME  FROM  TIME
     COMPUTE  STIME  =  (HH * 3600) + (MM * 60) + SS
     PERFORM  UNTIL  CNT  =  1000
         ADD  1  TO  CNT  CNT1
         IF  CNT1   =  10
             THEN   DISPLAY  CNT
                    MOVE  ZERO  TO  CNT1
             ELSE   CONTINUE  *>CONTINUEは,"何もしない"です
         END-IF
     END-PERFORM
     ACCEPT   WTIME  FROM  TIME
     COMPUTE  ETIME  =  ((HH * 3600) + (MM * 60) + SS)
     COMPUTE  XTIME  =  ETIME - STIME
     COMPUTE  HH     =  XTIME / 3600
     COMPUTE  XTIME  =  XTIME - (HH * 3600)
     COMPUTE  MM     =  XTIME / 60
     COMPUTE  SS     =  XTIME - (MM * 60)
     DISPLAY  "TIME  =  " HH ":" MM ":" SS
     STOP  RUN.

今回の問題は、WORKING-STRAGE SECTION(今後はワーク領域と呼びます)にある「CNT」と「CNT1」がキモです。CNTは前プログラム同様、1〜1000まで加算するためだけに使用しています。そしてCNT1が今回新たに追加した項目です。このカウンタこそが今回のプログラムの鍵を握る、10までの加算をさせるカウンタです。CNT1が10になる都度、CNTを表示し、CNT1をゼロに戻す、と。わかるかな?


<< Back    Index    Next >>   < Top >