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