外部インタフェース/API リファレンス | ![]() ![]() |
MATLAB APIは、一意的なデータタイプmxArray
について機能します。Fortranでは新しいデータタイプを作成する方法がないため、MATLABはポインタと呼ばれる特殊な識別子をFortranプログラムに渡します。このポインタを様々なAPI関数(アクセスルーチンと呼ばれる)に渡すことで、mxArray
に渡すことで、についての情報を得ることができます。これらのアクセスルーチンにより、mxArray
のサイズ、文字列かどうか、データの内容のような、ユーザの知りたい情報を含むネイティブなFortranのデータタイプを得ることができます。
Fortranでポインタを使うときにはつぎのような特徴があります。
%VAL
コンストラクトFortranコンパイラが %VAL
コンストラクトをサポートしていれば、データのポインタ(mxGetPr
またはmxGetPi
が出力するポインタ)を名前として指定できます。これは、ポインタからデータへのアクセスルーチンを要求しないで使うことができるポインタの一種です。このポインタの内容をサブルーチンに渡すために%VAL
を使うことができ、これはFortranの倍精度行列として宣言されます。
Fortranコンパイラが%VAL
コンストラクトをサポートしていない場合、ポインタの内容にアクセスするためには、mxCopy__
ルーチン(例, mxCopyPtrToReal8
)を使わなければなりません。
ポインタを適切に使うために、正しいサイズになるように宣言しなければなりません。DEC Alphaマシンでは、すべてのポインタは、iinteger*8
と宣言されます。それ以外のすべてのプラットフォームでは、integer*4
と宣言されます。
FortranコンパイラがCのプリプロセッサをサポートしていれば、プリプロセッシングステージを使ってポインタを適切な宣言へマップすることができます。UNIXでの可能な例については、 examples
ディレクトリの.F
で終わる例を参照してください。
![]() | MATLAB配列 | DDE Function | ![]() |