Microsoft は、ネイティブ コードと マネージ コードの相互運用の技術を提供しています。また、オプションの説明や戦略に関するアドバイスを含む優れたドキュメントを公開しています。
大まかに言うと、ネイティブ COBOL コードと マネージ コード (.NET COBOL またはその他の マネージ 言語) の間で呼び出しを行うための手法は 3 つあります。
CCW を使用するには、COM 相互運用用の マネージ クラスを登録します。プロジェクトをビルドするとこのクラスが登録されて、ネイティブ COBOL 側で利用できるようになります。
RCW を使用するには、ネイティブ COBOL を COM オブジェクトとしてパッケージ化し、登録する必要があります。作成した COM オブジェクトをプロジェクトに参照として追加します。プロジェクトをビルドすると RCW が生成され、COM クラスが マネージ プロキシ クラスとして公開されます。
プラットフォーム呼び出しを使用するには、まず、ネイティブ COBOL を、適切なエントリ ポイントを含む .dll としてパッケージ化します。次に、その .dll、および COBOL のランタイム システム サポートを、プロジェクトに参照として追加します。これで、 マネージ コードからネイティブ関数を呼び出すことができます。関数のシグネチャを マネージ ソース コードで宣言し直す必要があります (COBOL 以外の言語を使用している場合)。
ネイティブ COBOL と .NET COBOL の相互運用では、データ型の変換について心配する必要はありません。COBOL のコンパイル時にネイティブ型が認識されて、適切な .NET 型に変換されます。
ただし、ネイティブ COBOL が他の言語の マネージ コードと相互運用するには、その言語と互換性のあるデータ型を使用する必要があります。多くの場合、異なる言語の型同士には厳密な 1 対 1 の対応はないため、コードを操作して互換性を確保する必要があります。たとえば、整数 (PIC S9(9) comp-5 など) の場合は、C# と Java 両方の int に対応する、定義済みの binary-long 型を使用できます。
COM is a feature of Microsoft Windows which enables one application to load and send messages to any application registered with the operating system as a COM Automation server.
Micro Focus COM support enables you to send messages to COM objects from COBOL programs and classes (where this COBOL is behaving as a COM client). You can also create COM objects, enabling you to manipulate a COBOL class through COM Automation.
The terminology used to describe COM components - servers, classes, clients, and objects - can be confusing. In this documentation, we use these terms as follows:
COM objects are built using Microsoft's Component Object Model (COM). There are two main differences between COM and a language such as native OO COBOL:
Microsoft also support a distributed version of COM, which works across a network, called DCOM. DCOM enables you to send messages to an object residing on a different machine.