2

次のような形式のテキスト ファイルがあります。

1  2 
3  4  5
6  7    

多くの行についても同様です。

この fortran プログラムを実行します。

i=1
tt=1
do while(.true.)
  read(unit=1,*,IOSTAT=status) lon(i,tt),lat(i,tt),h(i,tt)
  i=i+1
  if(status/=0)exit
enddo

lon同じ行の 3 つの数字を, lat,に割り当てたいですh。ただし、最初の行には 3 番目の要素がないため、プログラムは 2 行目の最初の要素 (つまり、3 から h(i,tt)) を読み取りますが、それは私が望んでいるものではありません。一部の行で h(i,tt) を欠損値に設定たい

これどうやってするの?

4

1 に答える 1

1

特定の例では、次のようなことを試すことができます。

program test

  integer :: status, i, tt
  character(len=100) :: line
  integer :: lon(3, 1), lat(3, 1), h(3, 1)

  lon(:, :) = 0
  lat(:, :) = 0
  h(:, :) = 0

  open(unit=1, file='data.txt')
  i=1
  tt=1
  do

     read(1, '(A100)', iostat=status) line
     if(status/=0) exit

     read(line, *, iostat=status) lon(i, tt), lat(i, tt), h(i, tt)

     if(status/=0) then
        read(line, *) lon(i, tt), lat(i, tt)
        h(i, tt) = 1  ! default value
     end if

     i = i + 1

  end do

  print *, 'lon=', lon
  print *, 'lat=', lat
  print *, 'h=', h

end program test

返す

lon=           1           3           6
lat=           2           4           7
h=           1           5           1
于 2012-07-27T18:37:14.977 に答える