fortran66のブログ

fortran について書きます。

最近インテルFortranの新Versionが正式に発表され Ver.11となりました。
インストーラも妙にハイカラに変わりましたが、Win2000にはインストールできなくなってしまいました。

http://www.intel.com/cd/software/products/asmo-na/eng/compilers/278834.htm

Fortran2003の機能がだいぶインプリメントされましたが、掲示板などを見ると問題があふれているようです。近頃少し新機能を試しています。


John Reid による Fortran2003 のまとめ。
"The new features of Fortran 2003"
ftp://ftp.nag.co.uk/sc22wg5/N1551-N1600/N1579.pdf
直リン(すんません)

Fortran2003での関数ポインタの使用例。

MODULE m_type
IMPLICIT NONE
 ABSTRACT INTERFACE 
  REAL FUNCTION proc(x, y)
    REAL, INTENT(IN) :: x, y
  END FUNCTION
 END INTERFACE
END MODULE m_type
!===========================
MODULE m_test
USE m_type
IMPLICIT NONE
CONTAINS
!---------------------------
 REAL FUNCTION xsum(x, y)
   REAL, INTENT(IN) :: x, y
   xsum = x + y
   RETURN
 END FUNCTION xsum
!---------------------------
 REAL FUNCTION xprod(x, y)
   REAL, INTENT(IN) :: x, y
   xprod = x * y
   RETURN
 END FUNCTION xprod
END MODULE m_test
!===============================
PROGRAM test
USE m_test
IMPLICIT NONE
REAL :: x, y
PROCEDURE (proc), POINTER :: p => NULL(), q  => NULL()
!
x = 1.0
y = 9.0
p => xsum
q => xprod
PRINT *, p(x, y), q(x, y)
STOP
END PROGRAM test

関数ポインタを引数とする関数ポインタでの関数の実行はエラーになります。規格で禁止されているのかバグなのか、規格をもう少し読み込まないと分かりません(><;

ようやく発行になりました。前回の MIT Press から Springer に出版社が変わっています。米amazonで買ったほうが安く手に入ります。