Errore gfortran: larghezza non negativo necessaria stringa di formato in (1)
Domanda
Il codice in questione è questo:
subroutine PG_TLab_Write(c30,r,d)
implicit none
character*30 c30,leftjust
real*4 r
integer*4 d,k
if (d.eq.0) then
write(c30,'(i30)') nint(r)
elseif (d.gt.0) then
write(c30,'(f30.<d>)') r
else
k = abs(d)
write(c30,'(1pe30.<k>') r
endif
c30 = leftjust(c30)
if (d.lt.0) then
k = index(c30,'E')
c30 = c30(1:k-1)//'x10\\u'//c30(k+1:24)
endif
return
end
E 'molto vecchio codice (cattivo), e io non sono un programmatore FORTRAN. L'errore che dà è la seguente:
Error: Nonnegative width required in format string at (1) pg-util.f:561.26:
Si dà errori sugli ultimi 2 dichiarazioni di scrittura nel segmento.
La mia domanda è come faccio a fare D e K interi senza segno in modo che compilerà?
Soluzione
Non è possibile effettuare D e K non firmato dal Fortran non ha interi senza segno.
La mia ipotesi, partendo dal presupposto che la linea 561 nel messaggio di errore si riferisce alla riga successiva per durare nel frammento che hai postato, è che il problema è nell'espressione di formato variabile (il