6

gfortran を使用してコードをコンパイルしようとしていますが、次のエラーで失敗しています。

Error: Nonnegative width required in format string at (1)
../src/powmes.f90:410.20:
     write(lunit,'(I,E,E,E)') wavenum(k),power(k),nmodes(k),errorexpan(k)

414   if (filepower_fold(1:1) /= '#') then
415      fileout=trim(filepower_fold)//'.waven'
416      if (verbose) write(*,*) 'Output '//trim(fileout)
417      open(file=fileout,form='formatted',status='unknown',unit=lunit,err=2)
418      do k=0,ngrid/2
419         do ifold=0,nfoldpow-1
420            write(lunit,'(I,$)') waven(k,ifold)
421         enddo
422         write(lunit,'(I)') waven(k,nfoldpow)
423      enddo
424      close(lunit)

これをコンパイルするにはどうすればよいですか?

4

2 に答える 2

10

すでに回答されているように、幅を指定する必要があります。ES14.5 のようなものは、浮動小数点形式でうまく機能する可能性があります。整数形式にはショートカットがあります。I0 を指定すると、コンパイラは必要な桁数を使用します。

于 2012-06-14T18:53:56.760 に答える
8

フォーマット文字列Iを正の数のIw場所に変更してみてください。wと同じですがE、のみ使用してEw.dください。
説明については、たとえば、次のリンクを参照してください: http ://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/chap05/format.html

ただし、注意してください。たとえば、I31234を書き出すために使用すると印刷される可能性が***あるため、フォーマットが十分に広いことを確認してください。

編集:整数形式の問題を回避する方法については、@MSBの回答を参照してください。

于 2012-06-14T18:17:06.637 に答える