ズンドコキヨシ with COBOL

  • 3
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

COBOLでズンドコ

http://qiita.com/shunsugai@github/items/971a15461de29563bf90

今、はやりのズンドコキヨシのCOBOL版が見当たらなかったので、書いてみました。
とはいえ、20年ぶりくらいにCOBOLを書くので、全然COBOLっぽくないかも。。。
そして、PCでCOBOL書くのは、想像以上に書きづらかった!

準備

今回は、GnuCOBOL (formerly OpenCOBOL)っていうのを使わせていただきました。
Macだったら、

$ brew install open-cobol

であっさり入ります。

中身

zd.cob
000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. ZUNDOKO-KIYOSHI.
000030 ENVIRONMENT DIVISION.
000040 DATA DIVISION.
000050 WORKING-STORAGE SECTION.
000060   77 END-FLAG                    PIC 9(01).
000070   77 WRK                         PIC 9(01).
000080   77 ZUN-COUNT                   PIC 9(01).
000090   77 SEED                        PIC 9(06).
000100   01 CURRENT-DATE-STRUCT.
000110     05 CURRENT-DATE.
000120       10 CURRENT-YEAR            PIC 9(04).
000130       10 CURRENT-MONTH           PIC 9(02).
000140       10 CURRENT-DAY             PIC 9(02).
000150     05 CURRENT-TIME.
000160       10 CURRENT-HOURS           PIC 9(02).
000170       10 CURRENT-MINUTE          PIC 9(02).
000180       10 CURRENT-SECOND          PIC 9(02).
000190       10 CURRENT-MILLISECONDS    COMP-2.
000200     05 DIFF-FROM-GMT             PIC S9(04).
000210 PROCEDURE DIVISION.
000220 MAIN SECTION.
000230* Initialize random seed
000240   MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-STRUCT.
000250   COMPUTE SEED = CURRENT-HOURS * 1000
000260     + CURRENT-MINUTE * 10 + CURRENT-SECOND.
000270   COMPUTE WRK = FUNCTION RANDOM(SEED).
000280* Zundoko
000290   PERFORM UNTIL END-FLAG = 1
000300     COMPUTE WRK = FUNCTION RANDOM * 10
000310     DIVIDE WRK BY 2 GIVING WRK REMAINDER WRK
000320     IF WRK = 1 THEN
000330       DISPLAY 'ズン'
000340       COMPUTE ZUN-COUNT = ZUN-COUNT + 1
000350     ELSE
000360       DISPLAY 'ドコ'
000370       IF ZUN-COUNT = 4 THEN
000380         MOVE 1 TO END-FLAG
000390       END-IF
000400       MOVE 0 TO ZUN-COUNT
000410     END-IF
000420   END-PERFORM.
000430   DISPLAY 'キ・ヨ・シ!'.
000440   STOP RUN.

こんな感じです。
COBOLなので、わかりやすさを意識して書いてみましたが、意外とわかりづらい???
そして、昔のことすぎて覚えてないので、COBOLっぽく書けてるのかは謎です。

実行

$ cobc -x ./zd.cob ; ./zd
ズン
ズン
ズン
ズン
ズン
ドコ
ドコ
ズン
ドコ
ズン
ズン
ドコ
ズン
ズン
ドコ
ズン
ズン
ズン
ズン
ドコ
キ・ヨ・シ!
$

っぽくなりました!

以上