インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

Fortran COM サーバーのインターフェイス設計における考慮事項 (Windows*)

このトピックは、Windows* にのみ適用されます。

このセクションでは、Fortran COM サーバーを設計する際に考慮する必要がある情報について説明します。次のトピックについて説明します。

メソッドおよびプロパティーのデータ型

COM では、スレッド、プロセス、およびマシン間で引数を渡すことができるため、メソッドとプロパティーで使用されるデータ型を制限しています。これにより、DLL など、常に呼び出し元と同じアドレス空間で実行される以前のテクノロジーでは発生しない問題が発生します。

COM は、オートメーション互換データ型というデータ型のセットを定義します。オートメーション・インターフェイスおよびデュアル・インターフェイスでは、これらのデータ型のみ使用することができます。COM インターフェイスをこれらのデータ型に制限することには、次の 2 つのメリットがあります。

サーバーをオートメーション互換データ型に制限する方法:

  1. [Interface (インターフェイス)] プロパティー・ページで [Is OleAutomation] を True に設定します。デュアル・インターフェイスを定義する場合、このオプションは自動的に設定されます。

  2. [Argument (引数)] プロパティー・ページで、次の [Fortran Type (Fortran 型)] と [IDL Type (IDL 型)] の組み合わせのみ使用します。

    インテル® Fortran では、通貨型 (Currency)、10 進型 (Decimal)、ユーザー定義型、オートメーション互換データ型はサポートされていないことに注意してください。

Fortran 型

IDL 型

INTEGER(1)

unsigned char

INTEGER(2)

short

INTEGER(4)

long

SCODE

int

INTEGER(INT_PTR_KIND())

IUnknown*

IDispatch*

REAL(4)

float

REAL(8)

double

DATE

LOGICAL(2)

VARIANT_BOOL

LOGICAL(4)

long

CHARACTER(1)

unsigned char

CHARACTER(*)

BSTR

BYTE

unsigned char

TYPE(VARIANT)

VARIANT (上記のいずれか、または SafeArray)

インターフェイスをオートメーション互換データ型に制限しない場合は、IDL (Interface Description Language) で使用可能なデータ型に制限する方法があります。

Fortran COM サーバーウィザードは、サーバーの記述から IDL ファイルを自動的に生成します。MIDL コンパイラーは、IDL ファイルをタイプ・ライブラリーにコンパイルします。MIDL は、スレッド、プロセス、およびマシン間での引数の受け渡しに必要なコードを自動的に生成することもできます。ただし、このオプションを使用するには C コンパイラーが必要です。詳細は、「COM サーバーの詳細」の「ウィザードを使用したコードの生成」を参照してください。

インターフェイスを IDL のデータ型に制限しない場合、残るオプションは次の方法のみです。

COM ステータスコード: HRESULT

各関数は、HRESULT と呼ばれる 32 ビットの COM ステータスコードを返します。HRESULT は次のフィールドから構成されています。

一般的な HRESULT エラー値は、0x80070057 のようになります。最初の 16 進数である 8 は、ビット 31 が設定され、エラー値であることを示します。ビット 16 からビット 27 の値は 7 です。これは、FACILITY_WIN32 の機能コードです。最下位ワードの値は 0057 です。これは、E_INVALIDARG エラーの固有コードです。

システムの HRESULT 値に対応する説明を表示するには、インテル® Fortran プログラムフォルダーにある Error Lookup ツールを使用します。例えば、次のように、0x80070057 という値を入力すると、"The parameter is incorrect (引数が間違っています)" というメッセージが表示されます。


Error Lookup ツール

\VC\INCLUDE ディレクトリーにある WINERROR.H ファイルで HRESULT 値を検索することもできます。

Visual Basic*、Visual C++*、およびインテル® C++ クライアントに関する注意事項

Visual Basic* のオブジェクトを使用する場合は、Visual Basic* プロジェクトにオブジェクトへの参照を追加する必要があります。[プロジェクト] メニューから [参照の追加] を選択して、登録されたオブジェクトのリストを表示します。リストからオブジェクトを選択して、Visual Basic* にオブジェクトの使用を知らせます。

Visual Basic* クライアントとともに使用するサーバーでは、次の点を考慮する必要があります。

C++ のオブジェクトを使用する場合は、#import ディレクティブを使用します。#import ディレクティブの構文は次のとおりです。

  #import "filename" [attributes]
  #import <filename> [attributes]

filename は、タイプ・ライブラリーの情報が含まれたファイルの名前です。ディレクティブにより、ソースファイルでタイプ・ライブラリーの情報を C++ クラスのセットとして利用できるようになります。