opensource COBOL v1.4.0Jの紹介
OSSコンソーシアム
オープンCOBOLソリューション部会

コンテンツ• 自己紹介• opensource COBOL の紹介• opensource COBOL v1.4.0J 新機能紹介• 次年度の計画• オープンCOBOLソリューション部会紹介

2

自己紹介

3

自己紹介
• 氏名： 稲垣 毅（いながき つよし）
• 所属： （株）日立ソリューションズ
研究開発部 オープンソース技術開発Ｇ• 仕事： 基幹システム向けのOSS技術の開発、評価、検証（COBOL、データベース（PostgreSQL）、・・・など）• 参加団体：OSSコンソーシアム オープンCOBOLソリューション部会 リーダ･･･他いろいろ。

• 好きなもの： C、Perl、shell• Facebookやってますhttps://www.facebook.com/tsuyoshi.inagaki.3「オープンCOBOLソリューション部会」のページも運営中！
4opensource COBOL の紹介

5

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

→プロジェクト完了後、ヨーロッパのコミュニティに移管
バージョン1.0
バージョン1.1
pre-release
6

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

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

バージョン2.0

Jul. 2012

1.1
Community Edition

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

GNU COBOL 1.1

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

GNU COBOL 2.0

opensource COBOL
v1.2J

v1.3J
v1.3.1J

日本グループによるメンテナンス版
日本の商習慣に応じた拡張が必要だったので、OSSコンソーシアムで開発・メンテナンス
opensource COBOLのライセンスはGPL2+

v1.3.2Jv1.4.0J
7※約1年ピッチでバージョンアップ

開発実績
opensource COBOL関連ツール
v1.2J(2012年7月)
First Major Releasev1.3J(2013年4月)

DB連携ツール
v1.3.1J(2013年12月)

v1.3.2J(2014年3月)

v1.4.0J(2015年3月)

DB連携ツールV28

