- ベストアンサー
フォーマット指定方法についての質問
- FORTRAN90でファイル出力をフォーマット付きで行いたい場合、どのようにフォーマット指定を行えば良いのかについて質問しています。
- 具体的な例として、character変数の文字にフォーマット指定の文字列を指定し、六つの実数を横一列に書き出す方法を知りたいとしています。
- また、特定の部分を自動的に変える方法についても質問しています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>write(char,"(A,I1,A)")"'(",imax,"D13.5)'" write(char,"(A,I1,A)")"(",imax,"D13.5)" では? 質問文にも ' が入ってたようですね。フォントのせいで目立たず、見えませんでした。 何故 ' を書いたんでしょう?
その他の回答 (3)
- notnot
- ベストアンサー率47% (4900/10359)
>状況といいますとどういったことになるのでしょうか。 お書きのプログラムを実行しようとしたときにどういう結果になったかということが全く書かれていません。望みの結果でなかったことだけはわかりますが。 xxxxx というコンパイルエラーメッセージが出たとか、実行時にコアダンプしたとか、そういったことが状況です。 あと、質問に書いているのはプログラムの断片だけでこれだけでは正しいとも間違っているとも判断できません。補足の4行のあとに質問の2行を書いてendを書いたものが全プログラムでしょうか?
補足
ご面倒をおかけしますm(__)m 念のためテストプログラムを書きました。 program test integer :: i,imax parameter(imax=3) real :: x(imax) character(LEN=40) :: char open(10,file="test.dat") write(char,"(A,I1,A)")"'(",imax,"D13.5)'" x(1) = 1.0 x(2) = 1.0 x(3) = 1.0 write(10,char)(x(i),i=1,imax) stop end program test これで出るエラーは forrtl: info (58): format syntax error at or near '(3D13.5)' forrtl: severe (62): syntax error in format, unit 10, file test.dat です。コアファイルなどは出てませんでした。 なんなんでしょう。。。?
- notnot
- ベストアンサー率47% (4900/10359)
良く使われる手段で何の問題も無いと思います。 うまく行かないのはどこかに誤りがあるためでしょう。 状況が全く示されていないのでこれ以上は何も言えません。
補足
ご回答ありがとうございます。 状況といいますとどういったことになるのでしょうか。 文字の定義は、 character(LEN=40) :: char integer :: Int real :: x,y,z,w,s,t プログラムは単純に Int = 6 とし、質問の操作をするだけのものです。 コンパイラはintel ifort OSはLinuxです。 他に必要な状況があればお願いします。
- chimi_yamada
- ベストアンサー率21% (45/213)
あなたコンパイラをインタプリタと思っていませんか?
お礼
手動でフォーマットを指定するときは"(3D13.5)"のように書くので charに文字を入れる時も''を付けてしまってました。 ご教授頂いた方法でできました。 ありがとうございます。