.NET COBOL での複数の実行単位のアプリケーションの開発

注: 次の説明は .NET COBOL にのみ該当します。

あらゆる既存の COBOL プログラムを、.NET のマルチ ユーザー環境で使用できます。手順は次のとおりです。

  1. COBOL クラス ライブラリのプロジェクトを作成して、そのプロジェクトに手続き型 COBOL プログラムを追加します。
  2. プロジェクトをリビルドします。

    これにより、COBOL プログラムはインスタンス化が可能なクラスになります。プログラムはライブラリ (.dll) としてパッケージ化されます。直接実行できる実行可能ファイルとしてはコンパイルされません。

注: EXEC SQL 文 (プログラム、クラス、列挙、および ValueType コードを含む) を使用する .NET COBOL コードはマネージ実行単位内にある必要があります。ただし、SQLCLR ストアド プロシージャまたは SQLCLR 型としてSQL Server の制御下で実行される .NET コードを除きます。このようなコードはマネージ RunUnit で自動的に実行されるため、アプリケーションを変更する必要がありません。

コードを適切に実行するためにマルチ ユーザー環境またはスレッド プール環境が必要な場合もマネージ RunUnit の使用が推奨されますが、コードがスレッド セーフになるように設計されている場合はこの限りではありません。

呼び出し先の COBOL プログラムが手続き型であるかオブジェクト指向型であるかに関係なく、その COBOL を呼び出すプログラムが必要です。呼び出し元のプログラムは、C# や COBOL などの任意の .NET 言語で作成できます。

  1. 呼び出し元のプログラムのプロジェクトを作成します。ほとんどすべてのプロジェクト タイプを選択できます。プロジェクトには次への参照を追加します。
    • Micro Focus Runtime (Interop RuntimeServices) アセンブリ。これにより、MicroFocus.COBOL.RuntimeServices への参照がプロジェクトに追加されます。
    • Micro Focus Runtime アセンブリ。これにより、MicroFocus.COBOL.Runtime への参照がプロジェクトに追加されます。これは、呼び出し元のプログラムを COBOL 以外の .NET 言語で作成する場合にのみ必要です。
    • 呼び出し先の COBOL クラス ライブラリを含むプロジェクト。
  2. 呼び出し元のプログラムで、MicroFocus.COBOL.RuntimeServices.RunUnit コンストラクターを使用して実行単位を作成します。
  3. Try ... Finally 構文を使用して、プログラムが失敗した場合に実行単位を破棄するようにします。
  4. RunUnit.Call() メソッドを使用して COBOL クラスを呼び出すか、次の手順を行います。
    • すべてのパラメーターが .NET 標準データ型を使用すること、および呼び出し先の COBOL がこれらの .NET 標準データ型を受け取れることを確認してください。
    • 呼び出す手続き型 COBOL プログラムのインスタンスを作成します。
    • RunUnit.Add() メソッドを使用して、プログラム インスタンスを新しい実行単位に追加します。
    • 新しい実行単位内でプログラム インスタンスを起動します。
  5. StopRun() メソッドを使用して、実行単位の使用終了後に、実行単位を破棄します。
Notes:
  • 実行単位によりランタイム エラーが発生した場合、System.ApplicationException がスローされます。
  • 複数の言語を使用する環境のオブジェクト指向 COBOL プログラムでは、静的メソッドおよびデータは、ランタイム エラーの原因となるため使用できません。
  • 実行単位はそれぞれ異なるスレッドで実行されるため、データ アクセスが同期化されることを確認してください。

MicroFocus.COBOL.RuntimeServices アセンブリ内の RunUnit クラスの詳細については、次を参照してください。RunUnit クラス