! 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,istno,pcano,yil,gun,ios,adet,gun2,ay2,yil2
!dört farklı veri dosyasındaki aylar için  tanımlamalar
   character(len=7)::a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12
   character(len=7)::b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12
   character(len=7)::c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12
   character(len=7)::d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12

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

do k=1,4
   select case(k)   
          case(1)
          dyaz="min"           
          doku2="gunmin.dat"

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

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

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


   do j=1,pcano !PCA nolari
      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)
           if (dyaz=="sum") then
               doku1=trim(doku)//"tar17.dat"
               dyaz1=trim(doku)//trim(dyaz)//"17.dat"
           endif

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

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

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

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

!Yukarida secilen dosya icindeki 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 ve yazilan dosyalar:",doku1,doku2,dyaz1
      print*,gun2,ay2,yil2,"Gun sayisi=",adet

! 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
          print*,gun2,ay2,yil2,i,"/",adet
    !Okunacak ve veri alinacak dosyalar
          open(unit=5,file=doku2,status="old",action="read")


   do
       read(unit=5,fmt="(a8,3i7,12a7)",iostat=ios)istadi,istno,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,yil,gun
       
       !Secilmis gun hangi aya ait ise o veriyi yazacak bolum
        select   case(ay2)
           case(1)
             write(unit=4,fmt="(a8,3i7,3x,12a7)",iostat=ios)istadi,istno,yil,gun,a1
           case(2)
             write(unit=4,fmt="(a8,3i7,3x,12a7)",iostat=ios)istadi,istno,yil,gun,a2
         
           case(3)
            write(unit=4,fmt="(a8,3i7,3x,12a7)",iostat=ios)istadi,istno,yil,gun,a3

           case(4)
             write(unit=4,fmt="(a8,3i7,3x,12a7)",iostat=ios)istadi,istno,yil,gun,a4

           case(5)
            write(unit=4,fmt="(a8,3i7,3x,12a7)",iostat=ios)istadi,istno,yil,gun,a5

      case(6)
       write(unit=4,fmt="(a8,3i7,3x,12a7)",iostat=ios)istadi,istno,yil,gun,a6

      case(7)
       write(unit=4,fmt="(a8,3i7,3x,12a7)",iostat=ios)istadi,istno,yil,gun,a7

      case(8)
       write(unit=4,fmt="(a8,3i7,3x,12a7)",iostat=ios)istadi,istno,yil,gun,a8

     case(9)
       write(unit=4,fmt="(a8,3i7,3x,12a7)",iostat=ios)istadi,istno,yil,gun,a9

     case (10)
      write(unit=4,fmt="(a8,3i7,3x,12a7)",iostat=ios)istadi,istno,yil,gun,a10

     case(11)
       write(unit=4,fmt="(a8,3i7,3x,12a7)",iostat=ios)istadi,istno,yil,gun,a11

     case(12)
       write(unit=4,fmt="(a8,3i7,3x,12a7)",iostat=ios)istadi,istno,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 ! do k=1,4 mevsimler icin dongu
end program tarihbulverisuz_hepsi


