外部インタフェース/API リファレンス    
Fortranでポインタを渡す


MATLAB APIは、一意的なデータタイプmxArrayについて機能します。Fortranでは新しいデータタイプを作成する方法がないため、MATLABはポインタと呼ばれる特殊な識別子をFortranプログラムに渡します。このポインタを様々なAPI関数(アクセスルーチンと呼ばれる)に渡すことで、mxArrayに渡すことで、についての情報を得ることができます。これらのアクセスルーチンにより、mxArrayのサイズ、文字列かどうか、データの内容のような、ユーザの知りたい情報を含むネイティブなFortranのデータタイプを得ることができます。

Fortranでポインタを使うときにはつぎのような特徴があります。

  1. %VALコンストラクト

    Fortranコンパイラが %VALコンストラクトをサポートしていれば、データのポインタ(mxGetPrまたはmxGetPiが出力するポインタ)を名前として指定できます。これは、ポインタからデータへのアクセスルーチンを要求しないで使うことができるポインタの一種です。このポインタの内容をサブルーチンに渡すために%VAL を使うことができ、これはFortranの倍精度行列として宣言されます。

    Fortranコンパイラが%VAL コンストラクトをサポートしていない場合、ポインタの内容にアクセスするためには、mxCopy__ルーチン(例, mxCopyPtrToReal8)を使わなければなりません。

  1. 変数の宣言

    ポインタを適切に使うために、正しいサイズになるように宣言しなければなりません。DEC Alphaマシンでは、すべてのポインタは、iinteger*8と宣言されます。それ以外のすべてのプラットフォームでは、integer*4と宣言されます。

    FortranコンパイラがCのプリプロセッサをサポートしていれば、プリプロセッシングステージを使ってポインタを適切な宣言へマップすることができます。UNIXでの可能な例については、 examplesディレクトリの.Fで終わる例を参照してください。


 MATLAB配列  DDE Function