gfortranエラー:(1)の形式文字列に必要な非陰性幅
質問
問題のコードはこれです:
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を符号なし整数にしてコンパイルするかということです。
解決
Fortranには署名されていない整数がないため、DとKを符号なしで作成することはできません。
私の推測では、エラーメッセージの561行があなたが投稿したスニペットの次の最後の行を指していると仮定すると、問題は変数形式式(u003Ck>もの)。変数形式式は、GFORTRANによってサポートされていない標準の拡張です。を参照してください GFORTRANマニュアルの可変形式式に関するセクション 例として、標準的な適合方法で同等のことを行う方法。
所属していません StackOverflow