Fortran编译错误

时间:2014-05-12 18:09:30

标签: fortran gfortran

我正在尝试编译一些Fortran代码,我收到以下错误,

WRITE(1,FMT='(A,I)') ' ncoefs= ',NFOUR  
                1
Error: Nonnegative width required in format string at (1)

WRITE(1,FMT='(A,100(F4.1,","))') ' spabnd= ',(SPABND(I),I=1,NLYR+1
                                                       1
Error: Expected a right parenthesis in expression at (1)

关于第二个错误的奇怪之处在于,在实际代码中,我在此表达式的末尾有一个括号,即(SPABND(I),I=1,NLYR+1)就是它的样子。

2 个答案:

答案 0 :(得分:3)

第一个是自我解释,使用I0或一些正数来设置字段宽度。这是将用于写入变量的字符数。宽度0表示将使用拟合值所需的最小数量。可以保留A描述符。在Fortran 2008 g0也有效。

在另一种情况下,您似乎超过了最大行长度。固定格式为72个字符,自由格式为132个字符。尝试分割线并根据源格式使用正确的线延续。

答案 1 :(得分:1)

第二个代码片段可以更简洁地编写为

WRITE(1,FMT='(A,100(F4.1,","))') ' spabnd= ',SPABND(1:NLYR+1)

WRITE(1,FMT='(A,100(F4.1,","))') ' spabnd= ',SPABND(:NLYR+1)

如果下限或数组SPABND为1,则通常是Fortran中的情况。正如Vladimir F写的那样,代码的问题可能与行长度有关,但使用更简洁的习语是避免此类错误的一种方法。