2011-03-16 62 views
2

問題のコードはこれです:の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つのwrite文でエラーが発生します。

私はdとk符号なし整数をコンパイルするためにどうすればよいですか?

答えて

2

Fortranに符号なし整数がないため、dとkを符号なしにすることはできません。

エラーメッセージの561行目が、投稿したスニペットの最後の2行目を参照しているとすれば、問題は可変形式式(<k>のもの)です。可変フォーマット式は、gfortranでサポートされていない標準への拡張です。同等のことを標準的な方法で行う方法の例は、section about variable format expressions in the gfortran manualを参照してください。

+0

行を削除し、を30にハードコードしました。コンパイルできるようになりました。それを行うことによる悪影響があるかどうかがわかります。 –

関連する問題