Skip to content
n-isaka edited this page Jun 17, 2019 · 3 revisions

Dockerイメージの利用

概要

opensource COBOLをDockerコンテナとして実行できることを、別ページにて記載しました。

ここでは、その応用として、DBと連携した開発環境をDocker Composeを利用して作成してみます。

Docker Compose環境の構築

インストール方法などは以下を参照してください。

Linux環境では、Docker環境の構築後、以下のようにコマンドでインストールします。 ※バージョン箇所は都度読み替えてください。

curl -L https://github.com/docker/compose/releases/download/1.3.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

開発環境ファイルの入手

以下リポジトリで、Docker Compose用のファイルとサンプルプログラムを配布しています。

まずはリポジトリをチェックアウトしてください。

git clone https://github.com/opensourcecobol/opensource-cobol-devel.git
cd opensource-cobol-devel/

Docker Compose用の定義ファイル(docker-compose.yml)では、opensource COBOL実行用コンテナoscobolと、Postgresql実行用コンテナdbを定義しています。 この設定ファイルを用いて、各コンテナを立ち上げます。

docker-compose up -d

コンテナが立ち上がったら、まずはDB側にデータベースを作成するため、以下コマンドを実行します。

docker-compose exec db createdb -U postgres testdb

次に、COBOL実行用のコンテナに入り、コンパイルと実行を行います。 今回は定義ファイル内で、srcおよびcpyフォルダについて、あらかじめコンテナから参照できるようにしています。

docker-compose exec oscobol /bin/bash

コンソールから、以下コマンドでプリコンパイル、コンパイルを行います。

ocesql src/INSERTTBL.cbl INSERTTBL.pre
cobc -locesql INSERTTBL.pre
ocesql src/FETCHTBL.cbl FETCHTBL.pre
cobc -locesql FETCHTBL.pre

コンパイルの完了後、各プログラムを実行すると、DBアクセスが確認できます。

  • INSETTBLは、DB上にテーブルempを作成し、データのINSERTを行うサンプルです。
  • FETCHTBLは、テーブルempからカーソルのフェッチにより、データを参照するサンプルです。
[root@e8ccda101772 oscobol]# cobcrun INSERTTBL
*** INSERTTBL STARTED ***
NOTICE:  table "emp" does not exist, skipping
*** INSERTTBL FINISHED ***
[root@e8ccda101772 oscobol]# cobcrun FETCHTBL
*** FETCHTBL STARTED ***
TOTAL RECORD: 0012
---- -------------------- ------
NO   NAME                 SALARY
---- -------------------- ------
0001 HOKKAI TARO             400
0002 AOMORI JIRO             350
0003 AKITA SABURO            300
0004 IWATE SHIRO            -250
0005 MIYAGI GORO            -200
0006 FUKUSHIMA RIKURO        150
0007 TOCHIGI SHICHIRO       -100
0008 IBARAKI HACHIRO          50
0009 GUMMA KURO             -200
0010 SAITAMA JURO            350
0046 KAGOSHIMA ROKURO       -320
0047 OKINAWA SHICHIRO        480
*** FETCHTBL FINISHED ***

サンプルと同様に、DBアクセスするプログラムを作成し、srcとcpyフォルダで参照することで、DBアクセスのプログラムを作成することができます。

Clone this wiki locally