Oto moje podprogramowe podejście do tego problemu. przekształca liczbę całkowitą z zakresu 0: 9999 jako znak. Na przykład INTEGER 123 przekształca się w postać 0123. mam nadzieję, że to pomoże.
P.S. - przepraszam za komentarze; one sensu w rumuńskim: P
subroutine nume_fisier (i,filename_tot)
implicit none
integer :: i
integer :: integer_zeci,rest_zeci,integer_sute,rest_sute,integer_mii,rest_mii
character(1) :: filename1,filename2,filename3,filename4
character(4) :: filename_tot
! Subrutina ce transforma un INTEGER de la 0 la 9999 in o serie de CARACTERE cu acelasi numar
! pentru a fi folosite in numerotarea si denumirea fisierelor de rezultate.
if(i<=9) then
filename1=char(48+0)
filename2=char(48+0)
filename3=char(48+0)
filename4=char(48+i)
elseif(i>=10.and.i<=99) then
integer_zeci=int(i/10)
rest_zeci=mod(i,10)
filename1=char(48+0)
filename2=char(48+0)
filename3=char(48+integer_zeci)
filename4=char(48+rest_zeci)
elseif(i>=100.and.i<=999) then
integer_sute=int(i/100)
rest_sute=mod(i,100)
integer_zeci=int(rest_sute/10)
rest_zeci=mod(rest_sute,10)
filename1=char(48+0)
filename2=char(48+integer_sute)
filename3=char(48+integer_zeci)
filename4=char(48+rest_zeci)
elseif(i>=1000.and.i<=9999) then
integer_mii=int(i/1000)
rest_mii=mod(i,1000)
integer_sute=int(rest_mii/100)
rest_sute=mod(rest_mii,100)
integer_zeci=int(rest_sute/10)
rest_zeci=mod(rest_sute,10)
filename1=char(48+integer_mii)
filename2=char(48+integer_sute)
filename3=char(48+integer_zeci)
filename4=char(48+rest_zeci)
endif
filename_tot=''//filename1//''//filename2//''//filename3//''//filename4//''
return
end subroutine nume_fisier
dwie uwagi: - nie trzeba rozróżniać od wartości I; format (I0) wypisze liczbę całkowitą bez spacji; również, jeśli chcesz mieć stałą szerokość i dopełnienie zerami (np. "output001.txt"), musisz użyć (I0.3) - format (A5I2) jest nieprawidłowy Fortran zgodnie z jakąkolwiek normą, ponieważ specyfikatory formatu są należy rozdzielić przecinkami: (A5, I2) –
Cóż, to było w celach edukacyjnych, a nie miało być rozwiązaniem. Generalnie używam dopełnień zer (jak to ładnie się sortuje), ale I0 rzeczy, o których nie wiedziałem. Dzięki!! (naprawiono przecinki, myślę, że mój styl był stary, wciąż akceptowany) –
@ F'x dzięki za komentarz, naprawdę użyteczny. Rzeczywiście nawet przycinanie nie zadziała, jeśli liczba k cyfr nie będzie równa "(Ik)" w formacie, więc po prostu użyj "(I0)", aby nie trzeba było dostosowywać formatu. – gluuke