История изменений
Исправление grem, (текущая версия) :
В 2003 фортране можно делать примерно так:
program test_srt
character(len=:), allocatable :: filename
character(len=80) :: buf, z0_str, phi0_str
real :: z0, phi0
z0 = 2.4
phi0 = 1.5
write(z0_str, '(f3.1)') z0
write(phi0_str, '(f3.1)') phi0
buf = "z0" // "_" // trim(z0_str) // "_" // trim(phi0_str) // ".fits"
filename = trim(buf)
print *, "filename:[", filename, "]"
end program test_srt
filename:[z0_2.4_1.5.fits]
Не то чтобы сильно отличалось и стало намного удобнее, но зато есть дополнительная переменная filename, у которой длина изменяется динамически при присваивании. Внутрь процедур такая переменная тоже должна без проблем передаваться, емнип. Объявляться внутри процедуры она должна так же. Можно дописать процедуру, в уоторую будет передаваться переменная для записи имени файла (выходная переменная) и числа (входные параметры), которые будут внутри преобразовываться в строки с «нужной точностью».
Исходная версия grem, :
В 2003 фортране можно делать примерно так:
program test_srt
character(len=:), allocatable :: filename
character(len=80) :: buf, z0_str, phi0_str
real :: z0, phi0
z0 = 2.4
phi0 = 1.5
write(z0_str, '(f3.1)') z0
write(phi0_str, '(f3.1)') phi0
buf = "z0" // "_" // trim(z0_str) // "_" // trim(phi0_str) // ".fits"
filename = trim(buf)
print *, "filename:[", filename, "]"
end program test_srt
filename:[z0_2.4_1.5.fits]
Не то чтобы сильно отличалось и стало намного удобнее, но зато есть дополнительная переменная filename, у которой длина изменяется динамически при присваивании. Внутрь процедур такая переменная тоже должна без проблем передаваться, емнип. Объявляться внутри процедуры она должна так же.