opensource COBOL主な拡張
・日本語(SJIS、UTF-8対応）機能のサポート
・ユーザファイルハンドラのサポート
・Windowsネイティブのサポート
・ＣＵＩを拡張・比較処理等、処理系をCOBOL仕様と同じに変更
・既存COBOLソースに使われている文、関数をサポート
・既存COBOLソースでの緩い仕様をサポート
・バグフィックス…etc.

日本のビジネス適用に必要な機能を拡張opensource COBOLの仕組み
言語仕様

基本的にＣＯＢＯＬ８５準拠
NIST CCVS85テストで一部除外・制限される項目…
除外

RW - REPORT SECTION tests
CM - COMMUNICATION SECTION tests
DB - Debugging facilities tests
制限付きOB - Obsolete facilities tests
SG - Segment tests

9

opensource COBOLの仕組み
構成

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

COBOL 原文

opensource ＣＯＢＯＬコンパイラ（ｃｏｂｃコマンド）

トランスレート
ＣＯＢＯＬ→Ｃ

サブプロセス起動

C言語
中間ファイル10

ロードモジュール生成

Ｃコンパイラ（gcc）

実行時

実行プログラムまたは共有ライブラリ（.so）
opensource COBOLランタイム
CランタイムCOBOL開発
コンパイラとして普通の感覚で使えます ＣＯＢＯＬとしての機能的な制限は少ない

開発環境は付属せず、テキストエディタでの開発が基本
11導入実績（部会内）
以前から海外や教育用でも人気があったようですが…
国内でも、本格的な基幹業務システムへの適用事例が出ています

自治体向け職員総合・財務会計・予算編成システム

卸売業向け
紙卸商システム フルオープンソース化
卸売業向け
青果卸売システム OSSと商用製品のハイブリッド
部会のホームページ、パンフレットをご覧ください12

opensource COBOL v1.4.0J
新機能紹介
13

v1.3J系の課題• 導入対象としてLinuxサーバを想定– インフラを管理する組織がない中小企業では敷居が高い• シンクライアントに相当する機能がない– 個別ユーザのクライアント画面を表示する必要がある– エミュレータ等がないため、Linux上で同等のシステムを構築する必要がある• 画面機能が不足– 既存のCOBOL資産は、罫線やマルチバイト文字が普通に使われているが、それらCUI機能が不足していた
14

v1.3J系の課題
１．Windows対応• 導入対象としてLinuxサーバを想定– インフラを管理する組織がない中小企業では敷居が高い• シンクライアントに相当する機能がない– 個別ユーザのクライアント画面を表示する必要がある– エミュレータ等がないため、Linux上で同等のシステムを構築する必要がある• 画面機能が不足– 既存のCOBOL資産は、罫線やマルチバイト文字が普通に使われているが、それらCUI機能が不足していた

２．CUI機能の強化
15

Windows対応• WindowsのVisual Studio（CLコンパイラ）に対応– Windowsネイティブに対応し、開発環境、実行環境の構築が可能に（ソリューションファイルを準備）– VSでopensource COBOLコンパイラ自身の開発が可能に

16

Windows対応• バッチファイルから実行可能

call cobenv32.cmd
cobcrun TOC010N

17

Windows対応• Windowsサーバの機能と組み合わせが可能– RemoteApp、ActiveDirectoryと組み合わせることで、シンクライアント形式でCOBOLアプリケーションを利用可能

18

Windows対応• 対応結果– Windowsネイティブに対応したので、導入や利用が容易になった– Windows特有のアプリとの連携が可能になった
開発時

COBOL 原文

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

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

C言語
中間ファイルＣコンパイラ（gcc, cl）

実行時

実行プログラムまたは共有ライブラリ（.so）
opensource COBOLランタイムCランタイム※前提環境としてVisual Studioが必要
19

CUI機能の強化• これまでの課題– 罫線• 下線はあるが、上、左右の罫線はSCREEN SECTIONで対応していなかった• 文字罫線「｜」「ー」を使う必要があった– 日本語（2バイト）文字入力• 1バイト単位での画面表示となるため、文字化けが発生していた• カーソルの移動が1バイト単位のため、2回移動しないと次の文字に移動できなかった・・・etc.
20

CUI機能の強化• 罫線（課題）– 文字罫線を手書き– 移行性が悪い

21

03 KEISEN.
05 LINE 05 COL 61
VALUE "┌───────┐".
05 LINE 06 COL 61
VALUE "││".
05 LINE 07 COL 61
VALUE "││".
05 LINE 08 COL 61
VALUE "││".
05 LINE 09 COL 61
VALUE "││".
05 LINE 10 COL 61
VALUE "││".
05 LINE 11 COL 61
VALUE "└───────┘".

CUI機能の強化• 罫線（課題）– 縦線に隙間ができてしまう

22

CUI機能の強化• 罫線機能に対応– 商用COBOLにあった動的な罫線機能を追加• プログラム中で罫線の追加、削除が可能
CALL

23

“CBL_OC_KEISEN” USING KEI-CMD,（罫線の種類）
KEI-LINE, （開始行）
KEI-COL, （開始桁）
KEI-LNG1, （長さ１）KEI-LNG2, （長さ２）KEI-COLOR, （罫線色※）
KEI-PRN. （表示オプション※）※未対応CUI機能の強化• 罫線機能に対応
MOVE 5 TO KEI-CMD.
MOVE 20 TO KEI-LINE.
MOVE 5 TO KEI-COL.
MOVE 10 TO KEI-LNG1.
MOVE 2 TO KEI-LNG2.
MOVE 0 TO KEI-COLOR.
MOVE 0 TO KEI-PRN.

24

CUI機能の強化• 日本語入力（課題）– v1.3JをWindowsで利用時、入力時に文字化けが発生• WindowsAPIを正しく扱えていなかった

25

CUI機能の強化• 日本語入力に対応– opensource COBOLとCUIライブラリ（pdcurses）を修正– Windowsの日本語入力も問題なく実行可能に

26

CUI機能の強化• 対応結果– 罫線に対応– 日本語（2バイト）文字入力に対応• CUI機能については、まだ課題もありますが、今後も部会で改修していく予定

27

修正項目
・REPLACE文がCOPY REPLACING以降で無効になる問題を修正
・IFのTHEN節中に改行せずにSTOPがある場合、コンパイルエラーになる問題を修正
・TO VALUEを用いた各国語編集項目のINITIALIZEでエラーが発生する・COLLATING SEQUENCEをEBCDICにしたときの日本語比較への影響を抑止
・日本語利用者語の処理にかかるメモリリークを修正
・COPY REPLACING LEADING/TRAILINGの不具合修正
・cob_check_numericエラーメッセージの日本語項目名化けを修正
・コンパイル時エラーメッセージの日本語項目名化けを修正
・COPY PREFIXING/SUFFIXINGがFILLERに効いてしまう不具合修正
・SOURCE FORMAT FREE利用時のコンパイルエラー修正
・COB_DATE設定時、時刻設定を0時0分から指定時刻に修正
・条件式における項目添字の境界チェックバグを修正
・シンボル曖昧参照エラー表示の節、段落名誤り修正
・MOVE文の部分参照の境界チェックバグを修正
・SIGN SEPARATEのゾーン十進数をVALUE ZEROで初期化した場合、符号(+/-)が付かずにすべてゼロで初期化されるバグを修正
・テストツールの追加、修正
28

修正項目
・REPLACE文がCOPY REPLACING以降で無効になる問題を修正
・IFのTHEN節中に改行せずにSTOPがある場合、コンパイルエラーになる問題を修正
・TO VALUEを用いた各国語編集項目のINITIALIZEでエラーが発生する
バグフィックス
・COLLATING SEQUENCEをEBCDICにしたときの日本語比較への影響を抑止
・日本語利用者語の処理にかかるメモリリークを修正
・COPY REPLACING LEADING/TRAILINGの不具合修正
・cob_check_numericエラーメッセージの日本語項目名化けを修正
・コンパイル時エラーメッセージの日本語項目名化けを修正
実装者依存の処理への対応
・COPY PREFIXING/SUFFIXINGがFILLERに効いてしまう不具合修正
・SOURCE FORMAT FREE利用時のコンパイルエラー修正
・COB_DATE設定時、時刻設定を0時0分から指定時刻に修正
・条件式における項目添字の境界チェックバグを修正
・シンボル曖昧参照エラー表示の節、段落名誤り修正
その他
・MOVE文の部分参照の境界チェックバグを修正（vbisamのソースを追加、テストツールの追加など）
・SIGN SEPARATEのゾーン十進数をVALUE
ZEROで初期化した場合、符号(+/-)が付かずにすべてゼロで初期化されるバグを修正
・テストツールの追加、修正29

デモ
デモ１（利用者）：●Windows対応＋CUI拡張のデモ

デモ２（開発者）：
COBOLコンパイラの拡張のデモ
COB_DATE設定時、時刻設定を0時0分から指定時刻に修正
COB_DATE設定時の時刻は、実行時のシステム時刻を返すことが期待されているため、その拡張方法をデモ

30

次年度（2015/07～）の計画

31

次年度の計画• 2016年3月までに新バージョンをリリース予定– 内容は計画中
 ファイル編成の標準ライブラリをvbisamに変更
 ユーザビリティの強化
 統合開発環境への対応（eclipseを想定）
 要望があれば商用互換機能もご要望をお聞かせください。
ぜひ、アンケートにご記入をお願いします。

32

オープンCOBOLソリューション部会
紹介
33

目的
• 基幹システムでのOSS普及を背景として、プロプライエタリな環境が一般的なCOBOLの開発においてもオープンソースのメリットを活かすため、OSS
COBOLを技術・ビジネスの両面からサポートできるように整備していき、基幹システムにおけるOSS化の普及・促進に貢献する。

34

対象• OSS COBOLをはじめとするOSSの基幹システムを提供している企業、技術者• OSS COBOLをはじめとするOSSの基幹システムを利用しているユーザ• OSS COBOLをはじめとするOSSの基幹システム採用に興味のある企業、技術者、ユーザ

35

活動内容
• 国内でも実績のあるOSS COBOLのOpenCOBOL 1.1
pre-releaseをベースに、処理系自身の既知のバグや未実装機能および有用と思われる拡張機能などの情報を共有する。そのうえで、実システムへの適用を促進する
ための修正・拡張をリリースする• OSS COBOLの認知度向上と、ビジネス適用のために必要なドキュメントを整備する• オンライン・Face-to-Faceミーティングを通して、参加企業間でのOSS COBOLを中心としたソリューションビジネスの検討、又協業を検討する• セミナーの開催(部会セミナー、OSCなど)
36

メリット＆成果物• 修正・拡張版のOpenCOBOL(名称: opensource COBOL)、パッチの開発• 基幹システムへのOSS適用についての情報の入手• 基幹システムへのOSS適用についての協業の検討• セミナー実施、報告• 詳細は http://www.osscons.jp/osscobol/ にて

37

参加企業
••••••••••38株式会社アクティ鳥取
株式会社アックス
株式会社ＮＴＴデータ
株式会社ＣＩＪ
サン情報サービス株式会社
株式会社ＪＰ情報センター
東京システムハウス株式会社
株式会社ビイガコーポレーション
株式会社日立ソリューションズ
有限会社ランカードコム（五十音順）

一緒に開発しませんか？
• opensource COBOLの開発をgithubで行っています。
– https://github.com/opensourcecobol/

39