夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

SKE48の松井玲奈がCOBOL検定一級を持っているぱない人だと聞いて

今日@さんがRTしていたつぶやきにこの事実があったので(HPのCMのインタビューで話していたらしい)FORTRANとならぶ歴史物の言語、COBOLがどんなものか、ココを参考にC++とかと比較して見ながら書いてみようかと思います。

1.とりあえず基本だけをだらだら書いてみる

まずHello,World!から。
C++実装は自明なので飛ばします。
さて、これをCOBOLで書くとどうなるのでしょうか?やってみましょう。

IDENTIFICATION             DIVISION.
PROGRAM-ID.                HELLOWORLD.
AUTHOR.                    TOUYOU.
DATE-WRITTEN.              2012-02-16.
PROCEDURE                  DIVISION.
    DISPLAY  "Hello, World!"
    STOP RUN.

え・・・長www
いや、わざと少し長くしているんですが・・・
まずCOBOLの基本構造はDIVISIONというもので分けられるそうです。それぞれに種類もあるらしくそれは以下のようになっているようです。

1.IDENTIFICATION DIVISION. (見出し部) ・・・ プログラムの名前などを記述します
2.ENVIRONMENT DIVISION. (環境部) ・・・ ファイルを利用する場合など、実行環境を記述します
3.DATA DIVISION. (データ部) ・・・ プログラムで使用するデータ項目について記述します
4.PROCEDURE DIVISION. (手続き部) ・・・ 実際のプログラム(命令語)を記述します

前のコードからもわかるように2,3は必須では無いようですが、使うときは必ずこの番号順につかうらしいです・・・(読みやすくなるのはわかるけど明らかにめんどくさいし業務用w)
さて、次に2行目、ここはプログラムの名前を定義していてこれも必須なんだそうです。とりあえずそれだけ。
見出し部に入るAUTHORやらDATE-WRITTENは任意だそうです。まぁ業務用コメント文ですね(笑)
で手続き部に実際の処理を書いていきます。printfやcoutにあたるのは見ての通りDISPLAYです。用法的にはPythonのprintが置き換えられますね。
そしてプログラムはSTOP RUN.で終了します。BASICのEND文と同じと見ればいいでしょう。
つづいて繰り返し処理を見てみます。
C++初め多くの高級言語ではfor文やwhile文が用意されていて、初期値の設定などいろいろできて便利なのですがCOBOLではどうでしょう?
以降はお決まりの文句は面倒なので省いて書きます。

PERFORM 1000 TIMES
    DISPLAY  "Hello, World!"
END-PERFORM

・・・は?
これ明らかに機能たりない・・・?
いや多分1000 TIMESというのが条件式なんでwhile文と同じようには使えるのでしょうが・・・
ちょっと困りますね。。。でも構造はBASICと似てなくもない。
・・・とりあえず見回す。。。
!!?
驚きのもの発見!

ADD 1 TO A
ADD A B GIVING C

これはあかんでしょwww数式書かせてくれないとかね〜
・・・あ、はい。結構めんどくさくなったので雑になっています(^_^;)
とりあえずIF文はBASICと同じでした。
じゃ、まとめにはいります。

2.感想・まとめ

COBOLの全体像を見てみた感想としては、「くどいしめんどくさいしどうでもいいところをコマンドにしすぎている。」
ってところでしょうか・・・?
基本構造はBASICとほぼ一緒なんで難解言語の一部ですかね、はい。
とりあえずこれが扱える松井玲奈は現代の若者としてはやっぱりぱない人なのかも・・・
まぁ僕達は現代の高級言語に素直に甘えていましょう。はい。
あ、あとこれでCOBOLやりたくなったとかいう変態さんは僕が最初にあげたサイトでも参考にしたりググったりなんでもしてください。

3.おわり

(´・ω・`)