【COBOL】Bash on Ubuntu on WindowsでCOBOL
ちょっとネタ記事ばかり書いてしまったので、まともな記事を書こうと思います。
このブログのアクセス解析をしたところ、ダントツのアクセス数を叩き出しているのはこの記事でした。
つまり、WindowsでCOBOLを動かす、ということには需要がある!!
というわけで、Bash on Ubuntu on Windows(以後「BoW」)でCOBOLを動かしてみました。 以前はMSYS2やMinGWで動かしていましたが、そのときよりも若干セットアップは簡単です。
概要
COBOLのコンパイラをインストールし、簡単なCOBOLのプログラムをコンパイル・実行できるところまでを検証します。
検証環境
Windows 10 Pro 64bit
- バージョン 1703
- ビルド:15063.13
※Creators Update後のWindows10です
また、BoWは既に使えるようになっている前提です。セットアップ方法はこの辺り(Bash on Ubuntu on Windowsをインストールしてみよう! - Qiita)を参考にすればよさそう。
セットアップ手順
opensource COBOLのインストール
OSSコンソーシアムのサイト(https://www.osscons.jp/osscobol/)から、opensource COBOL1をダウンロードします。
wget "https://www.osscons.jp/osscobol/files/?action=cabinet_action_main_download&block_id=414&room_id=21&cabinet_id=11&file_id=380&upload_id=759" -O opensource-cobol-1.5.1J.tar.gz
ビルドに必要なライブラリをインストールします。
(何が必要か、ということは README
に書いてありました)
$ sudo apt-get install build-essential libgmp-dev libdb-dev libncurses5-dev
解凍
$ tar -xvf opensource-cobol-1.5.1J.tar.gz
ビルドとインストール
$ cd opensource-cobol-1.5.1J
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig
※ldconfig
しないと、libcob.so.1
が見つからない旨のエラーが発生してしまいます
確認
$ cobc
cobc: No input files
と表示されればインストールが成功しています。
作業フォルダの作成
BoWとWindowsで連携しながら開発を行うため、Windowsのエクスプローラから作業フォルダを作成します。
作業フォルダを C:\work\cobol
に作成した場合、BoWからは /mnt/c/work/cobol
のパスで参照できます。
BoWを作成した作業フォルダまで移動します。
$ cd /mnt/c/work/cobol
検証用ソースの作成
検証用のソースを適当なエディタで作成します。 文字コードはShiftJISにしてください。改行コードはLFでもCRLFでもどちらでも大丈夫です。
C:\work\cobol\test1.cbl
IDENTIFICATION DIVISION. PROGRAM-ID. test1. ENVIRONMENT DIVISION. * DATA DIVISION. * WORKING-STORAGE SECTION. 01 FILLER. 03 TEST-X. 10 VAR PIC X(14). 10 END-POINT PIC X(01) VALUES '/'. 03 TEST-9. 10 VAR PIC 9(08). 10 END-POINT PIC X(01) VALUES '/'. 03 TEST-S. 10 VAR PIC S9(07). 10 END-POINT PIC X(01) VALUES '/'. 03 TEST-COMP3. 10 VAR PIC S9(09)V9(2) COMP-3. 10 END-POINT PIC X(01) VALUES '/'. 03 TEST-N. 10 VAR PIC N(09). 10 END-POINT PIC X(01) VALUES '/'. 03 TEST-B. 10 VAR PIC S9(4) COMP. 10 END-POINT PIC X(01) VALUES '/'. * PROCEDURE DIVISION. MAIN-RTN. PERFORM EDIT-RTN. PERFORM OUTPUT-RTN. MOVE 9 TO RETURN-CODE. EXIT. STOP RUN. * EDIT-RTN SECTION. MOVE 'This is X Type' TO VAR OF TEST-X. MOVE 12345678 TO VAR OF TEST-9. MOVE -12345 TO VAR OF TEST-S. MOVE 123456789.12 TO VAR OF TEST-COMP3. MOVE 'こんにちは、世界!' TO VAR OF TEST-N. MOVE 38533 TO VAR OF TEST-B. *> 38533 = 0x9685 = '妹' EXIT. * OUTPUT-RTN SECTION. DISPLAY 'TEST-X :' TEST-X. DISPLAY 'TEST-9 :' TEST-9. DISPLAY 'TEST-S9 :' TEST-S. DISPLAY 'TEST-COMP3:' TEST-COMP3. DISPLAY 'TEST-N :' TEST-N. DISPLAY 'TEST-BYTE :' TEST-B. EXIT. *
実行準備
COBOLソースやファイルにはShiftJISのファイルを扱うことを想定していますが、BoWの文字コードはUTF-8です。なので、そのままプログラムを実行すると出力が文字化けしてしまいます。
文字化けを解消するためのツールとして nkf
をインストールしておおきます。
$ sudo apt-get install nkf
コンパイルと実行
検証用のソースをコンパイルします。
$ cobc test1.cbl
→ test1
というファイルができます。
ひとまず、そのまま実行してみます。
$ ./test1
実行結果
TEST-X :This is X Type/ TEST-9 :12345678/ TEST-S9 :001234u TEST-COMP3:4Vx,/ TEST-N :ɂ́AEI/ TEST-BYTE :/
このように、日本語の部分が文字化けしてしまっています。
出力結果に nkf
を通すことで文字化けを解消できます。
もう一度実行してみましょう。
$ ./test1 | nkf
実行結果
TEST-X :This is X Type/ TEST-9 :12345678/ TEST-S9 :001234u/ TEST-COMP3:4Vx/ TEST-N :こんにちは、世界!/ TEST-BYTE :妹/
日本語の文字化けが解消されました。 (pack項目はそもそもバイナリなのでこのままです。)
参考URL
- オープンCOBOLソリューション部会 - OSSコンソーシアム
- Bash on Ubuntu on Windowsをインストールしてみよう! - Qiita
- UbuntuにOpenCOBOLをインストールしてみた。 - 自分の仕事を憎むには人生は余りにも短い
- Ubuntu で OpenCOBOL - イトウ アスカ blog
-
執筆時のバージョンは
v1.5.1J
↩