Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将FORTRAN90编写的子程序用于FORTRAN77编写的主程序_Fortran_Fortran90_Fortran77 - Fatal编程技术网

如何将FORTRAN90编写的子程序用于FORTRAN77编写的主程序

如何将FORTRAN90编写的子程序用于FORTRAN77编写的主程序,fortran,fortran90,fortran77,Fortran,Fortran90,Fortran77,我的问题是关于FORTRAN 77和FORTRAN 90的。主程序(program.f77)是用FORTRAN 77编写的。一个子程序是用FORTRAN 90编写的。假设文件名为sub.f90,其中包含子例程。现在我想把这个子程序用于我的主程序。所以我在我的主程序中使用了“include sub.f90”,但它不起作用。我的问题是,有没有办法将sub.f90用于我的主程序(program.f77)?任何帮助都将不胜感激 这是一个Fortran 77文件test.f: PROGRAM test

我的问题是关于FORTRAN 77和FORTRAN 90的。主程序(program.f77)是用FORTRAN 77编写的。一个子程序是用FORTRAN 90编写的。假设文件名为sub.f90,其中包含子例程。现在我想把这个子程序用于我的主程序。所以我在我的主程序中使用了“include sub.f90”,但它不起作用。我的问题是,有没有办法将sub.f90用于我的主程序(program.f77)?任何帮助都将不胜感激

这是一个Fortran 77文件
test.f

PROGRAM test

      integer i
      print*, 'Hello world'
      CALL subr(i)

END PROGRAM test
调用在单独的Fortran 90文件
subr.f90
中描述的子程序
subr

SUBROUTINE subr(i)

      IMPLICIT NONE
      integer, intent(out) :: i

      i=1
      write(*,*) i

END SUBROUTINE subr
只需编译它们并将它们链接在一起:

gfortran-c测试f subr.f90

gfortran-o主测试o子测试o

/主要

输出:

Hello world
1

您似乎在问如何从多个来源构建一个程序。这是相当宽泛的,尤其是当你目前为止给出你的尝试的一点细节时。通常单独编译它们,然后将它们链接在一起应该不会有问题。也许可以给出一些具体的示例来说明您想要做什么,然后我们可以向您展示最好的方法。如果f90代码是作为模块编写的,那么您需要在f90部分中的模块外部有一个例程来调用它,然后从f77调用此例程。