マルチユーザー アプリケーションの作成

PC またはサーバーで動作する最新のアプリケーションは、マルチユーザー環境での複数のユーザーによるユーザー間のセッションの同時実行など、複数のインスタンスの並列実行に対応する必要があります。

多くの COBOL アプリケーションは伝統的にシングル ユーザー プログラムであり、それぞれ独立した単一のセッションとして動作するため、マルチユーザー環境での動作には対応していません。同じアプリケーションのインスタンスを複数同時に実行しようとした場合、当然ですが同じリソース セットが複数のユーザーによって使用されるため、ファイル ロック、メモリ アイソレーション障害などの問題が発生する可能性があります。

コードを書き直せばこの問題を修正できますが、大幅なコードの変更が必要です。

Micro Focus Enterprise Developer は、同じプロセスに共存できる実行単位と呼ばれるコンストラクトによって、この問題を解決します。実行単位は、同じアドレス スペース、ロック テーブル、OpenESQL 接続を共有するプログラムの集合です。ランタイム サービス タイプ RunUnit を使用することで、同じプロセスで複数の実行単位を作成できます。その実行単位はそれぞれ隔離されます。

1 つの実行単位内の COBOL プログラムは通常、他の実行単位内のプログラムのメモリにはアクセスしません。それらは隔離されています。また、ファイル ロックは実行単位ごとに適用されます。1 つの実行単位内のプログラムがファイル ロックを適用した場合、同じプロセス中の他の実行単位内のファイル処理中のプログラムからアクセスできなくなります。

実行単位は、ランタイム アセンブリ MicroFocus.COBOL.RuntimeServices (.NET 用) と runtime class com.microfocus.cobol.runtimeservices.RunUnit (JVM COBOL 内) で指定されます。

JVM COBOL では、サーブレット API HttpSession オブジェクトのコンテキストで実行単位のライフサイクルを処理するクラス com.microfocus.cobol.runtimeservices.servlet.ServletRunUnitManager が存在します。
  1. 必要な出力ファイルを作成するために呼び出す COBOL プログラムをコンパイルします。
  2. 専用の実行単位内で COBOL プログラムを呼び出します。

    これを行うには、呼び出し側プログラムで実行単位を 1 つ作成して、そのプログラムを含む COBOL 型のインスタンスを 1 つ作成します。これにより、プログラムのインスタンスをその新しい実行単位内で起動することができます。

  3. MicroFocus.COBOL.RuntimeServices アセンブリ (Visual Studio 内) への参照の追加または com.microfocus.cobol.runtimeservices.RunUnit クラス (Eclipse 内) のインポートによって、複数の実行単位のランタイム サポートを使用できるようにします。

既存の手続き型 COBOL を変更する必要はありません。