2017-12-28 21 views
1

私のコードは以下の書かれています:エラー:FORMAT文の中で行方不明カンマは

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と思う。

+2

を試してください '( 'T('、I2、 ')='、F8.4)'ラベル付きフォーマットが無効であるため、2番目のエラーはちょうど続きます – agentp

+0

ありがとうございます!それは機能しましたが、結果はゼロに過ぎませんか? – Bay

+0

'j'は決して初期化されません。 'j = j + 3'の代わりに' j = 3'を試してください – agentp

答えて

0

ありがとう、私はちょうど解決策を見つけました!

コードは次のとおりです。

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) 
とフォーマット仕様を交換する、分かるよう

+1

答えとして投稿したので、 'j'の初期化についての私のコメントを参照してください。 – agentp

0

。私はもっ​​と一般的に答えます。

フォーマット仕様では、各アイテムが編集記述子または(再帰的に)フォーマット項目の括弧内のリストである複数のフォーマット項目で構成することができます。

各フォーマット項目をカンマで区切る必要があります。問題の形式では、編集記述子は'T(',I2および')='です。 [最初と最後は文字列編集記述子で、2番目はデータ編集記述子です。] 2つの対の間のカンマは省略できません。 Fortranの2008標準から

は、コンマは次のような場合にのみ、省略することが許可されている: P編集記述子と直後の FEENESD、または G

  • 可能であればリピート指定が続く編集記述子。
  • スラッシュ編集記述子の前に、オプションの繰り返し指定が表示されない場合。
  • スラッシュ編集記述子の後。コロン編集記述子の前または後に

もちろん、そのようなカンマが省略されている可能性があるというわけではありません。オプションのコンマをプレゼントすることは決して痛くない。 (コンパイラは、このような不遵守を検出することができなければなりませんが)さらに

は、コンパイラのメッセージにより示唆されるように、コンパイラは、準拠したプログラムがそれらを持っている必要があります場合でも、カンマがないことを受け入れることを選択することもできます。個人的な陳述として、私はそのような非標準的な執筆を避けるよう勧めます。


でも修正フォーマットの仕様で、コメントで指摘したように、プログラムがまだ有効ではありません。jj=j+3が最初に定義されたが許可されていません。

関連する問題