fortran66のブログ

fortran について書きます。

block..end block

Fortran2008 では ALOGOL 的なブロック構造が導入されます。ここでは変数などがローカルに確保されます。捨て変数などをローカルに確保できるので便利になります。Intel Fortran では、まだ対応していないので、gfortran で試してみることにします。
block 構造内では use 文や parameter も定義できます。implicit 文は許されないようです。

実行結果


ソース

    program test
      implicit none
      real, parameter :: pi = 4.0 * atan(1.0)
      print *, kind(0.0)
      print *, pi
      block
        use iso_fortran_env
        real(real64), parameter :: pi = 4.0_real64 * atan(1.0_real64)
        print *, real64
        print *, pi
        block
          real(real128), parameter :: pi = 4.0_real128 * atan(1.0_real128)
          print *, real128
          print *, pi
        end block
        print *, real64
        print *, pi
      end block
      print *, kind(0.0)
      print *, pi
      stop
    end program test