ekCraft's blogs

SE転向を目指すサンデープログラマーの備忘録

ローカル開発環境構築(COBOL編)

仕事の関係でCOBOLを学習する必要が出てきたため、せっかくなのでVagrantでopensource COBOLを動かせるローカル開発環境を構築してみました。 参考サイト様のほぼそのままですが(多謝)、とりあえずできたので備忘録も兼ねて記載しておきます。

■環境

■必要なソフトウェアのインストール

  1. Vagrant
    www.vagrantup.com

  2. VirtualBox
    Oracle VM VirtualBox - Downloads | Oracle Technology Network | Oracle

■ローカル開発環境(VM)の構築

今後仮想環境を複数作成する可能性を考慮して、仮想環境を括る”Vagrant”をCドライブ直下に作成し、その下に今回作成する仮想環境のディレクトリを作成

> mkdir C:\Vagrant\cbl_centos68

cdコマンドで移動

> cd C:\Vagrant\cbl_centos68

Vagrantfile の作成

C:\Vagrant\cbl_centos68>vagrant init bento/centos-6.8
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Vagrantfileの編集
作成されたVagrantfileをエディタで開き、35行目、以下の部分のコメントアウトを外す

config.vm.network "private_network", ip: "192.168.33.10"

VMの起動

C:\Vagrant\cbl_centos68>vagrant up

VMSSH接続

C:\Vagrant\cbl_centos68>vagrant ssh

CentOSのアップデート

[vagrant@localhost ~]$ sudo yum update -y

opensource COBOLをインストール

opensource-cobol-1.4.0J-1.el6.x86_64.rpmを以下サイトからダウンロードして、先程作成したC:\Vagrant\cbl_centos68に格納しておく

www.osscons.jp

先程のrpmファイルがVagrantディレクトリに格納されているのを確認してlocalinstallを実行

[vagrant@localhost ~]$ cd /vagrant

[vagrant@localhost vagrant]$ ls
hello.cbl opensource-cobol-1.4.0J-1.el6.x86_64.rpm Vagrantfile
[vagrant@localhost vagrant]$ sudo yum localinstall opensource-cobol-1.4.0J-1.el6.x86_64.rpm

途中必要となるパッケージのインストールを求められるので承認

Install 6 Package(s)

Total size: 21 M
Total download size: 20 M
Installed size: 35 M
Is this ok [y/N]: y

以下メッセージが表示されれば成功

Installed:
opensource-cobol.x86_64 0:1.4.0J-1

Dependency Installed:
cpp.x86_64 0:4.4.7-23.el6 gcc.x86_64 0:4.4.7-23.el6 glibc-devel.x86_64 0:2.12-1.212.el6
glibc-headers.x86_64 0:2.12-1.212.el6 kernel-headers.x86_64 0:2.6.32-754.2.1.el6

Complete!

バージョン確認

[vagrant@localhost vagrant]$ cobc -version
opensource COBOL 1.4J
OSS Consortium's patched version of OpenCOBOL1.1(Feb.06 2009)
----
cobc (OpenCOBOL) 1.1.0
Copyright (C) 2001-2009 Keisuke Nishida / Roger While
Built May 07 2015 17:18:48
Packaged Feb 06 2009 10:30:55 CET

■必要な各ライブラリのインストール

gmp-develのインストール

[vagrant@localhost vagrant]$ sudo yum install gmp-devel

途中必要となるパッケージのインストールを求められるので承認

Install 1 Package(s)

Total download size: 171 k
Installed size: 337 k
Is this ok [y/N]: y

以下メッセージが表示されれば成功

Installed:
gmp-devel.x86_64 0:4.3.1-13.el6

Complete!

ncurses-develのインストール

[vagrant@localhost vagrant]$ sudo yum install ncurses-devel

途中必要となるパッケージのインストールを求められるので承認

Install 1 Package(s)

Total download size: 641 k
Installed size: 1.7 M
Is this ok [y/N]: y

以下メッセージが表示されれば成功

Installed:
ncurses-devel.x86_64 0:5.7-4.20090207.el6

Complete!

db4-develのインストール

[vagrant@localhost vagrant]$ sudo yum install db4-devel

途中必要となるパッケージのインストールを求められるので承認

Install 2 Package(s)

Total download size: 7.1 M
Installed size: 26 M
Is this ok [y/N]: y

以下メッセージが表示されれば成功

Installed:
db4-devel.x86_64 0:4.7.25-22.el6

Dependency Installed:
db4-cxx.x86_64 0:4.7.25-22.el6

Complete!

■hello.cblを作成してコンパイル~実行

適当にハローワールドを出力するCOBOLプログラム(hello.cbl)を作成して先程のVagrantフォルダに格納しておく

hello.cblコンパイル

[vagrant@localhost vagrant]$ cobc -x -std=cobol85 hello.cbl

正しくコンパイルされていればhelloファイルが出来上がる。

[vagrant@localhost vagrant]$ ls
hello hello.cbl opensource-cobol-1.4.0J-1.el6.x86_64.rpm Vagrantfile

ただしこのままでは実行できない。 /etc/ld.so.conf.dの中にlibcob.so.1の場所を記載したconfファイルを作成しておく必要がある。

libcob.so.1の場所を確認

[vagrant@localhost vagrant]$ sudo find / -name libcob.so.1
/usr/local/lib/libcob.so.1

viコマンドで先程確認した場所を記載したconfファイルを作成

[vagrant@localhost vagrant]$ sudo vi /etc/ld.so.conf.d/usr-local-lib.conf

catコマンドで作成したconfファイルの内容を確認

[vagrant@localhost vagrant]$ cat /etc/ld.so.conf.d/usr-local-lib.conf
/usr/local/lib

ldconfigコマンドで設定を反映させる

[vagrant@localhost vagrant]$ sudo ldconfig

lddコマンドで確認するとlibcob.so.1のパスが通っているのが確認できる

[vagrant@localhost vagrant]$ ldd ./hello
linux-vdso.so.1 => (0x00007ffccf0cf000)
libcob.so.1 => /usr/local/lib/libcob.so.1 (0x00007f5d531a1000)
libm.so.6 => /lib64/libm.so.6 (0x00007f5d52f1d000)
libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x00007f5d52cc1000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x00007f5d52a9f000)
libdb-4.7.so => /lib64/libdb-4.7.so (0x00007f5d5272a000)
libc.so.6 => /lib64/libc.so.6 (0x00007f5d52395000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f5d52191000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f5d51f70000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5d51d52000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5d533de000)

helloファイルを実行

[vagrant@localhost vagrant]$ ./hello
HELLO, WORLD!

■参考サイト

sutepulu.com