gfortran Erreur: largeur non négatifs nécessaire dans la chaîne de format à (1)
Question
Le code en question est la suivante:
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
Il est le code vraiment vieux (de mauvais), et je ne suis pas un programmeur Fortran. L'erreur donne est le suivant:
Error: Nonnegative width required in format string at (1) pg-util.f:561.26:
Il donne des erreurs sur les 2 dernières déclarations d'écriture dans le segment.
Ma question est de savoir comment puis-je faire d et k entiers non signés compilera donc?
La solution
Vous ne pouvez pas faire d et k non signé depuis Fortran n'a pas des entiers non signés.
Je pense, en supposant que la ligne 561 dans le message d'erreur fait référence à l'autre à la dernière ligne dans l'extrait que vous avez publié, est que le problème est dans l'expression de format variable (la chose