ITモダナイゼーションとOSSデータベース
2019年10月10日(木)オープンCOBOLソリューション部会
井坂 徳恭

自己紹介
• 氏名： 井坂 徳恭（いさか のりゆき）• 所属： 東京システムハウス株式会社
マイグレーションソリューション部• 参加団体：OSSコンソーシアム オープンCOBOLソリューション部会
opensource COBOLのコミッター• 仕事： 基幹システム向けのOSS検証、開発等• 言語： COBOL、C、C++、Java、.NET、PHP、…
2

アジェンダ
１．基幹システムへのOpen Source導入の動向

２．opensource COBOL＋OCESQLのご紹介
３．新しい取り組み

４．まとめ
５．部会紹介3

１．基幹システムへのOpen Source導入の動向

4モダナイゼーション

5モダナイゼーション• 稼働状況
1400
1200

大型(2.5億円以上)

2005年
949台

中型(4千万～2.5億円未満)
小型(4千万円未満)

1000
800

2014年
278台

600
400
200
06

モダナイゼーション• モダナイゼーションが必要
1400

1200

残っているレガシーシステム

1000
800
600

400

オープン
レガシーシステム

2000
2002
72003

2012

2013

2014

OSSへの期待• 移行先の選択肢が増えている
オンプレミス

クラウド

8コンテナ

OSSへの期待
プロプライエタリ
ソフトウェアプラットフォーム

クラウド

ライセンス料
機能制限

オープンソース
ソフトウェアコンテナ

OSSのほうが親和性が高い

拡張性
スモールスタート9最新の動向

OSS

オープンレガシー
クラウド

10コンテナ

２．opensource COBOL＋OCESQLのご紹介

11

COBOLとは• 来年60周年（還暦）• 自然言語に近い構文をもつプログラム言語– 事務処理に特化した高級言語– 文章に近い構造を採用（章、節、句）– 特に意識せず桁数の多い演算も可能

12

opensource COBOLとはＯｐｅｎＣＯＢＯＬ
発祥はＯＲＣＡプロジェクトの日医標準レセプトソフトのために開発された

オープンソースＣＯＢＯＬコンパイラ
開発：日本医師会総合政策研究機構 ORCAプロジェクト
原作者：西田圭介氏「日医標準レセプトソフト」は2002年から本運用開始、2015年5月現在１万3千以上※)の医療機関で実運用されています。

→その後、ヨーロッパのコミュニティに移管
バージョン1.0
バージョン1.1
pre-release

ＯｐｅｎＣＯＢＯＬの公開配布版（Feb. 2009）13

opensource COBOLとはバージョン1.1
pre-release

バージョン2.0

1.1
Community Edition

コミュニティ有志によるバグfix等反映版

GNU COBOL 1.1

GNUに登録された最新配布版（Jan. 2014）

GNU COBOL 3.2

opensource COBOL
v1.2J

日本グループによるメンテナンス版
日本の商習慣に応じた拡張が必要だったので、OSSコンソーシアムで開発・メンテナンス（1.1 pre-release を Jul. 2012 に fork）
opensource COBOLのライセンスはGPL2+v1.5.2J

14

opensource COBOLの仕組み
コンパイラ＋ランタイム構成

Ｃトランスレータ方式のため、前提製品としてＣコンパイラを必要とします
・Linuxの場合は配布に含まれるgccでＯＫ・Windowsの場合はLinuxエミュレータ（MinGW, Cygwin等）またはVisual
StudioのCLコンパイラ・llvm-clang等も利用可能
開発時

COBOL 原文

opensource ＣＯＢＯＬコンパイラ（ｃｏｂｃコマンド）
トランスレート
ＣＯＢＯＬ→Ｃ

ロードモジュール生成サブプロセス起動

Ｃコンパイラ（gcc、cl.exe）

C言語
中間ファイル

実行時

実行プログラムまたは共有ライブラリ（.so、.dll）
opensource COBOLランタイム
Cランタイム15

COBOLのDBアクセス• 埋め込みSQL– ソースコード中にSQLを記載
EXEC SQL
SELECT NO, NAME, SALARY
FROM EMPTBL
INTO:EMP-NO,:EMP-NAME,:EMP-SALARY
END-EXEC.

