why a parameter changes when transfered to subroutine

Jerry DeLisle jvdelisle@verizon.net
Sat Jul 28 06:56:00 GMT 2007


bin Fan wrote:
> 
> Thank you , the simplified example is :
> 
> program temp
>   implicit NONE
>   real(kind=8)::distance,redshift=0.5D0
>   real::hubble
>   call resh_dis(62.0D0,distance)   //if this was call resh_dis(62.0, 
> distance) then everything is right
>   write(*,*) "redshift:",redshift
>   write(*,*) "distance:",distance
> end
> 
> subroutine resh_dis(hubble,distance)
>   implicit NONE
>   real(kind=8)::hubble,distance
>   distance = 1.0D0 /hubble
>   return
> end subroutine
> 

It works fine for me with  4.1.3 20070525.  I also tested 4.2 and 4.3.  All work 
fine.

$ gfc resh.f90
$ ./a.out
  redshift:  0.500000000000000
  distance:  1.612903225806452E-002
$ gfc41 -static resh.f90
$ ./a.out
  redshift:  0.500000000000000
  distance:  1.612903225806452E-002
$ gfc42 -static resh.f90
$ ./a.out
  redshift:  0.500000000000000
  distance:  1.612903225806452E-002

I don't know what to say other than to get a later version of gfortran and try 
it. 4.1.1 is getting pretty old.

Check here:  http://gcc.gnu.org/wiki/GFortran#download

Regards,

Jerry



More information about the Fortran mailing list