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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/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
编译FORTRAN程序的困难_Fortran_Gfortran - Fatal编程技术网

编译FORTRAN程序的困难

编译FORTRAN程序的困难,fortran,gfortran,Fortran,Gfortran,我想使用一些用Fortran编写的光散射代码。我对Matlab非常熟悉,并且自己教C++,但现在FORTRAN给我带来了很多的悲伤。 我刚刚让Photran与Eclipse一起工作,它可以编译(根据Photrans指令使用Cygwin中的Gfortran)我在网上找到的Fortran示例程序 我想在这里开始工作的主要部分是:(注意,它的一半以上似乎只是控制台输出和注释,实际代码非常小) 事实上,我已经用Mathematica编写了一个程序,它已经完成了这些计算,但我觉得这将是一个很好的测试用例,

我想使用一些用Fortran编写的光散射代码。我对Matlab非常熟悉,并且自己教C++,但现在FORTRAN给我带来了很多的悲伤。 我刚刚让Photran与Eclipse一起工作,它可以编译(根据Photrans指令使用Cygwin中的Gfortran)我在网上找到的Fortran示例程序

我想在这里开始工作的主要部分是:(注意,它的一半以上似乎只是控制台输出和注释,实际代码非常小)

事实上,我已经用Mathematica编写了一个程序,它已经完成了这些计算,但我觉得这将是一个很好的测试用例,可以让我的双手在Fortran中变脏,转而使用其他代码。如果有人能给我指出正确的方向来完成这个编译,那就太好了。谢谢

编辑:所以我得到的结果是编译它时只使用了最多(只使用了警告)

第二,我补充说

DO I=1,5
    WRITE (*,*)
END DO
我有3个错误:

一旦我删除了DO,我就可以添加文字和eg

    WRITE (*,*) 'This code calculates cross-efficiencies for'

它将编译并生成.exe。我猜DO给我带来了麻烦

结果是我需要

gfortran -ffixed-line-length-n 
标志,其中n为132,表示我链接的源代码。我有一些其他代码可以进行类似的计算,它在Eclipse的指南中完美地排列,但这一个是解决问题的方法。
谢谢你们让我走上正轨。这是一个更简单的解决方案。您的代码是固定格式的,即 源代码中的代码行是72。您只需要在新行中添加“额外”代码。 如下图所示(第6列中带
的行续)


如果您在这里发布一些代码,以及在尝试编译时遇到的错误,您可能会更幸运。如果您已经有示例Fortran程序正在编译,并且我猜想正在执行,那么是什么阻止了您编译和执行自己的程序?我真的看不出你的问题,你的问题很模糊,不知道你想告诉什么。哦,我当然不会读你指给我们看的代码,我可能会在你的问题中读到相当多的代码。请仔细阅读错误消息。您的编译器实际上只在代码中发现了一个错误(
Symbol'i'at(1)没有隐式类型
),其他两个错误是由此产生的直接后果。@SteveHatcher不删除
隐式无
。相反,在程序/过程/子例程的顶部(具有
DO I=1,5
的顶级程序部分)写入
整数I
声明。如果您使用隐式声明,您将面临各种类型的错误,这些错误类型由于某种原因无法被编译器捕获。是否确实要记住,默认情况下,名称以
A
开头的变量/函数是否具有
REAL
INTEGER
或英文字母表中每个字母的任何类型?删除
隐式无
不会解决任何问题,它允许编译器不向您报告潜在的严重问题。删除
隐式无
只会让事情变得更糟而不是更好。如果您不明白为什么会这样,请转到您的基本Fortran教程,并再次阅读该章。如果您的代码片段应该是您声称的固定形式,为什么在第7列的左侧有部分语句?实际上我没有,当我在web上发布时,它出现了错误。圆点。应该出现在字母R的下面,应该出现在字母W之前的一个空格下面。对不起,不应该出现在字母RI的下面。谢谢。不管怎样,我很高兴我最终成功了。
gfortran -ffixed-line-length-n 
C        1         2         3         4         5         6         7
C23456789012345678901234567890123456789012345678901234567890123456789012
      WRITE (*,*) '(For a single particle size, make it equal to the min 
     .imum value)'
      READ (*,*) kr2 
C Just in case Homer cannot handle it...
      IF((KR+4.0D0*KR**0.33333+2).gt.MSIZE) THEN
      WRITE (*,*) 'Sorry, this value is too high'
      WRITE (*,*) 'Please enter a value smaller than', int(msize-4.0D0*m
     .size**0.33333+2)