Windows環境におけるopensourceCOBOL環境構築手順

---
# Windows環境におけるopensourceCOBOL環境構築手順
---
#１．opensource COBOL とは

##（１）COBOL とは

　1959年に生まれた高レベルコンパイラ言語。事務処理用として知られるが、小数部を含んだ大桁数10進数データの四則演算や高度な演算が簡単に記述でき、しかも誤差を生じさせない仕様となっているほか、多重レコード指向のデータ項目（つまり構造体）処理が非常に書きやすいという特徴がある。
　現在でも世界で2000億行のプログラムが稼働しており、年間で50億行ずつ増加しているとも言われている。日本においても、官公庁/公共団体/金融機関における基幹系業務システムではいまだに主たるプログラミング言語であり、稼働するプラットフォームは、各メインフレーム環境、UNIX/Linux環境、いわゆるオフコンと呼ばれる国産商用コンピュータ環境（現在でも一万台以上が稼働している）、等がある。プログラム設計のパラダイムが長年に亘って確立されてきたため、誰が書いても品質にバラツキが生じないと言われている。またネイティブコードで実行されるため、処理性能は高速な部類に入る。

##（２）opensource COBOL とは

　COBOLの最大の短所として、長年クローズド環境でハードウェアメーカーが主導して開発されてきたため、コンパイル環境を個人が手にする事が難しい時代が長く続いた事が挙げられる。そのため、UNIX系OS自体に付属してくるC言語や、マイコン時代に配布されたBASIC言語、オープン環境+インターネット環境と共に広がったJava言語等と比較して、一般向け/学究向けには普及しなかった。
　そのような中で、オープンソースによるCOBOLの開発プロジェクトがいくつか誕生した。その一つが『OpenCOBOL』である。
　『opensourceCOBOL』は、『OpenCOBOL』のバージョン1.1（v1.1 pre-release）からforkされ、日本の商文化に併せた拡張を施したものである。（名前が似ていてややこしいが両者は別々のプロジェクト）
　昔ながらの（メインフレーム版の）COBOLとは異なり、ストレートにネイティブコードの生成を行うものではなく、内部的にいったんC言語に変換されてからコンパイルされる仕組みになっている。

　対応プラットフォームは、以下の通りである。
　a. Linux環境（GCCが必要）
　b. Windows版のLinux環境（MSYS2+MinGWのGCCが必要）
　c. Windows環境（Visual Stdioが必要）
　　　※VSは非営利個人利用ならば無償で利用可能（詳細はMicrosoft参照）

##（３）参照サイト

　a. OSSコンソーシアム：オープンCOBOLソリューション部会
　　URL: https://www.osscons.jp/osscobol/
　b. opensource COBOL の Windows 対応について - OSSコンソーシアム
　　URL: https://www.osscons.jp/osscobol/files?action=cabinet_action_main_download&block_id=414&room_id=21&cabinet_id=11&file_id=317&upload_id=598

---
#２．Windows環境におけるopensourceCOBOL環境作成メモ

##（１）必要となるもの

　a. Visual Stdio (VC++) 2010以降
　b. 多倍長整数ライブラリ（MPIR）のソース
　c. 端末制御ライブラリ（PDcurses）のソース（OSSコンソーシアムパッチ適用版）
　d. opensourceCOBOLのソース
　　(a) vbisamライブラリ生成
　　(b) libcobライブラリ生成
　　(c) cobcrunプログラム生成
　　(d) cobcプログラム生成

　　※基本的には上から順番に用意して行くのが良い。

##（２）Visual Stdio インストール

　現段階では、VS2015が最新版となっており、Visual Studio Community もしくは Visual Studio Express が、無償で入手可能となっている。

　Visual Studio Community は、VC#、VBの二つは必須となっており、VC++はカスタムで選択する。13GBくらいあるので、時間があるときに準備する。
　（オフラインインストール版ならば、VS2010という選択肢もある）

　Visual Stdio 2015　
　　URL: https://www.microsoft.com/ja-jp/dev/campaign/free-edition.aspx
　Visual Stdio 2010（オフライン版）
　　URL: http://download.microsoft.com/download/4/E/6/4E61E454-1DE7-4B70-860B-13282DE65D6B/VS2010ExpressJPN.iso
　Visual Stdio 2010 SP1（オフライン版）※要Visual Stdio 2010
　　URL: http://go.microsoft.com/fwlink/?LinkId=210710

##（３）多倍長整数ライブラリ（MPIR）のソースからのコンパイル

