相互運用の概要

Microsoft は、ネイティブ コードとマネージ コードの相互運用の技術を提供しています。また、オプションの説明や戦略に関するアドバイスを含むすぐれたマニュアルを公開しています。

大まかに言うと、ネイティブ COBOL コードとマネージ コード (マネージ COBOL またはその他のマネージ言語) の間で呼び出しを行うための手法は 3 つあります。

ネイティブ COBOL とマネージ COBOL の相互運用では、データ型の変換について心配する必要はありません。COBOL のコンパイル時にネイティブ型が認識されて、適切なマネージ型に変換されます。

ただし、ネイティブ COBOL が他の言語のマネージ コードと相互運用するには、その言語と互換性のあるデータ型を使用する必要があります。多くの場合、異なる言語の型同士には厳密な 1 対 1 の対応はないので、コードを操作して互換性を確保する必要があります。たとえば、整数 (PIC S9(9) comp-5など) の場合は、C# と Java 両方の int に対応する、定義済みの binary-long 型を使用できます。

Micro Focus の COM サポート

COM は、1 つのアプリケーションから COM オートメーション サーバーとしてオペレーティング システムに登録されているアプリケーションへメッセージをロードおよび送信する Microsoft Windows の機能の 1 つです。

Micro Focus の COM サポートを使用すると、COBOL のプログラムとクラスから COM オブジェクトにメッセージを送信することができます (この場合、COBOL は COM クライアントとして動作する)。また、COM オブジェクトを作成し、COM オートメーションを通して COBOL クラスを操作することもできます。

COM コンポーネントの説明では、サーバー、クラス、クライアント、オブジェクトなどの用語が独自の意味で使用されるため、混乱の原因になります。このマニュアルでは、これらの用語を次の意味で使用しています。

  • COM クラス:既存の COBOL プログラムを基に作成する COBOL クラス
  • COM サーバー (COM オートメーション サーバー):COM クラスを使用して作成されたアプリケーション
  • COM クライアント:COM サーバー アプリケーションにアクセスするあらゆるプログラム
  • COM オブジェクト (コンポーネント):クライアントで受信される COM サーバー アプリケーションのインスタンス

COM オブジェクトは、Microsoft のコンポーネント オブジェクト モデル (COM) でビルドされます。COM とネイティブのオブジェクト指向 COBOL などの言語には、次のような 2 つの大きな違いがあります。

  • COM は、継承をサポートしていない。新しい COM クラスを作成するときに、既存の COM クラスまたは COM 以外のクラスから機能を継承することはできません。
  • COM は、クラス メソッドとクラス データをサポートしていない。

Microsoft は、分散バージョンの COM もサポートしています。このバージョンは、DCOM と呼ばれ、ネットワーク上で使用できます。DCOM を使用すると、別のマシンにあるオブジェクトにメッセージを送信することができます。