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
|
character (200) :: Ligne
integer :: Pos, Long
...
read(11,'(a)') Ligne
Pos = 1
Long = len_trim(Ligne)
call ExtraitEntier(Variable1,Ligne,Pos,Long)
call ExtraitTexte(Variable2,Ligne,Pos,Long)
call ExtraitReel(Variable3,Ligne,Pos,Long)
...
subroutine ExtraitTexte(Valeur,Chaine,Debut,Long)
character (*), intent(out) :: Valeur
character (*), intent(in) :: Chaine
integer, intent (inout) :: Debut
integer, intent (in) :: Long
integer PosBarre
if (Pos > Long) then
Valeur = ''
else
PosBarre= index(Chaine(Debut:Long),'|') + Debut- 1
if (PosBarre < Debut) PosBarre = Long + 1
Valeur = Chaine(Debut:PosBarre - 1)
Debut = PosBarre + 1
endif
end
subroutine ExtraitEntier(Valeur,Chaine,Debut,Long)
integer, intent(out) :: Valeur
character (*), intent(in) :: Chaine
integer, intent (inout) :: Debut
integer, intent (in) :: Long
character (20) Extrait
call ExtraitTexte(Extrait,Chaine,Debut,Long)
if (len_trim(Extrait) == 0)
Valeur = 0
else
read(Extrait, *) Valeur
endif
end
... |
Partager