　a. MPIR をのソースをダウンロードしてアーカイブを展開する。
　b. Visual C++ の各バージョンの用のフォルダ (build.vc10～14) があるので、対応するフォルダ (VS 2015 なら build.vc14)の、「mpir.sln」 を、VS2015で開く。
　c. さらに、ソリューションエクスプローラーで、汎用 PC用の DLL ライブラリ生成として、dll_mpir_gc フォルダを選択して、ビルドする。
　d. ...\build.vc14\dll_mpir_gc\Win32\Debug\のフォルダに、「mpir.dll」「mpirxx.h」「mpir.h」が生成されていることを確認する。

　MPIR
　　URL: http://mpir.org/

##（４）端末制御ライブラリ（PDcurses）のソース（OSSコンソーシアムパッチ適用版）からのコンパイル

　a. PDCurses v3.4 OSSConsパッチ適用版[20150330, Source Package]を、OSSコンソーシアムからダウンロードしてアーカイブを展開する。
　b. VS2015の場合なら、VS14のインストールフォルダ以下の、\VC\bin\vcvars32.bat を、コマンドプロンプトで実行する。
　c. コマンドプロンプトで、set PDCURSES_SRCDIR=[PDCurses展開先フォルダ] を実行して、環境変数を設定する。
　d. コマンドプロンプトでPDCursesのwin32フォルダに移動して以下のコマンドを実行する。
　　   nmake -f vcwin32.mak
　e. PDCursesのwin32フォルダに「pdcurses.lib」ができていることを確認する。

　PDCurses v3.4 OSSConsパッチ適用版
　　URL: http://www.osscons.jp/osscobol/files?action=cabinet_action_main_download&block_id=414&room_id=21&cabinet_id=11&file_id=315&upload_id=596
　（参考にさせていただいたサイト）Windowsでcursesを使う
　　URL: http://qiita.com/Maxfield_Walker/items/8b30127ef91b0b27cd8c


##（５）opensourceCOBOLのソースからのコンパイル

　a. opensourceCOBOLのソースを、OSSコンソーシアムからダウンロードしてアーカイブを展開する。（例：C:\oscobol）
　b. 事前準備として、環境変数を設定する。
　　・LIB：mpir やpdcurses のライブラリを格納するフォルダ
　　　（上記で生成したものを格納しておく）
　　・INCLUDE：mpir やpdcurses のヘッダファイルを格納するフォルダ
　　　（上記で生成したものを格納しておく）
　c. opensourceCOBOL展開フォルダのwin32フォルダにある「opencobol.sln」を、VS2015で開く。

　d. vbisamライブラリ生成(ソリューションエクスプローラーからビルド)
　　（生成物は、展開フォルダ下の\win32\BIN\Win32\Debug以下にできる）
　e. libcobライブラリ生成(ソリューションエクスプローラーからビルド)
　　（vbisamライブラリを参照するので、事前に「vbisam.dll」を、上記の環境変数に合致したフォルダに格納しておく）
　f. cobcrunプログラム生成(ソリューションエクスプローラーからビルド)
　　（libcobライブラリを参照するので、事前に「libcob.dll」を、上記の環境変数に合致したフォルダに格納しておく）
　g. cobcプログラム生成(ソリューションエクスプローラーからビルド)

　h. 展開フォルダ下の\win32\BIN\Win32\Debug以下に生成物ができていることを確認する。

　オープンCOBOLソリューション部会：ダウンロード
　　URL: https://www.osscons.jp/osscobol/download/


---
#３．今回は…

　opensourceCOBOLの公式サイトの情報が、初学者にとって親切とは言い難いと感じられたため、まずはプログラミング環境の構築手順だけでも書いておこうと思ったので、ここに記載した。
　実際のCOBOLプログラムのコンパイルや、実行などについては、また別途の機会に記載したいと考えている。

　筆者も勉強したいので、お気づきの点があればコメントをいただきたい。


---
#４．蛇足

　COBOLは30年も前から『もうすぐ他の言語にとって代わられる』と言われ続けて来たが、現在でも、おそらく基幹系業務システムの分野ではJava言語やC言語と同じくらいの規模のプログラムが使われてる。特に業務ロジックの記述に限るなら、もっと比率は上かもしれない。
　一方で、インターネット上では、COBOLの情報があまりにも少なく、IT企業に入社した新人が、既存システム保守の部署に配属された時など、当の新人も現場の先輩も困るという現象が発生している。（なぜか新入社員研修でCOBOLを教える企業はほとんどない）
　開発言語は一つに絞る必要性はなく、適材適所で使うべきと考える。

---
#５．参考にさせていただいたサイト

[Windowsでcursesを使う](http://qiita.com/Maxfield_Walker/items/8b30127ef91b0b27cd8c)
[Windows 開発環境](http://sehermitage.web.fc2.com/program/win_devlp.html)


---