Pregunta

El código en cuestión es este:

  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 un código (malo) realmente antiguo, y no soy un programador de Fortran. El error que da es el siguiente:

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

Da errores en las últimas 2 declaraciones de escritura en el segmento.

Mi pregunta es ¿cómo hago D y K Unsigned Integers para que se compilará?

¿Fue útil?

Solución

No puedes hacer D y K sin firmar ya que Fortran no tiene enteros sin firmar.

Supongo que, supongo que la línea 561 en el mensaje de error se refiere a la siguiente línea en el fragmento que publicó, es que el problema está en la expresión de formato variable (la expresión (la expresiónu003Ck> cosa). Las expresiones de formato variable son una extensión del estándar que no es compatible con GFORTRAN. Ver el Sección sobre expresiones de formato variable en el manual de GFORTRAN Para un ejemplo de cómo hacer lo equivalente de una manera estándar conforme.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top