Database

16

COBOLのDBアクセス• プリコンパイラ– オープン環境でのDB接続
EXEC SQL・・・
END-EXEC.

CALL “SELECT”
・・・

Database

ライブラリ呼び出しCOBOL命令に書き換え

しかしCOBOL to PostgreSQLが無かった
C to PostgreSQLはあるけど17Open COBOL ESQL
• opnesource COBOL向けの埋め込みSQL実行基盤
Windows/Linux サーバー
EXEC SQL
FETCH C1 INTO
:EMP-NO,:EMP-NAME,:EMP-SALARY
END-EXEC.

CALL "OCESQLStartSQL“.
CALL "OCESQLSetResultParams"
USING
BY VALUE 3
BY VALUE 4
BY VALUE 0
BY REFERENCE EMP-NO.

埋め込みSQLCOBOLプログラム
ocesql(プリコンパイラ)

libocesql(実行時ライブラリ)
Open Cobol ESQL

プリコンパイル後
COBOLプログラム

プリコンパイル後
COBOLプログラム

opensource COBOL
コンパイラ

opensource COBOL
ランタイム

18

libpq

Open COBOL ESQL
• 階層型/ネットワーク型DBへの展望
Windows/Linux サーバー
階層型アクセス
COBOLプログラム

GETocesql(プリコンパイラ)

libocesql(実行時ライブラリ)
Open Cobol ESQL

プリコンパイル後
COBOLプログラム

プリコンパイル後
COBOLプログラム

opensource COBOL
コンパイラ

opensource COBOL
ランタイム

19

ライブラリ

事例（流通業向けパッケージサービス）• ユーザー毎にサーバーを導入

20

事例（流通業向けパッケージサービス）• OSSでクラウドサービスにVPN

JSP

COBOL / JCL

ZabbixJava

opensouceCOBOL

TomcatPostgreSQL
Hinemos

JasperReport
CentOS
仮想化ホスト21

３．新しい取り組み22コンテナ技術の普及

23

開発環境のコンテナ化• opensource COBOLも公開済み– https://hub.docker.com/r/opensourcecobol/opensource-cobol– Dockerhubで`opensourcecobol`で検索！

24

開発環境のコンテナ化• コンテナ技術のメリット– どこでも、同じ環境が、すぐできる

25

Docker Composeで環境構築• 目標

OCESQL

DBサーバー

APサーバー26

Docker Composeで環境構築
version: '2'services:
oscobol:
image: opensourcecobol/opensource-cobol
tty: trueenvironment:
COBCPY: /oscobol/cpy
volumes:- ./src:/oscobol/src- ./cpy:/oscobol/cpy
db:

image: postgres:9.6
networks:
default:
27

Docker Composeで環境構築# git clone https://github.com/opensourcecobol/opensource-cobol-devel.git# cd opensource-cobol-devel# docker-compose up -d# docker-compose exec db createdb -U postgres testdb#docker-compose exec oscobol /bin/bash$ ocesql src/INSERTTBL.cbl INSERTTBL.pre$ cobc -locesql INSERTTBL.pre$ cobcrun INSERTTBL

28

Docker Composeで環境構築[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 NAMESALARY---- -------------------- -----0001 HOKKAI TARO
400
0002 AOMORI JIRO
350
0003 AKITA SABURO
30029

４．まとめ30まとめ・基幹系のモダナイゼーションでもOSSが期待されている

・opensource COBOL + OCESQLが候補に・COBOLとDBの連携は重要

・フルOSSの事例もでてきている・コンテナ等の最新技術でより便利に

31

５．部会紹介32

部会のご紹介• オープンCOBOLソリューション部会• 目的– オープンソースのメリットがあるCOBOLを推進する• 対象– OSS COBOLをはじめとするOSSの基幹システムに携わる企業• 活動内容– OSS COBOLのメンテナンス、開発およびセミナー等

33

一緒に開発しませんか？
• Opensource COBOLの開発をgithubで行っています– https://github.com/opensourcecobol/opensource-cobol• issue/commitお待ちしております34

本資料に記載の会社名、製品名は、それぞれの会社の商号、商標もしくは登録商標です。
35