Интерпретировать строки как имена переменных в Fortran

Я хотел бы получить доступ к реальной переменной с именем, равным строке символов, которая у меня есть. Что-то вроде этого (я сделаю пример максимально чистым):

character(len=5) :: some_string
real :: value
value = 100.0
some_string = 'value'

На данный момент, как мне создать ассоциацию между массивом символов value и именем моей реальной переменной value, чтобы я мог записать значение 100,0, ссылаясь на строку some_string?


person Taylor    schedule 13.02.2012    source источник
comment
Я закрыл этот немного более старый вопрос, потому что этот вопрос долгое время не был правильно помечен, а другой привлек больше внимания и получил больше хороших ответов. Хотя у этого было лучшее название. Есть возражения?   -  person Vladimir F    schedule 09.12.2017


Ответы (2)


В Фортране такого практически не будет. В языке нет таких «динамических» языковых функций. Имена переменных используются только во время компиляции и просто не существуют во время выполнения (имена были преобразованы компилятором в машинные адреса).

person Greg Hewgill    schedule 13.02.2012
comment
Фу. Спасибо за ваш быстрый ответ. Я боялся этого. Почему все не может быть как perl... - person Taylor; 14.02.2012
comment
Любые предложения для продолжения? Часто используемые обходные пути? - person Taylor; 14.02.2012
comment
Я бы посоветовал внимательно посмотреть, почему вы считаете, что вам нужно это сделать, и переформулировать свой код, чтобы в этом не было необходимости. Всегда есть выход. - person Greg Hewgill; 14.02.2012

Вот как я работаю над этим:

character(100) :: s
integer        :: val  
val = 100   
write(s,*) val   
print *,trim(s)

Это выводит 100 на экран. Однако есть некоторая странность, которую я не понимаю, символ s должен быть очень большим (100 в его случае). Например, если вы используете 3 вместо 100, это не сработает. Это не критично, так как это исправляет использование обрезки, но было бы неплохо, если бы кто-нибудь ответил, почему это так.

В любом случае, это должно сработать.

person Naseer Dari    schedule 23.07.2012