0

これは簡単なはずです。私の read ステートメントに構文エラーがある理由がわかりません。7477 行の長さのファイルがあり、フォーマットが指定するように、これらの各変数を各行に対応させたいと考えています。ここで何か助けていただければ幸いです。ありがとう!

implicit none

integer :: spe, flen = 7477, i
real, dimension (7477)::  wnum,s,A,abh
character :: other
integer :: lun = 11

write(*,*) 'Opening File!'
open(lun,file ='h2o_allbands',status = 'old',action ='read')
write(*,*) 'Success!'


17 format (1x,i2,3x,F9.6,1x,E9.3,1x,E9.3,F5.5,A120)

do i = 1, 7477
   read(lun,17) spe(i),wnum(i),s(i),A(i),abh(i),other
   write(*,*) wnum(i)
 end do
4

2 に答える 2

1

読み取りはspe(i)、入力リスト項目として持っています。 speは配列として宣言されていないため、コンパイラはおそらくspe(i)整数関数への参照と見なします。単純な整数関数の結果を「読み取る」ことはできません。

おそらくspe、配列として宣言する必要がありますか?

于 2013-02-17T22:04:32.473 に答える
0

入力ファイルの行を見ないと、正確な問題が何であるかを判断するのは困難です: ただし:

  • まず、エンティティを読み取るformatときにステートメントを使用しないでください(特別な場合を除きます)。何らかの理由で行が適切にフォーマットされていない場合、さまざまなエラーが発生する可能性があります。したがって、読み取り行を次のように置き換えます。

    read(lun,*) spe(i), wnum(i), s(i), A(i), abh(i), other
    
  • すべての行が最後の行から離れて読み込まれている場合は、最後の行の最後に改行があることを確認してください。

于 2013-02-17T07:12:32.317 に答える