LoginSignup
9

More than 5 years have passed since last update.

COBOLを触ってみる

Posted at

前置き

いつもPHPとJavaScriptとワイワイやってる者です :lollipop:
「ちょっと興味あるんだよね〜」ぐらいの関心度の方に見ていただければ良いのやもしれません。
(以下、自分なりの解釈を入れています。間違いがありましたらご教授いただけると幸いです。)

実行環境

Mac (El Capitan)
※ なんかめんどくさくてVMとか使いませんでした:wink:

基礎

  • 区切りには「.」をつける
  • コメントには先頭に「*」をつける
  • 一行あたり80文字まで
  • 次の行にわたって書く場合、「-」を使う

構成(*のついた部門は、基本的に必須項目)

IDENTIFICATION DIVISION : 見出し部※

PROGRAM-ID. [プログラム名].
AUTHOR. [作成者].
INSTALLATION. [設置環境].
DATE-WRITTEN. [作成日].
DATE-COMPILED. [翻訳日].
SECURITY. [セキュリティ].
  • PROGRAM-ID のみ必須

SECURITYって何書くんですかね・・・ )

ENVIRONMENT DIVISION : 環境部※

実行に必要な環境を書くらしい。ハードウェアとの連携?する場合もここに記述するみたいです。
(プリンターとかね)
特に I/O がない場合は書かなくてもいい項目。

● 構成節(CONFIGURATION. SECTION.)
● 入出力節(INPUT-OUTPUT. SECTION.)

DATA DIVISION : データ部

データを扱う上で、名前・型・文字数等々を定義する箇所。
ここにまとめて書く。

● ファイル節(FILE. SECTION.)
 データファイル
● 作業場所節(WORKING-STORAGE. SECTION.)
 ファイル内だけで使用するデータ項目
● 連絡節(LINKAGE-STORAGE. SECTION.)
 外部プログラム内で使用するデータ項目

PROCEDURE DIVISION : 手続き部*

● 宣言部分
● 手続き部分

ここまでで、私の理解は2割程度。
手を動かさないと、頭で覚えられないので・・・

れっつとらい!

実行環境を整える

こちらの記事を参考にさせていただきました。

Homebrewを入れる

$ sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/
install)"

brewコマンドから、COBOLのコンパイラを入れる

$ brew install open-cobol

終了!さっくり環境ができました〜

実際に動かしてみる

最低限のフォーマット

temp.cob
IDENTIFICATION DIVISION.
PROGRAM-ID. TEMPLATE.
PROCEDURE DIVISION.
    STOP RUN.

※ PROGRAM-ID. の [TEMPLATE] は動的に変わる部分です。

● 実行コマンドどーん!!!

shell
$ cobc -x --free temp.cob # コンパイルされ、tempディレクトリが生成される
$ ./temp # 実行!

エラーも出ないので、問題なさそうです!

Level 1 : 文字列を書き出す

みんな大好き「Hello world!」

hello.cob
IDENTIFICATION DIVISION.
PROGRAM-ID.HELLO.
PROCEDURE DIVISION.
    DISPLAY "Hello World!".
    STOP RUN.

@ 文字を出力する時は「DISPLAY」を使います

Level 2 : データ項目を用意し、その中身を書き出す

hello2.cob
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO2.
DATA DIVISION.
    WORKING-STORAGE SECTION.
        01 STR PIC X(15) VALUE "Hello World!".
        01 NAME PIC X(30).
PROCEDURE DIVISION.
    DISPLAY STR.
    MOVE "My name is Cyber Mergina." TO NAME.
    DISPLAY NAME.
    STOP RUN.

@ "DATA DIVISION." > "WORKING-STORAGE SECTION."

「01」…独立した変数ですよ〜という意味
「STR/NAME」…定義したデータ項目
「PIC」…必須みたいです
「X(n)」…英文字がn文字まで入る、という定義
「VALUE "HOGE"」…初期値として"HOGE"という文字列を入れる

@ "PROCEDURE DIVISION."
「MOVE "abc" TO NAME」…NAMEというデータ項目に、"abc"という文字列をセットする

ここで学生時代を思い出せた(?)ので、ここまでにしたいと思います!
たまには、こういう言語を触るのも良い気分転換になりそうです!

何故COBOLを触ったのか(超余談)

私が初めてプログラミングに触れたのは商業高校生の頃でした。
全国商業高等学校協会主催のプログラミング検定があったので取得したのがきっかけです。
言語はCOBOL。
でも、検定は筆記だったので、実際に動かしたことはなかったのです。
(自宅にネット環境なかったしね・・・・)

現在4年半ほどプログラマをしていますが、COBOLを動かしたことは一度もありません。

Studentカレンダーに何故か呼ばれたので折角だし、動かしてみようと思った次第です。

今もプログラミング検定はCOBOLなのかなぁw

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
9