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à?

È stato utile?

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 cosa). espressioni di formato variabile è un'estensione dello standard che non è supportato da gfortran. Vedere la sezione sulle espressioni di formato variabile nel manuale gfortran per un ad esempio come fare la cosa equivalente in modo conforme standard.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top