| 外部インタフェース/API | ![]() |
%valコンストラクトは、ほとんどのFortranコンパイラでサポートされています。DIGITAL Visual Fortranは、コンストラクトをサポートします。%valは、変数のアドレスではなく、変数の値をサブルーチンに渡します。%valコンストラクトをサポートしないFortranコンパイラを使っている場合は、特殊なルーチンを使って配列の値をテンポラリなFortran配列にコピーしなければなりません。たとえば、計算ルーチンyprimeを呼び出すゲートウェイルーチンを考えます。
call yprime(%val(yp), %val(t), %val(y))
Fortranコンパイラが%valコンストラクトをサポートしない場合、つぎのようにこの呼び出しを計算サブルーチンで置き換えます。
C Copy array pointers to local arrays. call mxCopyPtrToReal8(t, tr, 1) call mxCopyPtrToReal8(y, yr, 4) C C Call the computational subroutine. call yprime(ypr, tr, yr) C C Copy local array to output array pointer. call mxCopyReal8ToPtr(ypr, yp, 4)
ゲートウェイルーチンの最初の行につぎの宣言文を加えなければなりません。
real*8 ypr(4), tr, yr(4)
mxCopyPtrToReal8 または他のmxCopy__ルーチンを使う場合、Fortranゲートウェイルーチンで宣言される配列のサイズは、MATLABからのMEX-ファイルの入力サイズ以上でなければなりません。そうでなければ、mxCopyPtrToReal8は正常に動作しません。
| Fortran MEX-ファイルの作成 | Fortran MEX-ファイルの例 | ![]() |