Bob 发表于 2019-12-10 22:21:47

子程序内是否可以定义函数

请教大家,下面这段代码里面的d0(),d1()以及d2()是三个函数吗?这段代码在pgf90编译器上是可以编译通过的,但是在inter Fortran上编译通不过
function ppvalw (coef, x, jd )
   
      implicit integer*4 (i-n), real*8 (a-h, o-z)
      real*8 ppvalw,x
      dimension coef(4)


      d2(xx) = coef(4)*xx + coef(3)
      d1(xx) = (coef(4)*xx/2. + coef(3))*xx + coef(2)
      d0(xx) = ((coef(4)*xx/3. + coef(3))*xx/2. +
   .         coef(2))*xx + coef(1)

      goto (1,2,3) jd+1
      ppvalw = 0.
      print *, 'Error (ppvalw): JD must be 0, 1, or 2.'
      print *, 'Execution terminated.'
      return
1    ppvalw = d0(x)        ! k = 4 , jd = 0
      return
2    ppvalw = d1(x)        ! k = 4 , jd = 1
      return
3    ppvalw = d2(x)        ! k = 4 , jd = 2
      return
      end

necrohan 发表于 2019-12-11 09:15:50

语句函数可以在子程序内定义,看着像,不熟悉这种用法

青衣巷 发表于 2019-12-11 09:25:36

语句函数,已经废止了的用法。
但是intel fortran还是支持的。你的代码我用intel成功编译的。

记住,出错要给错误提示。

Bob 发表于 2019-12-15 19:44:32

青衣巷 发表于 2019-12-11 09:25
语句函数,已经废止了的用法。
但是intel fortran还是支持的。你的代码我用intel成功编译的。



嗯嗯,好的,下次一定给出错误提示!

Bob 发表于 2019-12-15 19:45:32

necrohan 发表于 2019-12-11 09:15
语句函数可以在子程序内定义,看着像,不熟悉这种用法

谢谢,知道了!
页: [1]
查看完整版本: 子程序内是否可以定义函数