JVM COBOL に移行する際の考慮事項

既存のアプリケーションで JVM COBOL を使用する前に、検討が必要な事項がいくつかあります。現在のアプリケーションの構造およびビルド方法を分析し、どのような変更が必要かを判断する必要があります。

JVM COBOL へのアプリケーションの移行についてサポートが必要な場合は、Micro Focus Professional Services にお問い合わせください。

検討が必要な項目の一部を次に示します。

元のアプリケーションの複雑さ

JVM COBOL に簡単に移行できるかどうかについては、アプリケーションの複雑さ (プログラムの数やプログラム間の相互接続など) とネイティブのコンパイル方法が大きく影響します。次のような要因があります。

  • アプリケーション内のプログラムの数。たとえば、アプリケーションに非常に多く (数万など) の COBOL プログラムが含まれており、それらがすべて .int/.gnt コードとしてコンパイルされている場合があります。このアプリケーションを JVM COBOL に移行する場合、プログラムを Java .class ファイルか .exe または .dll としてコンパイルしてから、アプリケーションを JVM COBOL コード用にパッケージ化する最適な方法を決める必要があります。
  • メインフレームやネイティブ COBOL では、多数の絡み合ったプログラムも正常にコンパイルできます。それらを JVM COBOL として正常にコンパイルして実行するには、書き換えが必要になる場合があります。これは、生成される JVM COBOL コードの基になるモデルはオブジェクト指向であり、クラスおよびメソッドが生成されるためです。JVM では、メソッドのサイズに制限があり、その制限に達する可能性があります。

元のネイティブ アプリケーションのビルド方法

元のネイティブ COBOL アプリケーションにおいて、コマンド ラインで実行されるバッチ スクリプトをコンパイルに使用している場合があります。そのようなアプリケーションのコンパイル方法を変更する場合、コードをコンパイルするために新しい改善された手順の適用が必要になることがあります。

この変更は、特に Eclipse において、バッチ スクリプトで特定のディレクトリ構造に実行可能ファイルを配置する場合にも必要になる可能性があります。

プログラミングの新しい技術の知識およびスキル

JVM COBOL に移行するにあたり、アプリケーションを適切に保守するのに役立つスキルへの投資が必要になることがあります。次に例を示します。

  • JVM COBOL としてコンパイルされたネイティブ COBOL アプリケーションをコンパイルして実行するには、Eclipse および Java のディプロイ方法に関する知識が必要になります。
  • JVM COBOL としてコンパイルされたネイティブ COBOL アプリケーションをアプリケーション サーバーでコンパイルして実行するには、Eclipse、Java、およびアプリケーション サーバーに関する知識が必要になります。また、スレッドおよび実行単位の使用方法を理解する必要があります。
  • コンテナーおよび Docker - コンテナー化の知識と Docker でのアプリケーションの開発、ディプロイ、および実行に関する知識が必要になります。「モダン開発プラクティス」を参照してください。
  • 継続的インテグレーションには、自動化のテストを含む、同じアプリケーション ベースで作業するチームのための一連のソフトウェア開発プラクティスが含まれます。「モダン開発プラクティス」を参照してください。

ディプロイおよびライセンス

JVM COBOL コードでは、これらの扱いが異なります。アプリケーションをパッケージ化して JVM でディプロイする方法を理解する必要があります。

データベース サポート

SQL(DBMAN=JDBC) 指令で OpenESQL を使用して、JVM COBOL アプリケーションをコンパイルできます。Micro Focus では、OpenESQL ネイティブ コードとマネージ コードのランタイム システム間で可能な限りソース コードの互換性が維持されるよう努めています。各ランタイム システムには、基盤となるデータベース API および実行環境に基づく拡張、制限、および相違がありますが、埋め込み SQL 文 (DECLARE CURSOR、OPEN、FETCH、CLOSE、SELECT、INSERT、UPDATE、DELETE、CONNECT、DISCONNECT、COMMIT、ROLLBACK など) の大部分は完全に互換性があり、変更は必要ありません。

JDBC ランタイム システムは、オブジェクト ホスト変数および従来の COBOL ホスト変数をサポートしています。

次の制約事項は、JVM COBOL コードにおけるデータベース サポートに適用されます。

  • Oracle は、Pro*COBOL を使用した JVM COBOL コードはサポートしていません。

    対策として、まずコードを ODBC で OpenESQL に移行し、次に ADO.NET で JVM COBOL コードに移行します。

  • OpenESQL に移行する前に、Pro*COBOL 指令 MODE=ANSI および FIPS でコンパイルして、JVM COBOL コードでサポートされていない非 ANSI 規格の構文がコードに含まれるかどうかを確認する必要があります。また、一部の Oracle 拡張機能は OpenESQL によってサポートされている場合がありますが、その他は修正が必要になることがあります。
  • 一部の PL/SQL 文およびブロックは機能する可能性がありますが、JVM COBOL コードに PL/SQL サポートはありません。
  • ストアド プロシージャ呼び出しから出力パラメーターを使用するアプリケーションは、COBOL 指令 NOILNATIVE を使用する必要があります。オブジェクト ホスト変数は、ストアド プロシージャ呼び出しで出力パラメーターには使用できません。

ライブラリ ルーチン

特定のライブラリ ルーチンは、ネイティブ コードでのみサポートされています。JVM COBOL コードで使用できるルーチンの詳細については、本ドキュメントの「ライブラリ ルーチン」セクションを参照してください。

ネイティブ コードおよび JVM COBOL コード

ネイティブ コードは JVM COBOL コードから呼び出すことができますが、J2EE アプリケーション サーバーや Web サーバーなど、禁止されている環境もあります。

同じアプリケーションでのネイティブ コードと JVM COBOL コードの使用は、特にコードをデバッグして JVM でディプロイする際に、いくつかの点で制限される可能性があります。

ユーザー インターフェイスのモダナイゼーション

Enterprise Developer は、アプリケーションのユーザー インターフェイスをモダナイズするための優れたオプションを提供します。JVM の Java Swing を使用できます。アプリケーション アーキテクチャ、および元のユーザー インターフェイスとバックエンド モジュールの関連付けの強さによっては、問題が発生する可能性がある点に注意してください。

オブジェクト指向プログラミング

JVM などのマネージ環境でコンパイルおよび実行される、手続き型 COBOL を作成して使用できます。ただし、マネージ環境で利用可能なすべての機能を最大限に活用し、コードを他のマネージ言語に公開できるようにするには、JVM COBOL 構文の使用が必要になる場合があります。JVM COBOL コードの作成については、次のリソースを参照してください。

  • Micro Focus SupportLine Documentation Web siteで閲覧可能な『COBOL 開発者向けのオブジェクト指向プログラミング入門』。
  • Enterprise Developer とともにインストールされる [Visual COBOL Samples] サンプル ブラウザーの [Moving to JVM] セクションに含まれるサンプルを確認してください。

サード パーティ製ソフトウェア

オペレーティング システムを呼び出すサード パーティ API に対する、既存の手続き型 COBOL コードを確認してください。他のソフトウェア ベンダーによって提供される技術は、JVM COBOL コードでの利用向けに書き替える必要がある場合があります。

Win32 API ルーチン

Win32 API ルーチンは、JVM COBOL コードではサポートされていません。手続き型コードを JVM COBOL に移行する場合、意図した結果を得るには、Win32 API ルーチンの呼び出しを削除し、同等の JVM 機能を代わりに使用する必要があります。