有问题的代码是:
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
它真的是旧的(坏的)代码,我不是一个强大的程序员。 它给出的错误如下:
Error: Nonnegative width required in format string at (1) pg-util.f:561.26:
它在段中的最后2个写语句中给出错误。
我的问题是如何编写d和k无符号整数以便编译?
答案 0 :(得分:2)
你不能使d和k无符号,因为Fortran没有无符号整数。
我的猜测,假设错误消息中的第561行引用了您发布的代码段中的倒数第二行,问题在于变量格式表达式(&lt; k&gt;事物)。变量格式表达式是标准的扩展,gfortran不支持。有关如何以标准符合方式执行相同操作的示例,请参阅section about variable format expressions in the gfortran manual。