COBOLソースのコンパイルおよび実行
ここまでで、/usr/local/bin配下にコンパイラ、/usr/local/lib配下にライブラリが配置されました。早速、サンプルプログラムをコンパイルし、実行してみましょう。
サンプルプログラム
月並みではありますが、"Hello World"を表示するプログラムを作成します。
123456*890123456789012345678901234567890123456789012345678901234567890 IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE1. AUTHOR. Eiichi Fuse. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 77 CMD PIC 9. PROCEDURE DIVISION. PG-TOP. DISPLAY "Hello World". ACCEPT CMD. IF CMD = 0 THEN GO TO PG-TOP. STOP RUN.
単純に"Hello World"を表示するだけでは面白くないので、表示後に"0"を入力した場合は再度表示するようにしてみました。
1行目はカラム数を入れました。7桁目を"*"とするとコメント行となります。通常、1桁~6桁は行番号を入れます。ソートされている必要はありません。COBOLに限らないですが、過去にはソースやデータを紙パンチカードで作成しており、誤って紙パンチカードの順序が変わったことがありました。そのため順序番号を付加し、紙パンチカードを投入時にソートする処理を加えていました。
このソースをターゲットマシンの適当なディレクトリにsample1.cobで作成してください。
コンパイル方法
OpenCOBOLにはさまざまなコンパイルオプションがあります。詳細は、--helpスイッチで表示されます。今回は、単一ソース、単純なプログラムですので、直接実行ファイルを出力する方法とします。
/usr/local/bin/cobc -x ソースファイル名
今回は、ソースファイル名が"sample1.cob"となっているので、コンパイル実行後、エラーがなければ同一のディレクトリに"sample1"という実行ファイルが作成されているはずです。
[e-fuse@]$ ls -l 合計 1044 -rwxr-xr-x 1 e-fuse e-fuse 10301 3月 3 15:33 sample1 -rw-r--r-- 1 e-fuse e-fuse 422 3月 3 15:32 sample1.cob [e-fuse@]$
用途別によるコンパイルスイッチの使用方法については、稿を改めて紹介します。
実行
今回作成したプログラムをそのままコピー&ペーストしてCOBOLソースを作成してコンパイルすれば、コンパイルエラーは無く、すんなりと実行ファイルが作成されているはずです。それでは、早速実行してみましょう。
[e-fuse@]$ ./sample1 [e-fuse@]$ ./sample1: error while loading shared libraries: libcob.so.1: cannot open shared object file: No such file or directory
いきなりエラーが出てしまいました。
これは、sample1実行時にライブラリが見つからなかったというエラー表示になります。
通常ライブラリは"/usr/lib"に格納されています。COBOLライブラリは"/usr/local/lib"配下に格納されているため、実行シェルにPATHを設定するか、"/usr/lib"配下にリンクを設定する必要があります。用途に応じて設定してください。
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib export LD_LIBRARY_PATH
ln -s /usr/local/lib/libcob.so.1.0.0 /usr/lib/libcob.so.1 ln -s /usr/local/lib/libcob.so.1.0.0 /usr/lib/libcob.so
COBOLライブラリを設定後、改めてsample1を実行してみましょう。
[e-fuse@]$ ./sample1 Hello World 0 Hello World 1 [e-fuse@]$
"Hello World"が表示され、コマンド入力待ちとなったはずです。ここで、0を入力し、Reterunキーを押してください。すると、また"Hello World"が表示されました。
0以外を入力し、Reterunキーを押すと、コマンドプロンプトが表示されます。意図どおりの実行結果になりました。
まとめ
今回はLinux環境でOpenCOBOL開発環境を構築しました。冒頭にも記述しましたがUNIX互換環境であれば、同様の手順で開発環境を構築できます。ぜひ挑戦してみてください。
次回は、構築した環境でいくつかのサンプルプログラムを作成し、COBOLプログラムの基本的な文法について解説します。
参考資料およびURL
- SourceForge (OpenCOBOL)…ソースの取得先です。
- OpenCOBOL日本公式サイト
- COBOLコンソーシアム