fortran - SELECT TYPE with unlimited polymorphic pointer to CHARACTER(*) variable -
following example uses fortran 2003 features defining unlimited polymorphic pointers , performing actions based on variable type following select type construct. subroutine handlep prints value of argument in dependence of it's type.
program example implicit none type name character(22) :: n end type character(len=7) :: mystring mystring = 'initial' call handlep(mystring) call handlep('initial') call handlep(name('initial')) contains subroutine handlep(p) class(*), intent(in) :: p select type(p) type (character(len=*)) write(*,*) len(p), ': ', p class (name) write(*,*) len(p%n), ': ', p%n class default write(*,*) 'unknown type' end select end subroutine end program example compiling gfortran version 4.8 gives following output:
7 : initial 0 : 22 : initial so, call handlep(mystring) works expected, call handlep('initial') printing fails. calling type(name) argument works.
is behaviour call handlep('initial') gfortran bug or doing wrong? if bug, prevent it?
i want let know issue fixed under gfortran 4.9.3-1 comes current mingw installation.
Comments
Post a Comment