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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%