のためのネームリスト入力ファイルに%記号の周りに許可されていませんここでのテストコードです:の空白が派生型
program testcase
implicit none
integer :: ios, lu
type derived
integer :: a
end type derived
type (derived) :: d
namelist /test/ d
lu = 3
open (lu, file = 'test.dat', status='old', iostat=ios)
read (lu, nml = test, iostat=ios)
if (ios /= 0) then
write (*, *) 'error!'
else
write (*, *) 'good!', d % a
endif
end program testcase
このプログラムはタイプ派生タイプderived
あるtest
ための名前リストが含まれている入力ファイルtest.dat
を読み込みます。
私はtest.dat
のための次のコンテンツをしようとすると、それが正常に動作します(それがgood! 7
を出力):
&test
d%a = 7
/
は、しかし、次のコンテンツで、私はエラーを取得する:異なる何
&test
d % a = 7
/
Equal sign must follow namelist object name d
は空白です%
派生型のコンポーネントアクセス用の記号。
私はGNU Fortran(gfortran)5.3.0でテストしました。同僚からも、最新のインテルFortranコンパイラで同じ問題が発生したと聞きました。彼はまた、インテルFortranコンパイラの古いバージョンが両方のケースで正常に機能していると主張しました。
この動作は正常ですか?つまり、標準ではネームリスト入力ファイル内の空白文字は%
で、空白文字は%
で、ソースコードでは許可されていますか?
これは、コンパイラや標準ライブラリの実装のバグですか?
インテルFortranコンパイラ(v12.1.3とv16.0.3)がネームリストを正しく読み込むのに対して、 'gfortran' v4.4.7は'% '文字の周囲に空白があるとエラーが発生することが確認できます。 – chw21
私はエラーメッセージを受け取りました。コード5010です。メッセージは「名前ラベルオブジェクト名dに従わなければなりません」 – chw21
@ chw21ありがとうございます。あなたの情報は、このケースを述べているページを見つけるのに役立ちました。 – xylosper