[Fortran] Functions Calling in Subroutines

  • Context: Fortran 
  • Thread starter Thread starter Raghnar
  • Start date Start date
  • Tags Tags
    Fortran Functions
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
4 replies · 11K views
Raghnar
Messages
41
Reaction score
1
There are some caveat in fortran 77 while calling functions inside subroutines?
I have some weird errors while calling a function inside a subroutine, e.g. Segmentation Fault while using/writing the argument of the function (but not sooner, I can still do an "Hallo World"!) or starting a do loop.
The function receive a Complex and an integer argument. printing the first complex variable get you 0 whatever the input is, printing the integer variable goes in segmentation fault... there are some memory usage issues, but I don't really know where to look...
This is only inside a subroutine, before calling the subroutin everything works just fine.

Any suggestions?
 
Last edited:
on Phys.org
I will try to reproduce the program in a short version, seeing if the problem is still there... The one which I use is far too complicated
 
Make sure your function is defined as the correct type of variable, inside the subroutine where you call it.

complex function c(x,y)
real x, y
... do some calculations
c = something
return
end

subroutine s
real x, y
complex z
complex c
...
z = c(x,y)
...
end

If you omit the "complex c" statement inside the subroutine, the compiler will assume that function c returns a REAL value. That certainly won't work properly, and may give you segementation faults etc.
 
That was the problem, thank you! :)