! Bu program istadi, ist no, yil, gun ve 12 ay verisi seklinde devam eden ve pes pese yıllar ve
! farklı istasyon verilerini okuyup istenilen islemi yapmak için yazılmıstır. Hüseyin Toros 29.2.2008
program tarihbulverisuz_hepsi
   character(len=30)::istadi,s1,doku,doku1,doku2,dyaz,dyaz1
   integer::i,j,k,m,n,istno,pcano,yil,gun,ios,adet,gun2,ay2,yil2
  character(len=10)::enl,boy,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12
! veriler icindeki bo degerlerin 0 olmaması icin veriler karater biviminde okutuldu

! seçilmis tarihlerin bulundugu dosya ve yazılacak dosyaların ilk 3 harfi
doku="aut"  ! Incelenecek mevsim
pcano=12    ! Yaz (sum) icin 16 diger mevsimler icin 12 olacaktir

do n=1,4 ! Mevsim hesaplari icin kullanilan dongu
select case(n)
          case(1)
             doku="aut"
          case(2)
             doku="win"
          case(3)
             doku="spr"
          case(4)
          doku="sum"
   end select



do k=4,4,2 ! min, ort, mak sicaklik ve yagis verileri icin kullanilan dongu

   select case(k)
          case(1)
          dyaz="min"
          doku2="gunmin_ano.dat"

          case(2)
          dyaz="ort"
          doku2="gunort_ano.dat"

          case(3)
          dyaz="mak"
          doku2="gunmak_ano.dat"

          case(4)
          dyaz="yag"
          doku2="gunyag.dat"
   end select

!PCA analiz sonuclari elde edilen gunlerin barindigi dosyalar icin dongu
!pcano yaz icin 16, diger aylar icin 12 alinacak
   do j=1,pcano
      select case (j)
           case(1)
           doku1=trim(doku)//"tar11.dat"
           dyaz1=trim(doku)//trim(dyaz)//"11.dat"

           case(2)
           doku1=trim(doku)//"tar12.dat"
           dyaz1=trim(doku)//trim(dyaz)//"12.dat"

           case(3)
           doku1=trim(doku)//"tar13.dat"
           dyaz1=trim(doku)//trim(dyaz)//"13.dat"

           case(4)
           doku1=trim(doku)//"tar14.dat"
           dyaz1=trim(doku)//trim(dyaz)//"14.dat"

           case(5)
           doku1=trim(doku)//"tar15.dat"
           dyaz1=trim(doku)//trim(dyaz)//"15.dat"

           case(6)
           doku1=trim(doku)//"tar16.dat"
           dyaz1=trim(doku)//trim(dyaz)//"16.dat"

           case(7)
           doku1=trim(doku)//"tar21.dat"
           dyaz1=trim(doku)//trim(dyaz)//"21.dat"

           case(8)
           doku1=trim(doku)//"tar22.dat"
           dyaz1=trim(doku)//trim(dyaz)//"22.dat"

           case(9)
           doku1=trim(doku)//"tar23.dat"
           dyaz1=trim(doku)//trim(dyaz)//"23.dat"

           case(10)
           doku1=trim(doku)//"tar24.dat"
           dyaz1=trim(doku)//trim(dyaz)//"24.dat"

           case(11)
           doku1=trim(doku)//"tar25.dat"
           dyaz1=trim(doku)//trim(dyaz)//"25.dat"

           case(12)
           doku1=trim(doku)//"tar26.dat"
           dyaz1=trim(doku)//trim(dyaz)//"26.dat"
           case(13)
               doku1=trim(doku)//"tar17.dat"
               dyaz1=trim(doku)//trim(dyaz)//"17.dat"

           case(14)
               doku1=trim(doku)//"tar18.dat"
               dyaz1=trim(doku)//trim(dyaz)//"18.dat"

           case(15)
               doku1=trim(doku)//"tar27.dat"
               dyaz1=trim(doku)//trim(dyaz)//"27.dat"

           case(16)
               doku1=trim(doku)//"tar28.dat"
               dyaz1=trim(doku)//trim(dyaz)//"28.dat"

          case default
           print*," Dosya adinda HATA VAR"
           stop
   end select


