岡本 健二(株式会社システムズ マイグレーション事業本部)
1.はじめに
近年、アプリケーションの稼動環境はメインフレームからオープン環境へのシフトが行われています。特に最近はクラウド環境を取り入れ、オープン化が加速している感があります。
従来、メインフレームでのアプリケーション開発はCOBOLが主力言語となっていました。COBOLでのアプリケーション開発がオープン環境ではどのように変っていくのでしょうか?
以降で、COBOLでプログラミングする上での、メインフレームとオープン環境での相違点を記述します。
2.概要
COBOL言語は、当然、メインフレームもオープン環境も文法上の相違点はありません。しかしながら、メインフレームとオープン環境の典型的な違いとして、
① | 例えばオペレータの存在のように運用が異なる。 |
② | 文字コードについては、EBCDIC+メーカー独自の漢字コードから、ASCII+S-JIS(またはEUC、UNICODE)のようにコードが異なる。 |
③ | メーカー独自仕様の構造型DBも存在するが、標準的なRDBの利用環境となっている。 |
④ | オンライン画面がCUIからWebなどのGUI環境となる。 |
⑤ | プログラムの実行制御は複雑な機能を持ったJCLにより行われていました。それがOSに依存しないShellによる制御に変ったため、一部の機能がプログラム側の分担や、制御機能を諦めるか、他の運用監視ツールに任せる事になる。 |
と環境として異なる点があります。それに伴いプログラム開発もその対応として異なる点があることになります。以降、プログラム開発で異なる点の詳細を記述します。
3.メインフレーム/オープン環境のCOBOLプログラミングの相違点
(1)運用上の相違
- メインフレームではオペレータが存在しているのが前提となっているため、オペレータコンソールとのアクセス(DISPLAY UPON CONSOLE/ACCEPT FROM CONSOLE)の命令が意味を持ちました。しかしオープン環境では無意味になり、代替の手段が必要となります。
- 更に帳票に関しても運用方式が大きく異なり、電子帳票化が進められています。 その結果、WRITE命令等の帳票関連命令の置き換えが発生します。
(2)文字コードの相違
- メインフレームでの英数字は主にEBCDIC文字表現でした。
一方、多くのオープン環境はASCII文字表現となります。この異なる2つの文字表現では、英字:数字の文字大小順が逆転する事となり、その結果、英数字が混在している場合の並び替え順が異なる事となります。これにより英字と数字を大小により判別しているロジックの書き換えが発生したり、出力帳票の場合は出力される順序が異なる事になります。 - 漢字については、メインフレームではメーカー独自の漢字コードを使用していました。オープン環境ではS-JIS(又はEUC、UNICODE)となるため、漢字コードの置き換えが必要となります。特に、外字についてはメーカーの標準文字セットの中に外字が存在している場合、オープン環境ではその文字を外字として取り扱う必要があるため、注意が必要です。
- 更にメインフレームでは漢字文字の始まりと終わりに、シフトアウト・シフトインの文字コードを挿入する場合があります。オープン環境ではこの文字が不要となる場合があるため、この挿入ロジック、及びエリアの削除が必要となります。
(3)DBアクセスの相違
メインフレームのDB構造には構造型と言われるネットワーク型、階層型(木構造)が存在し、アクセス命令はDL/Iで代表されるメーカー独自仕様となっています。オープン環境ではこれら構造型は存在せず、リレーショナル型DBが主力でアクセス命令は標準SQLとなっています。このため、DB構造に関しては再設計が必要となり、プログラムとしてはSQL命令への変更が必要となります。
(4)オンライン画面の相違
メインフレームでは、オンライン画面についてはCUI(キャラクタインターフェース)が中心でしたが、オープン環境ではWeb等のGUIが普通であり、そのための画面定義の移行が必要となります。
画面のアクセスについてメインフレームではメーカー独自仕様でしたが、オープン環境でも色々なOLTP(オンライン・トランザクション処理)が存在し、画面定義と連携して関係する命令の移行が必要となります。
(5)プログラム制御(JCL)の相違
- メインフレームでは複雑な機能を持ったJCLによりプログラムの実行制御を行っていました。一方、オープン環境では、JCLに較べ単純な機能のShellと、それを補完する運用管理システムにより制御を行っています。そのため不足する一部の機能はプログラムに取り込んで処理を行うか、運用管理システムに任せるかの選択が必要となります。
- プログラム化の例として、ファイルの排他制御はメインフレームではJCLで制御を行います。オープン環境で必要な場合、COBOLのSELECT文に記述する事によりファイル排他制御を行います。
4.むすび
このように環境が異なることから、環境に影響されるCOBOLのコーディングは異なる事となります。しかしながら一番肝心なビジネスロジックについては、メインフレームもオープン環境も異なる点は存在せず、従来の開発スキルが踏襲できる事になります。
COBOLは今迄も色々な言語が存在する中で、他言語と共存しながら50年の歳月を主力言語として利用されて来ました。主力言語としての利用を実現するために着実に機能向上を図って成長して来たことになります。これからも世の中のニーズに合わせて成長し、オープン環境に於いても標準言語として利用されていくと信じております。