マネージ Customer サンプルの ManagedCustomer.sln は Dialog System に付属していた元の Customer サンプルとほぼ同じです。主な違いは、このサンプルはマネージ・コードにコンパイルされ、.NET のもとで実行されるという点です。既存の Dialog System ランタイム呼び出しは残っていますが、自動的に Platform Invoke 呼び出しに変換されてネイティブ・コードになります。つまり、ユーザ・インターフェースとスクリーンセットは、ネイティブ・コードとして引き続き実行されます (次の図を参照)。
このサンプルは、Platform Invoke 手法を使用しています。この手法により、マネージ・コードは動的リンク・ライブラリ (.dll) で実装されたアンマネージ関数を呼び出すことができます。Platform Invoke は、API 呼び出しに似ています。
サンプルには、次のような構成の 1 つのプロジェクト (マネージ・コード・プロジェクト) があります。
Customer.cbl には、ビジネス・ロジック用および Dialog System スクリーンセットとの対話用の元のコードが含まれています。
Customer.cbl に対する唯一の変更点は、マネージ・コードがネイティブ Dialog System ランタイム・システムを正しく呼び出すようになっていることです。コードは、Dialog System が必要とするパラメータをすべて提供する (または、少なくともすべてのパラメータを渡していないことを通知する) 必要があります 。元の Customer サンプルは 2 つのパラメータしか使用しないため、次のコードでは第 3 のパラメータを 'omitted' として追加する必要があります。
Call-Dialog-System SECTION. CALL dialog-system USING ds-control-block, customer-data-block omitted