Ошибка: неотрицательная ширина требуется в строке формата в (1)
Я пытаюсь скомпилировать кусок кода с помощью 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)
Как я могу скомпилировать это?
2 ответа
Попробуйте изменить формат строки I
в Iw
где w
это положительное число. То же самое с E
, только использовать Ew.d
,
Для объяснения см., Например, эту ссылку: http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/chap05/format.html
Осторожно, хотя: используя, скажем, I3
для выписки 1234 может распечатать ***
, поэтому убедитесь, что ваши форматы достаточно широки.
РЕДАКТИРОВАТЬ: См. Ответ @MSB о том, как избежать проблем с целочисленными форматами.
Как уже ответили, вам нужно указать ширину. Нечто подобное ES14.5 может хорошо работать для формата с плавающей запятой. Существует целое сокращение для целочисленного формата: I0 заставит компилятор использовать необходимое количество цифр.