CCW (COM callable-wrapper; COM 呼び出し可能ラッパー) は、COM 相互運用機能の 1 つです。CCW でマネージ コードを COM オブジェクトとしてラップすると、ネイティブ コードから、他の COM オブジェクトと同様に呼び出すことができます。つまり、あらゆる言語の .NET マネージ クラスが COM インターフェイスとして公開されます。詳しい背景情報については、Visual Studio のヘルプの「COM 呼び出し可能ラッパー」を参照してください。
.NET クラスを COM オブジェクトとして公開するには、クラスが COM 相互運用機能に登録されるように、プロジェクトを構成する必要があります。プロジェクトをビルドするとこのクラスが登録されて、ネイティブ COBOL 側で利用できるようになります。
.NET クラス内で定義および実装されたすべてのパブリック メソッドが、COM インターフェイスとして公開されます。COM クライアント アプリケーションは、これらのメソッドを、COM オブジェクトのメソッドであるかのように呼び出すことができます。
この操作によって、.NET クラスの COM プログラム用 ID を使用して、他の COM オブジェクトと同様に、ネイティブ クライアントから .NET クラス内のメソッドを呼び出しできます。この ID は、DefaultNamespace.Class として定義します。DefaultNamespace (デフォルトの名前空間) は、プロジェクト プロパティの [Application] タブで定義します。デフォルトではプロジェクト名に設定されます。
たとえば、ネイティブ COBOL クライアントから ManagedCOM という .NET クラスを呼び出すには、次のように指定します。
class ManagedCOM as "$OLE$COMDemo.ManagedCOM"
ネイティブ COBOL から .NET クラスを COM オブジェクトであるかのように呼び出すには、次の要素をコードに追加します。
$SET OOCTRL(+P)
このチェッカー指令によって、ランタイム システムでは、COBOL データ型から COM データ型へマップすることができます。
class-name IS CLASS "$OLE$windows-registry-name"
windows-registry-name には次のどちらかを指定します。
プログラム ID とクラス ID は Windows レジストリで定義されています。
OO COBOL プロキ シクラスにメッセージ "new" を送信します。COM サーバーが起動していない場合は、起動します。COM サーバーにメッセージを送信する際に使用できる OO COBOL ハンドルが返されます。
プロパティを設定する場合は、単一のパラメーターを渡します。プロパティを取得する場合は、RETURNING パラメーターとして値が返されます。