Unless I misunderstood your question, you shouldn't need the EXTERNAL. The following
should work:
MODULE whatever
INTERFACE
FUNCTION Func1d(x)
USE Num_const
REAL(RS), INTENT(IN) :: x
REAL(RS) :: Func1d
END FUNCTION Func1d
END INTERFACE
CONTAINS
SUBROUTINE sub1
USE Num_const
REAL(RS) :: a,b
a = Func1d(b)
END SUBROUTINE sub1
SUBROUTINE sub2
[etc, etc]
END MODULE whatever
Here all the subroutines know the interface for Func1d by "host association", and
hence do not need to declare Func1d.
Bill
Goeran Klose wrote:
>
> Hello Mr. Mitchell,
>
> Thanks for your advise. However, your second alternative
> works only if is following line is additionally placed in
> each subroutine of the module.
>
> REAL(RS), EXTERNAL :: Func1d
>
> Regards,
>
> Göran Klose
> On 18-Aug-00 William F Mitchell wrote:
> > 1) include, or
> > 2) put all the routines in a module, and the interface in the specification
> > part
> > of the module
> >
> > Goeran Klose wrote:
> >>
> >> Hello,
> >>
> >> I am trying to compile a module of different mathematical
> >> Fortran 90 routines. All routines are supposed to
> >> evaluate the same type of function. The interface of this
> >> function is given below.
> >>
> >> INTERFACE
> >> FUNCTION Func1d(x)
> >> USE Num_const
> >> REAL(RS), INTENT(IN) :: x
> >> REAL(RS) :: Func1d
> >> END FUNCTION Func1d
> >> END INTERFACE
> >>
> >> To reduce redundant Fortran coding, I am looking for a way to
> >> avoid the interface statement in each routine.
> >> Does anyone know an elegant way to solve this problem ?
> >>
> >> Thanks,
> >>
> >> Göran
> >
> > --
> > William F. Mitchell
> > Mathematical and Computational Sciences Division
> > National Institute of Standards and Technology
> > [log in to unmask] http://math.nist.gov/~mitchell
--
William F. Mitchell
Mathematical and Computational Sciences Division
National Institute of Standards and Technology
[log in to unmask] http://math.nist.gov/~mitchell
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|