menu
書いてる野郎
orebike@gmail.com
まずは HelloWorld
今回は Linux Mint 19 環境でやっている。Ubuntu と同等だと思って良い。
探す
$ apt search cobol p open-cobol - COBOL compiler p open-cobol:i386 - COBOL compiler
もろに出てきたので入れる。逆に cobol 関係のパッケージがこれしかないというのが・・・。
$ sudo apt install open-cobol
これでおそらく cobc
というコマンドが使えるようになる
$ cobc --version cobc (OpenCOBOL) 1.1.0 Copyright (C) 2001-2009 Keisuke Nishida / Roger While Built Aug 04 2016 15:56:22 Packaged Feb 06 2009 10:30:55 CET
1.1.0 らしい。新しいのか古いのかすらわからない。
ファイル名は helloworld.cob とでもしておこう。
hello world を表示するコードはこうなる。
IDENTIFICATION DIVISION. PROGRAM-ID. HELLOWORLD01. * PROCEDURE DIVISION. DISPLAY "HelloWorld". STOP RUN.
ポイントはこの行頭の7スペースのインデントである。
ここには本来
000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. HELLOWORLD01.
このような6桁の数字列+スペース1個が入っていた、行番号を自力で書くという仕様の名残りのようだ。 処理系によっては、エディタが1行しか入力できず、行番号を指定して該当の行を編集するということをしていた。 N88-BASIC とかはそんな感じだった。
連番になってないで番号が飛び飛びになっているのは、後でその間に行を挿入することを考えてそうなっている。
COBOL でも最新のコンパイラはこの行番号を無視する仕様らしいので、とりあえずスペース開けて仕様に適合させているという感じである。
なのでこのスペース無しで書くとコンパイラに
Invalid indicator 'F' at column 7
と怒られたりする。いきなり F ワードなんで怖いが、この column 7 というのはおそらくプリプロセスでで行頭6文字を切り飛ばしてしまうので IDENTIFICATION の F がわかんねーよと言われているのだと。
コンパイルする
$ cobc -x helloworld.cob
こうすると helloworld というネイティブの実行ファイルが生成されるので、普通に実行する。
$ ./helloworld HelloWorld