FizzBuzz問題の解答例 COBOL編

COBOLプログラムによるFizzBuzz問題の解答例。

解答例

条件分岐とループによるプログラム:

* FIZZBUZZ.COB
* YCobolで実行
* 複数行コメントは非サポート
IDENTIFICATION DIVISION.
PROGRAM-ID. FIZZBUZZ.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
01 I PIC 9(3).
01 R3 PIC 9(1).
01 R5 PIC 9(1).
01 Q PIC 9(2).
*
PROCEDURE DIVISION.
MAIN.
  PERFORM VARYING I FROM 1 BY 1 UNTIL I > 100
* 余りを計算する
    DIVIDE I BY 3 GIVING Q
    COMPUTE R3 = I - (Q * 3)
    DIVIDE I BY 5 GIVING Q
    COMPUTE R5 = I - (Q * 5)
* Iが3の倍数かつ5の倍数
    IF R3 = 0 AND R5 = 0 THEN
      DISPLAY "Fizz,Buzz"
    ELSE
* Iが3の倍数(かつ、5の倍数でない)
      IF R3 = 0 THEN
        DISPLAY "Fizz"
      ELSE
* Iが5の倍数(かつ、3の倍数でない)
        IF R5 = 0 THEN
          DISPLAY "Buzz"
        ELSE
* Iが3の倍数でも5の倍数でもない
          DISPLAY I
        END-IF
      END-IF
    END-IF
  END-PERFORM
  STOP RUN.

【theme : プログラミング
【genre : コンピュータ

プロフィール

よしいず

Author:よしいず
MATHEMATICS.PDFというウェブサイトを運営しています。

管理の都合上、トラックバックとコメントはオフにしてあります。ブログ経験者なら分かっていただけると思いますが、スパム(アダルトやその他の宣伝)ばかりなのが現実です。

リンクは自由です。当サイトの記事に対する間違いの指摘・意見・感想などを述べた記事からのリンクは歓迎です。ただし、ブログ記事アップ直後はミスが多く、頻繁に修正します。場合によっては削除する可能性もあります。その際、何も断りもなく修正・削除しますがご了承ください。内容を参考にする場合には投稿後一週間ほど様子を見てからにしてください(笑)。

記事の間違いを指摘するときは、その具体的箇所、理由(仕様に反するなど)・根拠(参考にした文献など)、代替案(同じ結果を得るための正しいやり方)も教えてください。そうしないと、(指摘される側および第三者はその時点では無知の状態なので、)どこが間違いなのか分かりませんし、本当に間違っているのかどうかが判断・検証できません。実際、間違いだと指摘されたことが結局は正しかったというケースもありますので。

このブログのタイトル一覧

リンク
月別アーカイブ
カテゴリ
最新記事
検索フォーム
RSSリンクの表示