7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ズンドコキヨシ with COBOL

Last updated at Posted at 2016-03-19

COBOLでズンドコ

今、はやりのズンドコキヨシの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
ズン
ズン
ズン
ズン
ズン
ドコ
ドコ
ズン
ドコ
ズン
ズン
ドコ
ズン
ズン
ドコ
ズン
ズン
ズン
ズン
ドコ
キ・ヨ・シ!
$

っぽくなりました!

以上

7
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?