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?

Était-ce utile?

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 ). expressions de format variable est une extension de la norme qui est pas pris en charge par gfortran. Voir la section sur les expressions de format variable dans le manuel gfortran pour une par exemple comment faire la chose équivalente d'une manière standard conforme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top