1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

COBOLからODBC経由でデータベースに接続する

Last updated at Posted at 2020-10-15

COBOLからODBC経由でデータベースに接続する

レガシーCOBOLアプリケーションでは、データベース接続を言語レベルでサポートしていません。したがって、データベース接続には通常Oracle Pro*COBOLといったプリプロセッサでCOBOLソースにSQLを組み込み、あらかじめCOBOLコードに変換後、COBOLコンパイルを行っていました。

image.png

プリプロセッサはデータベース・ベンダより提供されるため、COBOL処理系だけでなくデータベースもベンダ・ロックインされることになります。

COBOLアプリケーションのODBC対応

オープン系のCOBOLコンパイラにはODBCインターフェースをサポートしている製品がほとんどです。

「ODBCインターフェースをサポート」=「先の組込SQLに関する機能を有する」

と言えます。

MicorFocus COBOLは、OpenESQLプリプロセッサを備えた統合コンパイラですし、静的SQLをサポートするCOBOL処理系も存在しています。これらは、Pro*COBOLと完全互換があるわけではないのですが、Oracleのバージョン互換性制限やデータベースをロックインされないというメリットがあります。

各COBOLコンパイラのプリプロセッサ機能については、COBOLコンパイラメーカに一度お問い合わせくださいませ。

DataDirect Connectを利用してみる

ODBCインターフェース利用時にDataDirectを使うと、前述のODBCドライバ・マネージャとODBCドライバを同一ドライバで統一することができます。
Windowsプラットフォームの場合は、ODBCドライバ・マネージャはWindowsに付属のものをODBCドライバはデータベース・ベンダの純正ドライバを使うことでさほど違和感がないのですが、Linuxをはじめとするunix環境ではunixODBCをODBCドライバ・マネージャに利用しなければなりません。
DataDirectはHP-UX、Solaris、Linux、AIXなど各種UNIXプラットフォームを幅広くサポートしていますので、上記のようにunixODBCを利用することがなくすべてサポートのある構成を取れます。

Pro*COBOL資産をODBC仕様に書き換える

ここが一番の難関ではありますが。。。

いきなりJavaで書き換えましょう!というよりは、幾分ハードルは下がるかと思います。また、データベースを他のベンダのもの、たとえばPostgreSQLに置き換えるといった場合、保守費用が大幅に下がる可能性があります。

それほどの大手術ではありません(といいつつ、保証はできませんので、COBOLベンダのマニュアルを確認する必要あり)ので、一度検討されてはいかがでしょうか。

OpenESQLでのSQL埋め込み例

      *    Connect to the specified database
	   EXEC SQL
               CONNECT TO :svr USER :usr WITH NO PROMPT
	   END-EXEC
	   if sqlcode not = 0
		display "Error: cannot connect "
		display sqlcode
		display sqlerrmc
		stop run
	   end-if

まとめ

COBOL資産は、しかるべきタイミングでオープン系言語で置き換えるべきかと思いますが、現実的に一度にやれるものでもありませんので、このような技術を用いながら来るべきデジタル・トランスフォーメーションに備えるというのも良いのかもしれません。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?