Print

Print


Can you pass a non-target variable to a subroutine where it is defined
to have the target attribute?

To clarify, is the following code legal F90? It compiles with my
compiler, and seems to work, but I am worried it isn't standard
compliant.


module ValStorageMod

type ValStorage
   real, pointer :: valPtr
end type

contains

subroutine setStoragePtr( storage, v )
   type (ValStorage) :: storage
   real, target :: v
   storage%valPtr => v
end subroutine

subroutine setVal( storage, x )
   type (ValStorage) :: storage
   real :: x
   storage%valPtr = x
end subroutine

end module


program main
   use ValStorageMod
   type (ValStorage) :: valStore
   real :: r
   call setStoragePtr(valStore, r )
   call setVal( valStore, 5.0 )
   print *, 'r is ', r   ! Should this print out 5?
end


Drew

========================================
  Dr. Drew McCormack (Kmr. R153)
  Afd. Theoretische Chemie
  Faculteit Exacte Wetenschappen
  Vrije Universiteit Amsterdam
  De Boelelaan 1083
  1081 HV Amsterdam
  The Netherlands

  Email         [log in to unmask]
  Telephone     +31 20 44 47623
  Mobile                +31 6 483 21307
  Fax                   +31 20 44 47629