ヘッダー行を読み飛ばす

#で始まる行をヘッダー行(コメント)とみなして読み飛ばすためのプログラムです。

プログラム例

!Skip header lines
  nh=0
  count_header: do
    read(10,'(A)')strm
    if(strm(1:1) == "#")then
      nh=nh+1
    else
      exit
    endif
  enddo count_header
  rewind(10)
  do i=1,nh; read(10,*); enddo
  print '(A,i6)','# of header lines= ',nh

上のプログラムは、以下のファイル例で青字の部分を読み飛ばします。

# Date and time: 09/14/2011 at 15:00:53 -09:00
# hostname: aofd30
# cwd: /work2/am/12.Work11/22.Climatology_2/43.SW_penetration
# user: am
# program name: ./sw_penetration
# imcut=   191
# jmcut=   261
#  do i=1,imcut
#    do j=1,jmcut
# coef=   0.4086E+07
# cr%xlon1(i,j),cr%ylat1(i,j),term%tnd(i,j),rhs(i,j),term%adv(i,j),wtsurf_KS(i,j),swrad_KS(i,j)
  117.041664  20.791668  0.547623E-06 -0.999900E+03 -0.999900E+03  0.185913E-05  0.318956E-05
  117.125000  20.791668  0.528153E-06 -0.999900E+03 -0.999900E+03  0.180169E-05  0.315518E-05
  117.208336  20.791668  0.512024E-06 -0.999900E+03 -0.999900E+03  0.174838E-05  0.311164E-05
  117.291664  20.791668  0.500593E-06 -0.999900E+03 -0.999900E+03  0.174222E-05  0.308037E-05

Fortran 77バージョン

      character strm*500
      nh=0
100   read(10,'(A)')strm
      if(strm(1:1) .eq. "#")then
        nh=nh+1
        goto 100
      endif
      rewind(10)
      do i=1,nh
        read(10,*)
      enddo

参考にしたWebsite

http://www.nag-j.co.jp/fortran/FI_9.html

http://www.astro.phys.s.chiba-u.ac.jp/~aplab-user/cgi-bin/wiki3_6_0/wiki.cgi?page=fortran%A4%CE%B4%F0%C1%C3%A3%B2#p21