1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
program main
implicit none
integer :: ios
logical :: ok
!--------------------------------------------------------------------------
! Repertoire des fichiers a traiter
character(len=200), parameter :: rep_fichiers = "projet"
! Liste des fichiers du repertoire a traiter
character(len=50), parameter :: liste_fichiers = "liste_fichiers_a_traiter"
! Noms des fichiers a traiter, et retourne par le programme de conversion
character(len=50) :: fichier_in, fichier_out
! Caracteristiques du nom du fichier a convertir
character(len=5) :: prefixe_in = "jour1"
character(len=3) :: suffixe_in = "txt"
! Caracteristiques du nom du fichier converti
character(len=3) :: prefixe_out = "fic"
character(len=3) :: suffixe_out = "dat"
!--------------------------------------------------------------------------
! Lister les fichiers contenus dans le repertoire
call lister_fichiers
! Traitement de chaque fichier :
open( unit=11, file=liste_fichiers, status='old')
traitement : do
! Lire le nom du fichier a traiter
read(11,"(a)",iostat=ios) fichier_in
if (ios/=0) exit
! Determiner le nom du fichier traitee
ok = determiner_nom_sortie()
if (.not.ok) cycle traitement
! Appel du sous-programme de conversion (a modifier)
! call conversion( fichier_in, fichier_out)
write(*,'("Conversion : ",a," -> ",a)') trim(fichier_in), trim(fichier_out)
enddo traitement
close(11)
contains
subroutine lister_fichiers
implicit none
character(len=200) :: commande
! Valable uniquement sur WINDOWS :
write(commande,'(4a)') "dir /b ", trim(rep_fichiers), " > ", trim(liste_fichiers)
! Sur LINUX :
! write(commande,'(4a)') "ls -1 ", trim(rep_fichiers), " > ", trim(liste_fichiers)
call system(commande)
end subroutine lister_fichiers
function determiner_nom_sortie()
! Determine le nom du fichier de sortie du programme de conversion :
! jour1_20050102_115001.txt -> fic_200050102_115001.dat
implicit none
logical :: determiner_nom_sortie
integer :: ind
! Verification du nom du fichier a convertir
if (index(fichier_in,suffixe_in) <= 0) then
write(*,'(a)') "Fichier '" // trim(fichier_in) // "' non traite"
determiner_nom_sortie = .false.
return
endif
! Position du premier "_"
ind = index(fichier_in,"_")
if (ind <= 0) then
write(*,'(a)') "Fichier '" // trim(fichier_in) // "' non traite"
determiner_nom_sortie = .false.
return
endif
fichier_out = prefixe_out // fichier_in(ind:)
! Position du "."
ind = index(fichier_out,".",.false.)
if (ind <= 0) then
write(*,'(a)') "Fichier '" // trim(fichier_in) // "' non traite"
determiner_nom_sortie = .false.
return
endif
fichier_out = fichier_out(:ind) // suffixe_out
determiner_nom_sortie = .true.
end function determiner_nom_sortie
end program main |
Partager