!Yukarida secilen dosya icindeki kullanilacak tarihler sayisi

    open(unit=3,file=doku1,status="old",action="read")
    print*,"Lutfen Bekleyiniz"

adet=0

  do !seçilmis kaç adet tarih oldugu sayılıyor
     read(unit=3,fmt=*,iostat=ios)yil2,ay2,gun2
     if (ios<0) then
          exit
      else
          adet=adet+1
     end if
  end do
  close(unit=3)! tarih dosyasi kapatildi, sonra tarihleri okumak icin tekrar acilaca

      open(unit=3,file=doku1,status="old",action="read")
      print*,"Okunan dosyalar  :",doku1,doku2
      print*,"Yazilan dosyalar :",dyaz1
      print*,"Gun sayisi       :",adet
      print*,"------------------------------"
      print*,"Gun    Ay     Yil     Sira/Toplam okunacak veri"
! seçilmis tarihlere uyan günlerdeki istasyon verilerinin yazılacagı dosyalar
   open(unit=4,file=dyaz1,status="unknown",action="write")


  do i=1,adet
          read(unit=3,fmt=*,iostat=ios)yil2,ay2,gun2
          write(unit=*,fmt="(4i5,a,i3)")gun2,ay2,yil2,i,"/",adet
          !secilen tarihlerin verisini alinacak dosyalar
          open(unit=5,file=doku2,status="old",action="read")
   do 
   read(unit=5,fmt="(3a10,2i10,12a10)",iostat=ios)istadi,enl,boy,yil,gun,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12
         if (ios<0) then
           exit
       end if
       if (gun2==gun .and. yil2==yil) then
            ! print*,istadi,enl,boy,yil,gun,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12
          
       !Secilmis gun hangi aya ait ise o veriyi yazacak bolum
        select   case(ay2)
           case(1)
             write(unit=4,fmt="(3a10,2i10,a10)",iostat=ios)istadi,enl,boy,yil,gun,a1
           case(2)
             write(unit=4,fmt="(3a10,2i10,a10)",iostat=ios)istadi,enl,boy,yil,gun,a2
           case(3)
            write(unit=4,fmt="(3a10,2i10,a10)",iostat=ios)istadi,enl,boy,yil,gun,a3
           case(4)
            write(unit=4,fmt="(3a10,2i10,a10)",iostat=ios)istadi,enl,boy,yil,gun,a4
           case(5)
            write(unit=4,fmt="(3a10,2i10,a10)",iostat=ios)istadi,enl,boy,yil,gun,a5
           case(6)
            write(unit=4,fmt="(3a10,2i10,a10)",iostat=ios)istadi,enl,boy,yil,gun,a6
           case(7)
            write(unit=4,fmt="(3a10,2i10,a10)",iostat=ios)istadi,enl,boy,yil,gun,a7
           case(8)
            write(unit=4,fmt="(3a10,2i10,a10)",iostat=ios)istadi,enl,boy,yil,gun,a8
           case(9)
            write(unit=4,fmt="(3a10,2i10,a10)",iostat=ios)istadi,enl,boy,yil,gun,a9
           case (10)
           write(unit=4,fmt="(3a10,2i10,a10)",iostat=ios)istadi,enl,boy,yil,gun,a10
           case(11)
           write(unit=4,fmt="(3a10,2i10,a10)",iostat=ios)istadi,enl,boy,yil,gun,a11
           case(12)
           write(unit=4,fmt="(3a10,2i10,a10)",iostat=ios)istadi,enl,boy,yil,gun,a12
       end select
       else
          cycle
     end if
     end do
      close (unit=5)
   end do
   close (unit=4)
   close (unit=3)
   end do
end do
 end do ! do k=1,4 mevsimler icin dongu
end program tarihbulverisuz_hepsi
