Frage

Der fragliche Code ist Folgendes:

  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

Es ist wirklich alter (schlechter) Code und ich bin kein Fortran -Programmierer. Der Fehler, den es gibt, lautet wie folgt:

Error: Nonnegative width required in format string at (1) pg-util.f:561.26:

Es gibt Fehler in den letzten 2 Schreibanweisungen im Segment.

Meine Frage ist, wie ich D und K unsignierte Ganzzahlen mache, damit es kompiliert wird.

War es hilfreich?

Lösung

Sie können D und K nicht unsigniert machen, da Forran keine nicht signierten Ganzzahlen hat.

Meine Vermutung, vorausgesetzt, Zeile 561 in der Fehlermeldung bezieht sich auf die vorletzte Linie im von Ihnen veröffentlichten Snippet, dass sich das Problem im Ausdruck des variablen Formats befindet (der Ausdruck (deru003Ck> Ding). Ausdrücke mit variabler Format sind eine Erweiterung des Standards, der von GFortran nicht unterstützt wird. Siehe das Abschnitt über Ausdrücke von Variablenformat im GFortran -Handbuch Zum Beispiel, wie man das Äquivalent auf Standard -Konformen macht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top