サンプル:Managed Dialog System Application

Managed 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