Боюсь, что вы не сможете этого сделать. Fortran требует, чтобы переменные имели имена и типы во время компиляции. Вы (или другие СО) можете придумать какой-нибудь клудж для имитации того, что вы хотите, но это будет клудж.
Почему вы хотите сделать это в Фортране? Существует множество языков, которые разрешают такое объявление переменных.
EDIT
Ну, я подумал об этом еще немного, и вот клудж, незаконченный. Сначала UDT для «динамических» переменных:
type dynamic_var
character(len=:), allocatable :: label
class(*), allocatable :: value
end type
объявить некоторое пространство для таких переменных:
type(dynamic_var), dimension(:), allocatable :: run_time_vars
и, работая с исходными данными
allocate(run_time_vars(10)) ! No error checking, reallocate if necessary
! lots of code
write(run_time_vars(1)%label,'(a1,i1)') my_string, my_integer
allocate(run_time_vars(1)%value, source = my_value)
Это компилируется, но не запускается, и я не собираюсь оставаться достаточно долго, чтобы это исправить, я оставлю это в качестве упражнения для всех, кому это нужно.
- Запись в поле метки неверна.
Источник распределения в поле значения, кажется, не работает правильно. Может потребоваться написать функцию 'decode' для использования следующим образом:
allocate (run_time_vars (1)% value, source = decode (my_value))
Как я уже сказал, это клудж.