既存のアプリケーションで JVM COBOL を使用する前に、検討が必要な事項がいくつかあります。現在のアプリケーションの構造およびビルド方法を分析し、どのような変更が必要かを判断する必要があります。
JVM COBOL へのアプリケーションの移行についてサポートが必要な場合は、Micro Focus Professional Services にお問い合わせください。
検討が必要な項目の一部を次に示します。
JVM COBOL に簡単に移行できるかどうかについては、アプリケーションの複雑さ (プログラムの数やプログラム間の相互接続など) とネイティブのコンパイル方法が大きく影響します。次のような要因があります。
元のネイティブ COBOL アプリケーションにおいて、コマンド ラインで実行されるバッチ スクリプトをコンパイルに使用している場合があります。そのようなアプリケーションのコンパイル方法を変更する場合、コードをコンパイルするために新しい改善された手順の適用が必要になることがあります。
この変更は、特に Eclipse において、バッチ スクリプトで特定のディレクトリ構造に実行可能ファイルを配置する場合にも必要になる可能性があります。
JVM COBOL に移行するにあたり、アプリケーションを適切に保守するのに役立つスキルへの投資が必要になることがあります。次に例を示します。
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 コードにおけるデータベース サポートに適用されます。
対策として、まずコードを ODBC で OpenESQL に移行し、次に ADO.NET で JVM COBOL コードに移行します。
特定のライブラリ ルーチンは、ネイティブ コードでのみサポートされています。JVM COBOL コードで使用できるルーチンの詳細については、本ドキュメントの「ライブラリ ルーチン」セクションを参照してください。
ネイティブ コードは JVM COBOL コードから呼び出すことができますが、J2EE アプリケーション サーバーや Web サーバーなど、禁止されている環境もあります。
同じアプリケーションでのネイティブ コードと JVM COBOL コードの使用は、特にコードをデバッグして JVM でディプロイする際に、いくつかの点で制限される可能性があります。
Visual COBOL は、アプリケーションのユーザー インターフェイスをモダナイズするための優れたオプションを提供します。JVM の Java Swing を使用できます。アプリケーション アーキテクチャ、および元のユーザー インターフェイスとバックエンド モジュールの関連付けの強さによっては、問題が発生する可能性がある点に注意してください。
JVM などのマネージ環境でコンパイルおよび実行される、手続き型 COBOL を作成して使用できます。ただし、マネージ環境で利用可能なすべての機能を最大限に活用し、コードを他のマネージ言語に公開できるようにするには、JVM COBOL 構文の使用が必要になる場合があります。JVM COBOL コードの作成については、次のリソースを参照してください。
オペレーティング システムを呼び出すサード パーティ API に対する、既存の手続き型 COBOL コードを確認してください。他のソフトウェア ベンダーによって提供される技術は、JVM COBOL コードでの利用向けに書き替える必要がある場合があります。
Win32 API ルーチンは、JVM COBOL コードではサポートされていません。手続き型コードを JVM COBOL に移行する場合、意図した結果を得るには、Win32 API ルーチンの呼び出しを削除し、同等の JVM 機能を代わりに使用する必要があります。