Microsoft は、ネイティブ コードとマネージ コードの相互運用の技術を提供しています。また、オプションの説明や戦略に関するアドバイスを含むすぐれたマニュアルを公開しています。
大まかに言うと、ネイティブ COBOL コードとマネージ コード (マネージ COBOL またはその他のマネージ言語) の間で呼び出しを行うための手法は 3 つあります。
CCW を使用するには、COM 相互運用用のマネージ クラスを登録します。プロジェクトをビルドするとこのクラスが登録されて、ネイティブ COBOL 側で利用できるようになります。
RCW を使用するには、ネイティブ COBOL を COM オブジェクトとしてパッケージ化し、登録する必要があります。作成した COM オブジェクトをプロジェクトに参照として追加します。プロジェクトをビルドすると RCW が生成され、COM クラスがマネージ プロキシ クラスとして公開されます。
プラットフォーム呼び出しを使用するには、まず、ネイティブ COBOL を、適切なエントリ ポイントを含む .dll としてパッケージ化します。次に、その .dll と、COBOL のランタイム システム サポートを、プロジェクトに参照として追加します。これで、マネージ コードからネイティブ API 関数を呼び出すことができます。関数のシグネチャをマネージ コードで宣言し直す必要があります。
ネイティブ COBOL とマネージ COBOL の相互運用では、データ型の変換について心配する必要はありません。COBOL のコンパイル時にネイティブ型が認識されて、適切なマネージ型に変換されます。
ただし、ネイティブ COBOL が他の言語のマネージ コードと相互運用するには、その言語と互換性のあるデータ型を使用する必要があります。多くの場合、異なる言語の型同士には厳密な 1 対 1 の対応はないので、コードを操作して互換性を確保する必要があります。たとえば、整数 (PIC S9(9) comp-5など) の場合は、C# と Java 両方の int に対応する、定義済みの binary-long 型を使用できます。
COM は、1 つのアプリケーションから COM オートメーション サーバーとしてオペレーティング システムに登録されているアプリケーションへメッセージをロードおよび送信する Microsoft Windows の機能の 1 つです。
Micro Focus の COM サポートを使用すると、COBOL のプログラムとクラスから COM オブジェクトにメッセージを送信することができます (この場合、COBOL は COM クライアントとして動作する)。また、COM オブジェクトを作成し、COM オートメーションを通して COBOL クラスを操作することもできます。
COM コンポーネントの説明では、サーバー、クラス、クライアント、オブジェクトなどの用語が独自の意味で使用されるため、混乱の原因になります。このマニュアルでは、これらの用語を次の意味で使用しています。
COM オブジェクトは、Microsoft のコンポーネント オブジェクト モデル (COM) でビルドされます。COM とネイティブのオブジェクト指向 COBOL などの言語には、次のような 2 つの大きな違いがあります。
Microsoft は、分散バージョンの COM もサポートしています。このバージョンは、DCOM と呼ばれ、ネットワーク上で使用できます。DCOM を使用すると、別のマシンにあるオブジェクトにメッセージを送信することができます。