LoginSignup
5
5

More than 5 years have passed since last update.

COBOLの基本(コーディング制約)

Last updated at Posted at 2017-06-22

あくまでも自分用のメモ書きなので読みづらくても知りません


プログラムを動かす

まずCOBOLのファイルの拡張子は.cbl。(他にもあるがとりあえず基本的にはこれでいきたい)
ファイル名がtest.cblの場合、openCOBOLだと次のようにする。
cboc -x test.cbl
Screenshot from 2017-06-22 00-24-12.jpg
このコマンドを入力するとtestというファイルが作成される。
これは他の言語でも言えるのだが、このプログラムを実行するためには
./test
というコマンドを入力する。HELLO, WORLD!という文字を出力するだけのプログラムなら次のようになる。
hello.jpg
以上。とりあえずこれでプログラムは動かせる。ちなみにcboc -x云々に関してはコーディングミスってるとエラー吐かれて死ぬ。

コーディング制約

COBOLでは、次のような書き方をしないといけないらしい。

coding.cbl
000010 IDENTIFAICATION                DIVISON.   
000020 PROGRAM-ID.                     DSP001.
000030 PROCEDURE                      DIVSION.
000040     DISPLAY    "HELLO, WORLD!"
000050     STOP RUN.

これは先程動かしたHELLO, WORLD!と表示させるプログラム。
かなり面倒だけどとりあえずこんなふうに書かないといけない。
COBOLでは、80文字以内にコードを収めないといけないらしい。糞だなこの言語。
しかもおまけに文字数(COLUMN)で役割がわかれているらしい。

一連番号領域

先ほどのコードで言うところの頭のNNNNNNという六文字は一連番号領域と呼ばれているらしい。
1行進む毎に10を足していくだとか。ちなみに固定長なのでNNNNN(5文字)とかはだめっぽい。
更に追記しておくと6文字スペースでもいいらしい。適当やん・・・まあ時代の進歩なのだが。

標識領域

その後の7文字目は標識領域と呼ばれているもの。
ここでは空白(スペース)だが、ちゃんと役割があるらしい。

標識 説明
(空白) COBOLのプログラムコード行である。
* コメント行である。
/ プログラムコードを印刷する際の改ページ行である。
- 前行から継続している。

非常にわかりやすい。いやわからんわ。

A領域

標識領域の次はA領域
8-11文字目をA領域と言う。ここでは各部の宣言(IDENTIFICATION DIVISIONとか)などを書く。

B領域

AがあればBもある。B領域は12-72文字目までを使う。
B領域では命令文など、処理部となるコードを記述する。

見出し行

73-80文字目は見出し行と呼ばれている。
ここでは最終更新日だったり説明だったり作者だったりを記述するらしい。
ぶっちゃけコンパイルする際には関係ないらしいからどうでもいいのでは?

まとめ?

とまあこんな感じで様々な領域に分かれているらしい。80文字しか使えないのにこんなクソみたいな固定長の制約なんて!!!
まあそこがCOBOLのいいところでもあるらしいしそういう言語なのだと割り切れれば別に問題ない。
昔と違って今はカードに印刷したりする必要ないしね。後続を次の行に書けるし。
ちなみに、大文字と小文字は区別されないらしい。でも皆基本的に大文字だし大文字で書いた方が見栄えは良さそう。
調子に乗って1-8文字目までを記述せずにいきなり宣言なんてしようものならコンパイル時にエラー吐いてくれる。面倒くさい子である。
先程記述していたコードは空白の部分は割と適当にしたので文字数とかあってないかもしれない。そこらへんは適当にやっても実際に動いたしいいと思う。
基本的な部分はこんな感じ。
この記事はここまで。地道に勉強していきます。

5
5
0

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
5
5