| 外部インタフェース/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 | ![]() |