はじめに
2020年は色々あってCOBOLが世界を制します。
1時間でチュートリアルしてみました。
実行環境
Dockerで動くものを用意しました。
リポジトリ
COBOLのランタイムはこちらからダウンロードしたものをあらかじめgit管理しています。
実行コマンド
$ git clone https://github.com/glassmonkey/hello-cobol
$ cd hello-cobol
$ docker-compose up
出力
$ hello world
ソースコード
QiitaにCOBOLのシンタックスなくてわろた。
プログラムちょい替え(4)COBOLを40年ぶりにうごかしてみた:dockerでcobol, docker(81)からソースコードお借りしました。
000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. SAMPLE-01.
000030*
000040 ENVIRONMENT DIVISION.
000050*
000060 DATA DIVISION.
000070*
000080 PROCEDURE DIVISION.
000090 MAIN.
000100 DISPLAY "Hello world!" UPON CONSOLE.
000110 STOP RUN.
プログラムの構成
COBOLプラグラム入門様を元に参考にしました。
COBOLは部と段落から構成させるプログラム言語とのこと。部は段落から構成されており、それぞれ部には必要な段落を記載するとのこと。
見出し部(IDENTIFICATION DIVISION)
プログラムのメタ情報を記述するところ。今回は内部的にSample-01と名前をつけている。
作成者などもここに書く模様。
環境部(ENVIRONMENT DIVISION)
実行マシン名(SOURCE-COMPUTER)や環境変数の受け渡し情報やプログラムから読み書きするファイルの名前や種類を書くところ。今回は空。
データ部(DATA DIVISION)
変数や外部IOに関して記述するところ。今回は空。
手続き部(PROCEDURE DIVISION)
いわゆるロジックを書くところ。今回はこのような形でHello worldを標準出力することを記載。
000090 MAIN.
000100 DISPLAY "Hello world!" UPON CONSOLE.
000110 STOP RUN.
感想
友人が仕事でCOBOLをやり始めたみたいだったので、エイプリルフールネタで入門してみました。学生時代にポケコンでBasic書いてた時代を思い出して、懐かしい気持ちになりました。
なんだかんだコンテナ化できれば、過去の資産は活かせそうかなと思いましたが、やはり使うのはやめましょう。人類には早すぎます。
適当にプログラミング関係のことやグラブル関係のことをつぶやいてたりします。もしよければ@glassmonekeyをフォローしてくれるとうれしいです。
参考
下記をお借りしました。
* ランタイム
https://sourceforge.net/projects/open-cobol/files/gnucobol/3.0/