所讨论的代码是:

  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

它确实是旧的(不良)代码,我不是一个fortran程序员。它给出的错误如下:

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

它在该细分市场中的最后2个写语句中给出了错误。

我的问题是如何制作D和K未签名的整数,以便它会编译?

有帮助吗?

解决方案

您不能使D和K未签名,因为Fortran没有未签名的整数。

我的猜测,假设错误消息中的第561行是指您发布的摘要中的次last行,则问题是在变量格式表达式中(u003Ck>事物)。可变格式表达式是Gfortran不支持的标准的扩展。看到 有关GFORTRAN手册中可变格式表达式的部分 例如,如何以标准符合方式做同等的事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top