.NET (既知の問題点)

次の各セクションでは、.NETで使用するアプリケーションを Enterprise Developer を使用して作成する際の制限事項について説明します。

.NET バージョン

Enterprise Developer では、.NET バージョン 6 で使用する COBOL アプリケーションを作成してディプロイできます。

COBOL 言語

.NET にディプロイする COBOL アプリケーションには、次の機能を含めることはできません。

  • ACUCOBOL-GT ファイル処理
  • CBL_THREAD_KILL ライブラリ ルーチン
  • ILVERIFY(CHECK) コンパイラ指令オプション
  • JSON PARSE 文
  • LBR ファイルのサポート
  • COBSQL、HMTLPP、PREXML などのネイティブ プリプロセッサ
  • 2 番目のスレッドの STOP RUN 文
  • XML 拡張 (ただし、XML PARSE および XML GENERATE 文は使用できます)

COBOL ランタイム構成

.NET にディプロイされるアプリケーションのランタイム動作をアプリケーション構成ファイルを使用して構成する必要がある場合は、.NET Framework コンソール アプリケーション用の .exe.config ファイルではなく .dll.config ファイルを使用する必要があります。

データベース アクセス

  • .NET 6 にディプロイされる COBOL アプリケーションで OpenESQL CONNECT 文を使用する必要がある場合は、CONNECT 文の書き方 6 を使用する必要があります。詳細については、「CONNECT」を参照してください。
  • SQL(DBMAN=ODBC) 指令は、.NET 6 COBOL SQL プログラムでは使用できません。SQL(DBMAN=ADO) を使用する必要があります。

ネイティブおよび .NET ファイル ハンドラー

デフォルトでは、.NET プロジェクトの COBOL アプリケーションは、ファイル処理操作にネイティブ ファイル ハンドラーを使用します。プロジェクトのディプロイおよび実行時にネイティブ ファイル処理機能を利用できるようにするために、.NET プロジェクトをパブリッシュすると、パブリッシュされたファイルに必要なネイティブ ランタイム システムとファイル ハンドラーが含まれます。これらは、Micro Focus 機能をすべて含む MicroFocus.COBOL.Runtime パッケージの一部です。アプリケーションに完全な NuGet パッケージが含まれていない場合は、前述の小さい必須パッケージを個別に追加する必要があります。

メイン プログラムが COBOL ではない Windows 上のローカル .NET アプリケーションをデバッグする場合、たとえばメイン プログラムが C# である場合は、適切なファイル ハンドラーが使用されていることを確認する必要があります。そうしないと、最初の COBOL ファイル入出力文でランタイム システム エラー COBRT198 (「ロードできない」) が発生します。

デフォルトでは、32 ビットのネイティブ バージョンのファイル ハンドラーが利用できます。これをアプリケーションで使用するには、メイン プログラムのプロジェクトが x86 プラットフォームを対象にビルドされている必要があります。

または、ネイティブ ランタイム システムに依存しないようにするために、.NET ファイル ハンドラーを使用することもできます。プロジェクトで指令 CALLFH (EXTFH) および CALLSORT (EXTSM) を指定することにより、ネイティブ ファイル ハンドラーではなく .NET ファイル ハンドラーを使用するように .NET プロジェクトを切り替えることができます。

Azure .NET へのディプロイ

デフォルトでは、.NET プロジェクトの COBOL アプリケーションは、ファイル処理操作にネイティブ ファイル ハンドラーを使用します。プロジェクトのディプロイおよび実行時にネイティブ ファイル処理機能を利用できるようにするために、.NET プロジェクトをパブリッシュすると、パブリッシュされたファイルに必要なネイティブ ランタイム システムとファイル ハンドラーが (MicroFocus.COBOL.Runtime パッケージの一部として) 含まれます。

.NET プロジェクトを Azure .NET 環境にディプロイする場合は、代わりにプロジェクトで .NET ファイル ハンドラーを使用して、プロジェクトでネイティブ C ランタイムのディプロイも必要になる依存関係を回避する必要があります。プロジェクトで指令 CALLFH (EXTFH) および CALLSORT (EXTSM) を指定することにより、ネイティブ ファイル ハンドラーではなく .NET ファイル ハンドラーを使用するように .NET プロジェクトを切り替えることができます。

global.json ファイル

Visual Studio 2022 では、プロジェクトを正常に開いてビルドするには、.NET 6 プロジェクトの global.json ファイルがソリューション ファイルのディレクトリ レベルに配置されている必要があります。以前のバージョンの Visual Studio では、ファイルはプロジェクト フォルダーなどのソリューションのサブフォルダーに配置されていました。

これは、global.json ファイルがソリューション ファイルのディレクトリ レベルにない場合に、以前のリリースからアップグレードした既存の .NET Core 3.1 COBOL プロジェクトに影響を与える可能性があります。また、既存のソリューションに追加する .NET 6 COBOL プロジェクトにも影響します。

このような場合、MSBuild コマンド ラインからビルドする場合、またはプロジェクトのロードに失敗すると、IDE の出力ウィンドウに次のエラー メッセージが表示されることがあります。

"The SDK 'MicroFocus.Sdk' specified could not be found"

この問題を回避するには、global.json ファイルをソリューション ファイルのディレクトリ レベルに移動する必要があります。

VS2022 で作成された新しい .NET 6 COBOL ソリューションおよびプロジェクトは、必要な場所に global.json ファイルを作成します。

オペレーティング システム

次の表に、Enterprise Developer を使用してパブリッシュした .NET 向け COBOL アプリケーションをディプロイできるアーキテクチャとオペレーティング システムを示します。サポートされているオペレーティング システムのバージョンは、Enterprise Developer でサポートされるバージョンです。

オペレーティング システム アーキテクチャ
Amazon Linux 2 x64
Red Hat Enterprise Linux x64
Rocky Linux x64
SUSE Enterprise Linux x64
Ubuntu x64
Windows クライアント x64
x86
Windows Server x64
x86
注:

次のオペレーティング システムは .NET でサポートされていますが、COBOL アプリケーションのディプロイには使用できません。

  • MacOS
  • Docker で実行されている Windows コンテナー