サンプル:マネージ Dialog System アプリケーション

マネージ Customer サンプルの ManagedCustomer.sln は Dialog System に付属していた元の Customer サンプルとほぼ同じです。主な違いは、このサンプルはマネージ・コードにコンパイルされ、.NET のもとで実行されるという点です。既存の Dialog System ランタイム呼び出しは残っていますが、自動的に Platform Invoke 呼び出しに変換されてネイティブ・コードになります。つまり、ユーザ・インターフェースとスクリーンセットは、ネイティブ・コードとして引き続き実行されます (次の図を参照)。

このサンプルは、Platform Invoke 手法を使用しています。この手法により、マネージ・コードは動的リンク・ライブラリ (.dll) で実装されたアンマネージ関数を呼び出すことができます。Platform Invoke は、API 呼び出しに似ています。

サンプルには、次のような構成の 1 つのプロジェクト (マネージ・コード・プロジェクト) があります。

Customer.cbl

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