fortran66のブログ

fortran について書きます。

メモ帳 parameterized derived types 例

Modern Fortran Explained 13章 を参考に試してみました。

ソース・プログラム

    program test
      implicit none
      type :: t_mat(ikind, n, m)
        integer, kind :: ikind
        integer, len  :: n, m
        real(ikind)   :: x(n, m)
      end type t_mat
      !
      type, extends(t_mat) :: t_labelled_mat(length)
        integer, len :: length
        character(len = length) :: label
      end type t_labelled_mat  
      !
      type(t_labelled_mat(kind(0.0), 10, 10, 20)) :: a
      !
      a%label = 'test matrix'
      call random_number(a%x)
      print *, a%label%len
      print *, 'sum, average=', sum(a%x), sum(a%x) / size(a%x)
      stop
    end program test

実行結果

          20
 sum, average=   52.24876      0.5224876
Press any key to continue . . .