using Fortran Module from external files

230 Views Asked by At

I would like to call subroutines contained in a module. the module is saved in a separate file with my_mod.f95 filename.

module calc_mean
! this module contains two subroutines
implicit none
public :: calc_sum
public :: mean

contains
subroutine calc_sum(x,n,s)
! this subroutine calculates sum of elements of a vector
! x the vector
! n size of the vector
! s sum of elements of x

integer, intent(in):: n
real, intent(in):: x(n)
integer :: i
real, intent(out):: s
s=0
do i=1,n
s=s+x(i)
end do
end subroutine calc_sum
!
!
!
subroutine mean(x,n,xav)
! this subroutine calculates the mean of a vector
! x the vector
! n size of the vector
! xav mean of x

integer, intent(in):: n
real, intent(in):: x(n)
real, intent(out):: xav
real :: s
!
!
call calc_sum(x,n,s)
xav=s/n
end subroutine mean
end module calc_mean
 

I have the main program saved in a different file with 'my_program.f95'

program find_mean
! this program calculates mean of a vector
use calc_mean
implicit none

! read the vector from a file
integer, parameter ::n=200
integer :: un, ierror
character (len=25):: filename
real :: x(n), xav
un=30
filename='randn.txt'
! 
OPEN (UNIT=un, FILE=filename, STATUS='OLD', ACTION='READ', IOSTAT=ierror)
read(un,*) x ! 
!
call mean(x,n,xav)

write (*,100) xav
100 format ('mean of x is', f15.8)
end program find_mean

when I compile the main program with geany, I got the following error message. Please, help me!

**
/usr/bin/ld: /tmp/cctnlPMO.o: in function MAIN__': my_program.f08:(.text+0x1e1): undefined reference to __calc_mean_MOD_mean' collect2: error: ld returned 1 exit status

**

When I save both the main program and the module to the same file and run it, everything is fine.

0

There are 0 best solutions below