Compilation 应为括号错误gfortran

Compilation 应为括号错误gfortran,compilation,fortran,gfortran,parentheses,Compilation,Fortran,Gfortran,Parentheses,我正在尝试使用gfortran v.4.8.2编译一些fortran代码。 编译时,会出现以下错误: ant_driver.f90:185.72: if (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns) 1 Error: Syntax error in IF-expression at (1) ant_

我正在尝试使用gfortran v.4.8.2编译一些fortran代码。 编译时,会出现以下错误:

ant_driver.f90:185.72:

 if (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns)
                                                                    1
Error: Syntax error in IF-expression at (1)
ant_driver.f90:187.119:

ry%thck(ew,ns) = -rhoo/rhoi * (model%geometry%topg(ew,ns)-   model%climate%eus(ew,
                                                                       1
Error: Expected a right parenthesis in expression at (1)
ant_driver.f90:188.27:


endif
                           1
Error: Expecting END DO statement at (1)
ant_driver.f90:248.82:

odel%geometry%usrf(ew,ns) = - (model%geometry%topg(ew,ns)-model%climate%eus(ew,
                                                                       1
Error: Expected a right parenthesis in expression at (1)
ant_driver.f90:260.107:

model%geometry%usrf(ew,ns) - (model%geometry%topg(ew,ns)-model%climate%eus(ew,
                                                                       1
Error: Expected a right parenthesis in expression at (1)
ant_driver.f90:174.30:

 call glide_set_eus(model,eus)
                     1
Error: Rank mismatch in argument 'inarray' at (1) (scalar and rank-2)
错误与以下代码行有关: 185-188:

260:

174:


非常感谢您的帮助。谢谢您的时间。

您的错误是由于行截断造成的。对于固定格式Fortran,指定的行长为72个字符,而对于自由格式Fortran,则应为132个字符。由于扩展名
.f90
的缘故,源代码应该被解释为自由格式,但您可以使用
-ffree form
在gfortran中强制自由格式。您还可以分别使用选项
-ffix-line-length-n
-ffree-line-length-n
更改固定格式和自由格式源中的最大行长,其中
n
0
none
的字符数和值表示无限行长度。

您的错误是由于行截断造成的。对于固定格式Fortran,指定的行长为72个字符,而对于自由格式Fortran,则应为132个字符。由于扩展名
.f90
的缘故,源代码应该被解释为自由格式,但您可以使用
-ffree form
在gfortran中强制自由格式。您还可以分别使用选项
-ffix-line-length-n
-ffree-line-length-n
更改固定格式和自由格式源中的最大行长,其中
n
0
none
的字符数和值意味着无限行长度。

看到错误消息:ant_driver.f90:185.72看起来您的自由格式代码被视为固定格式代码,在位置72后被截断,因此丢失了行的其余部分。请参阅编译器的文档,了解如何启用“自由格式”选项。请参阅错误消息:ant_driver.f90:185.72您的自由格式代码似乎被视为固定格式代码,并在位置72后被截断,因此缺少该行的其余部分。请参阅编译器的文档,了解如何启用自由格式选项。谢谢,但即使启用了-ffree-form选项或-free-line-length选项,我也会遇到同样的错误。我链接的任何库或目录中的代码是否也必须具有自由格式?谢谢你提前给我时间。谢谢你这么做,但是即使启用了-ffree-form选项或-free-line-length,我也会遇到同样的错误。我链接的任何库或目录中的代码也必须要有-free-form吗?提前感谢您的光临。
if (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns) < 0 .and.    model%geometry%thck(ew,ns) == 0 .and. &
                        mask(ew,ns) == 1) then
                            model%geometry%thck(ew,ns) = -rhoo/rhoi * (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns))
                    endif
model%geometry%usrf(ew,ns) = - (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns)) * rhoo/rhoi &
                                             + (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns))
model%geometry%thck(ew,ns) = model%geometry%usrf(ew,ns) - (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns))
call glide_set_eus(model,eus)