Fortran 将一个基本过程传递给另一个基本过程

Fortran 将一个基本过程传递给另一个基本过程,fortran,Fortran,我想将一个基本过程传递给另一个基本过程。最低限度的工作示例可能如下所示: elemental real function func(x, f_dummy) implicit none real, intent(in) :: x interface elemental real function f_dummy(x) real, intent(in) :: x end function f_dummy end

我想将一个基本过程传递给另一个基本过程。最低限度的工作示例可能如下所示:

elemental real function func(x, f_dummy)
    implicit none

    real, intent(in) :: x
    interface
        elemental real function f_dummy(x)
            real, intent(in) :: x
        end function f_dummy
    end interface

    func = 2.0 * f_dummy(x)

    return
end function func
编者说:

Error: Dummy procedure ‘f_dummy’ not allowed in elemental procedure ‘func’ at (1)
如果我删除
elemental
的所有实例,那么它将编译


是否有合法的方法将一个元素过程传递给另一个元素过程?

否,元素过程的参数必须是标量,而不是数组,而不是过程。作为一种解决方法,您可以编写一个处理数组和过程的过程,它只是纯过程,而不是基本过程


基本过程可以是伪参数。但基本过程的参数不能是过程。它可能是一个过程指针,但是当在数组上对其进行元素调用时,您必须传递一个指针数组。

回答得很好,感谢您提出解决方法。下面是,它可能对某些用途有用。。。