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をゼロに戻す、と。わかるかな?