编译FORTRAN程序的困难

时间:2013-11-04 16:21:21

标签: fortran gfortran

我想使用Fortran编写的一些光散射代码。我非常熟悉MATLAB并自学C ++,但是现在Fortran给我带来了很多悲伤。

我让Photran使用Eclipse并且它正在编译(根据Photrans指令使用Cygwin的Gfortran)我在网上找到的Fortran程序示例。

我想要使用的主要功能是:http://www.ugr.es/~aquiran/ciencia/codigos/homer.f(注意,其中一半以上只是控制台输出和注释,实际代码非常小)。

我实际上已经在Mathematica中编写了一个程序,它已经完成了这些计算,但我觉得在Fortran中弄脏并转移到其他代码是一个很好的测试用例。如果有人能指出我正确的方向来进行这种编译会很棒。谢谢。

编辑:所以我得到的就是用最多(只是警告)

来编译它
OPEN (1,FILE='q.dat')

第二个我添加

DO I=1,5
    WRITE (*,*)
END DO

我得到3个错误:

Fortran errors

一旦我删除DO,我就可以添加写作,例如。

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

它将编译并生成.exe。我猜DO正在给我一个问题。

2 个答案:

答案 0 :(得分:0)

原来我需要

gfortran -ffixed-line-length-n 

标志,对于我链接的源代码,n为132。我有一些其他的代码可以进行类似的计算工作,它在Eclipse的指南行中完美排列,但是这个代码已经解决了。 谢谢你让我走上了正确的道路。

答案 1 :(得分:0)

这是一个更简单的解决方案。您的代码是固定格式,即最大长度 源代码中的代码行是72.您只需要在新行中添加“额外”代码。 它显示如下(第6列的.行继续)

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)