【COBOL】WindowsにOpenCOBOL環境を構築
※注意! (2017/5/27 追記)
Bash on Ubuntu on Windowsを使ったセットアップ方法を書きました。
→ 【COBOL】Bash on Ubuntu on WindowsでCOBOL - くんすとの備忘録
※注意! (2015/5/8 追記)
本記事の内容が古くなってきたため、同様の内容を、2015/5/8時点で書き直しました
→ WindowsにMSYS2を使ってCOBOL環境を構築する - くんすとの備忘録
Windows上でOpenCOBOLを使いたくなったので、MinGWとOpenCOBOLを入れてみました。
参考URL
- MinGWセットアップ関連
- OpenCOBOLセットアップ関連
- OpenCOBOL上での文字コードの扱いについて
セットアップ手順
MinGWのインストール(portableな設定で)
- ここから、Windows用のインストーラをダウンロード
- mingw-get-inst-20120426.exe
- インストール
- D:\tmp など、やる気のないフォルダを作成し、一旦そこへインストール
- 下記のパッケージを選択
- C Compiler
- C++ Compiler
- MYSY Basic System
- MinGW Development ToolKit
- 本命のディレクトリへコピー
- D:\tmp\MinGW を、C:\usr\MinGW へコピー
- おもむろにアンインストール
- アンインストーラでアンインストール後、フォルダ(D:\tmp\MinGW)を削除
- msysの設定を行う
- fstabの書き換え(C:\usr\MinGW\msys\1.0\etc\fstab)
- C:\usr\MinGW\ /mingw
- fstabの書き換え(C:\usr\MinGW\msys\1.0\etc\fstab)
- 起動BATの作成(C:\usr\MinGW\mingw.bat)
@echo off REM --- MinGW用の環境変数の設定 set MINGW=%~dp0 set C_INCLUDE_PATH=%MINGW%\include set CPLUS_INCLUDE_PATH=%MINGW%\include set LIBRARY_PATH=%MINGW%\lib REM --- 環境変数 PATHの設定 set PATH=%MINGW%\msys\1.0\bin;%MINGW%\bin;%PATH% REM --- OpenCOBOL コンパイル用 set COB_CONFIG_DIR=/mingw/share/opensource-cobol-1.3J/config REM --- MSYS の起動 CALL %MINGW%\msys\1.0\msys.bat
OpenCOBOLのインストール
- msysを起動し、下記コマンドでパッケージのインストールを行う
- mingw-get update
- mingw-get upgrade
- mingw-get install mingw32-libpdcurses
- mingw-get install mingw32-gmp
- mingw-get install mingw32-pdcurses
※readme.txtには「mingw-get install msys-mintty」したほうがいいよ、って書いてありますが、やりません。おこのみで。
- Shift-JISでDisplayする為に、nkfをインストール
- http://www.vector.co.jp/soft/win95/util/se295331.html
- 上記でDLしたexeを、msysのbin(C:\usr\MinGW\msys\1.0\bin)へコピー
- http://www.vector.co.jp/soft/win95/util/se295331.html
- OpenCOBOL or opensourceCOBOL と vbisam の入手
- http://www12.ocn.ne.jp/~peg/bin/download.html より、下記のファイルをDL
- opensource-cobol-1.3J-1.zip
- vbisam-2.0-1.zip
- 解凍したものを、フォルダごと MinGW インストールフォルダの直下にコピー
- ※ファイルの上書きは発生しない
- http://www12.ocn.ne.jp/~peg/bin/download.html より、下記のファイルをDL
- 起動確認
- cobc -v
- ソースを書いてひと通り実行してみる
- ソース・shellどちらも、文字コードはShift-JIS、改行コードはCRLF(0x0D0A)で作成
[_compile_run.sh] ※コンパイル&実行用シェル
#!/bin/bash cblsrc=$1 cblbin=${cblsrc}.bin cobc -x -o $cblbin $cblsrc && $cblbin | nkf32 -xS echo "RETURNCODE:$?">/dev/stderr [ -e "$cblbin" ] && rm $cblbin
[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. *
実行結果
$ _compile_run.sh test1.cbl TEST-X :This is X Type/ TEST-9 :12345678/ TEST-S9 :001234u/ TEST-COMP3:4Vx/ TEST-N :こんにちは、世界!/ TEST-BYTE :妹/ RETURNCODE:0
コンパイル時に「/mingw/share/opensource-cobol-1.3J/config/default.conf: No such file or directory」って出るときの対処法
- ネットの情報
- 自分がやったこと
- export COB_CONFIG_DIR=/mingw/share/opensource-cobol-1.3J/config
- 起動時に自動的に環境変数が反映されるよう、起動BATに仕込みました。(環境によっては.bashrcでもよいと思います)
- 全く同じパスを設定しているだけの筈なんだけど、とりあえずこれでコンパイル通るようになりました。
- readme.txtに「OpenCOBOL 1.1 prerelease MinGW Binary が抱える問題(未更新)」って記述があるのだけれど、これのことかな。
- export COB_CONFIG_DIR=/mingw/share/opensource-cobol-1.3J/config
以上。
バイナリファイルをいじくりまわすのって、COBOL使うと非常に楽っぽい予感がするのですよね~
ファイル圧縮とか。