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
Fortran 错误:FORMAT语句中缺少逗号_Fortran_Gfortran_Fortran77 - Fatal编程技术网

Fortran 错误:FORMAT语句中缺少逗号

Fortran 错误:FORMAT语句中缺少逗号,fortran,gfortran,fortran77,Fortran,Gfortran,Fortran77,我的代码写在下面: DIMENSION T(10) DATA A,B /9.,5./ IS=1 J=J+3 T(j-2)=A T(J-1)=A-B 80 T(J)=T(1)+T(J-1) J=J+1 IF(J.NE.10) GOTO 80 DO I=1,5 WRITE (*,15) I, T(J) END DO 15 FORMAT ('T('I2')=', F8.4) STOP END jdoodle.f95:13:16: 15 FORMAT ('T('IS')=', F8.4)

我的代码写在下面:

DIMENSION T(10)
DATA A,B /9.,5./
IS=1
J=J+3
T(j-2)=A
T(J-1)=A-B
80 T(J)=T(1)+T(J-1)
J=J+1
IF(J.NE.10) GOTO 80
DO I=1,5
WRITE (*,15) I, T(J)
END DO
15 FORMAT ('T('I2')=', F8.4)
STOP
END
jdoodle.f95:13:16:

 15 FORMAT ('T('IS')=', F8.4)
                1
Error: GNU Extension: Missing comma at (1)
jdoodle.f95:11:20:

 WRITE (*,15) I, T(J)
                    1
Error: FORMAT label 15 at (1) not defined
我的编译错误写在下面:

DIMENSION T(10)
DATA A,B /9.,5./
IS=1
J=J+3
T(j-2)=A
T(J-1)=A-B
80 T(J)=T(1)+T(J-1)
J=J+1
IF(J.NE.10) GOTO 80
DO I=1,5
WRITE (*,15) I, T(J)
END DO
15 FORMAT ('T('I2')=', F8.4)
STOP
END
jdoodle.f95:13:16:

 15 FORMAT ('T('IS')=', F8.4)
                1
Error: GNU Extension: Missing comma at (1)
jdoodle.f95:11:20:

 WRITE (*,15) I, T(J)
                    1
Error: FORMAT label 15 at (1) not defined

你能告诉我我的Fortran代码的错误陈述在哪里吗?结果一定是T(1)=nnn.0nnn,我想。

非常感谢,我刚刚找到了一个解决方案

代码是:

DIMENSION T(10)
DATA A,B /9.,5./
IS=1
J=J+3
T(J-2)=A
T(J-1)=A-B
80 T(J)=T(1)+T(J-1)
J=J+1
IF(J.NE.10) GOTO 80
DO I=1,5
WRITE (*,15) I, T(I)
END DO
15 FORMAT ('T(',I2,')=',F8.4)
STOP
END    
结果是:

T( 1)=  9.0000
T( 2)=  4.0000
T( 3)= 13.0000
T( 4)= 22.0000
T( 5)= 31.0000

谢谢。

如图所示,将格式规范替换为

15 FORMAT ('T(',I2,')=',F8.4)
停止编译器的抱怨。我现在将更笼统地回答

格式规范可以由多个格式项组成,其中每个项都是编辑描述符或(递归地)带括号的格式项列表

通常需要用逗号分隔每个格式项。在问题的格式中,编辑描述符是
'T('
I2
')='
。[第一个和最后一个是字符串编辑描述符,第二个是数据编辑描述符。]两对之间不允许省略逗号

根据Fortran 2008标准,只有在以下情况下才允许省略逗号:

  • P
    编辑描述符和紧随其后的
    F
    E
    EN
    ES
    D
    G
    编辑描述符之间,前面可能有重复规范
  • 当可选重复规范未出现时,在斜杠编辑描述符之前
  • 在斜杠编辑描述符之后
  • 在冒号编辑描述符之前或之后
当然,仅仅因为这些逗号可以省略,并不意味着它们应该被省略。有一个可选的逗号礼物从来没有伤害

此外,正如编译器的消息所建议的,即使兼容程序必须有逗号,编译器也可以选择接受没有逗号的情况(尽管编译器必须能够检测到这种不兼容)。作为个人声明,我建议避免这种非标准的写作



正如评论中所指出的,即使使用了正确的格式规范,程序仍然无效:在第一次定义
j
之前,不允许有
j=j+3

尝试
('T(',I2',)=',F8.4)
第二个错误就在后面,因为标记的格式无效。非常感谢!它工作了,但结果只有零???
j
从未初始化。尝试
j=3
而不是
j=j+3
如果这是你的新学习代码,我强烈建议你从本世纪学到一些东西。比如说Fortran 95或者更近的版本。代码中的样式很难阅读,根本不值得推荐。因为您是作为答案发布的,请参阅我关于初始化
j
的评论。如果您更改编译器,这将对您不利。