-
Notifications
You must be signed in to change notification settings - Fork 29
Use_devel
opensource COBOLをDockerコンテナとして実行できることを、別ページにて記載しました。
ここでは、その応用として、DBと連携した開発環境を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 Imageの変更に伴い、docker-compose.ymlにenvironment以下を追記する必要があります。パスワードの設定が推奨されています(https://github.com/docker-library/postgres/issues/681)。
db:
image: postgres:9.6
# 以下を追記する
environment:
POSTGRES_HOST_AUTH_METHOD: 'trust'
# POSTGRES_PASSWORD: 'postgres'
修正した設定ファイルを用いて、各コンテナを立ち上げます。
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アクセスのプログラムを作成することができます。