Passando um procedimento interno como argumento

Eu quero resolver muitas vezes uma equação diferencial para diferentes parâmetros. É mais complicado que isso, mas por uma questão de clareza, digamos que o ODE éy'(x) = (y+a)*x comy(0) = 0 e eu queroy(1). Eu escolhi o algoritmo dverk do netlib para resolver o ODE e ele espera que a função no lado direito seja de uma determinada forma. Agora, o que fiz com o compilador Intel Fortran é o seguinte (simplificado):

subroutine f(x,a,ans)
implicite none
double precision f,a,ans,y,tol,c(24),w(9)
...
call dverk(1,faux,x,y,1.d0,tol,ind,c,1,w)
...
contains
    subroutine faux(n,xx,yy,yprime)
           implicite none
           integer n
           double precision xx,yy(n),yprime(n)
           yprime(1) = (yy(1)+a)*xx
    end subroutine faux
end subroutine f

Isso funciona muito bem com ifort, a sub-rotinafaux vê o parâmetroa e tudo funciona como esperado. Mas gostaria que o código fosse compatível com o gfortran e, com este compilador, recebo a seguinte mensagem de erro:

Erro: procedimento interno 'faux' não é permitido como argumento real em (1)

Preciso ter ofaux rotina dentrof, caso contrário, não sei como dizer o valor dea, porque não posso alterar a lista de parâmetros, pois é isso que odverk rotina espera.

Gostaria de manter odverk rotineiramente e entenda como resolver esse problema específico sem uma solução alternativa, pois sinto que isso se tornará importante novamente quando precisar integrar uma função parametrizada com diferentes integradore

questionAnswers(6)

yourAnswerToTheQuestion