質問
こちらでhttps://teratail.com/questions/qgzkpk01qg6bls#reply-paiao497p4yfhi
昨日も質問させていただいたのですが,
フォートランでバイナリファイルをテキストファイルに変換するプログラムを作っています.
バイナリファイルを出力するプログラムに
fortran
1write(unitflux) ix+jy*numxgrid+kz*numxgrid*numygrid, 21.e12*flux(3,ix,jy,kz,k,kp,nage)/areanorth(ix,jy,kz)/outstep
という部分があるため
fortran
1 program readflux4 2 3 character (len=150) :: outfile, fname 4 real,allocatable, dimension (:,:,:,:,:,:,:) :: flux 5 real,allocatable, dimension (:,:,:) :: areanorth 6 real,allocatable, dimension (:,:,:) :: areaeast 7 8 open (9, file='fluxlist') 910 read (9,'(a)',end=90) fname 10 11 open (10,file=trim(fname),form='unformatted',ACCESS='stream') 12 print*, 'reading ',trim(fname) 13 write (outfile,900) trim(fname) 14 900 format (a,'.dat') 15 16 open (20, file=trim(outfile) ) 17 read (10) 1.e12*flux(:,:,:,:,:,:,:)/areanorth(:,:,:)/outstep 18 write (20,901) 1.e12*flux(:,:,:,:,:,:,:)/areanorth(:,:,:)/outstep 19 901 format (f12.5) 20 21go to 10 2290 close (9) 23 24 end 25
というプログラムを作成してコンパイルしようとしました,がエラーが発生しています.
エラーが発生する原因はread文,write文の引数が数式であるからでしょうか?
それとも別の原因(配列の扱い方が悪いなど)が考えられますか?
何かヒントをいただけたら幸いです.よろしくお願いします.
発生している問題・エラーメッセージ
readflux7.f90:17:15: 17 | read (10) 1.e12*flux(:,:,:,:,:,:,:)/areanorth(:,:,:)/outstep | 1 Error: Expecting variable in READ statement at (1) readflux7.f90:18:27-56: 18 | write (20,901) 1.e12*flux(:,:,:,:,:,:,:)/areanorth(:,:,:)/outstep | 1 2 Error: Inconsistent ranks for operator at (1) and (2)
試したこと
・エラーの内容的にread文の引数が認識されていないことやdimensionの理解ができていないことによるものではないかと思いdimensionについて調べましたが,よくわかりませんでした.
・read文,write文の引数をread (10) 1.e12*flux(:,:,:,:,:,:,:)/areanorth(:,:,:)/outstepという配列・数式ではなく,read(10) flux のみにしたところコンパイルと実行はできました.
しかし,この数式の計算結果を出力したいため困っています.
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2022/12/17 12:40 編集
2022/12/17 13:27