program enshu06d2
  implicit none
  integer :: seireki,tsuki,joutai,bangou,kosuu
  real,dimension(1800) :: kion1retsu,kion1retsu_lowpass
  real :: souwa
  integer :: mado_haba_half,bangou_hajime,bangou_owari,souwa_no_kosuu,i
  kosuu = 0
  do
     read(*,'(2i5,i2.2,f6.1)',iostat=joutai)bangou,seireki,tsuki, &
          kion1retsu(bangou)
     if (joutai /= 0) exit
     kosuu = kosuu + 1
  end do
  mado_haba_half = 6 ! 移動平均をとる自分の前後のデータの数
  do bangou = 1,kosuu
     bangou_hajime &                         ! 和をとるデータの最初の番号
          = max(bangou-mado_haba_half,    1) ! 必ず     1 以上でなければならない
     bangou_owari &                          ! 和をとるデータの最後の番号は
          = min(bangou+mado_haba_half,kosuu) ! 必ず kosuu 以下でなければならない
     souwa_no_kosuu = bangou_owari-bangou_hajime+1 ! 和をとるデータの総数
     souwa = 0.0
     do i = bangou_hajime,bangou_owari ! この範囲にあるデータの総和を計算
        souwa = souwa + kion1retsu(i)
     end do
     kion1retsu_lowpass(bangou) = souwa/real(souwa_no_kosuu) ! これが移動平均
     write(*,'(i4,2f6.2)')bangou,kion1retsu(bangou),kion1retsu_lowpass(bangou)
  end do
end program enshu06d2