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 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.