COBOLからODBC経由でデータベースに接続する
COBOLからODBC経由でデータベースに接続する
レガシーCOBOLアプリケーションでは、データベース接続を言語レベルでサポートしていません。したがって、データベース接続には通常Oracle Pro*COBOLといったプリプロセッサでCOBOLソースにSQLを組み込み、あらかじめCOBOLコードに変換後、COBOLコンパイルを行っていました。
プリプロセッサはデータベース・ベンダより提供されるため、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資産は、しかるべきタイミングでオープン系言語で置き換えるべきかと思いますが、現実的に一度にやれるものでもありませんので、このような技術を用いながら来るべきデジタル・トランスフォーメーションに備えるというのも良いのかもしれません。
Author And Source
この問題について(COBOLからODBC経由でデータベースに接続する), 我々は、より多くの情報をここで見つけました https://qiita.com/chamanosuke/items/23158afbda0dfd651669著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .