COBOL/HelloWorld

COBOL/HelloWorld

まずは 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 コードを書く

ファイル名は 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
cobol/helloworld.txt · 最終更新: 2019-01-24 11:45 by ore