Решение: символьные переменные как внутренние файлы
Допустим, мы подсчитали число случаев попадания наших данных в некий диапазон значений. Мы хотим отразить эту информацию в названии выходного (пост-обработки) файла. Значит необходимо преобразовать тип целых в символьный тип, ведь в названии файлов могут присутствовать только символьные переменные.
Чтобы решить такую задачу нужно воспользоваться символьными переменными как внутренними файлами, т.е. произвести запись не по канала файла (unit), а напрямую в символьную переменную по формату целого типа. В коде это выглядит примерно так:
INTEGER :: data ! Исходное значение - оно нам известно
CHARACTER(3) :: string ! Символьная переменная - то, что хотим получить
WRITE (string, '(I3)' ) data ! Операция записи целого по формату в символьную переменную
CHARACTER(3) :: string ! Символьная переменная - то, что хотим получить
WRITE (string, '(I3)' ) data ! Операция записи целого по формату в символьную переменную
Чтобы произвести обратное преобразование (из character в integer), нужно воспользоваться другой схемой:
CHARACTER(3) :: string ! Исходный символ - он нам известен
INTEGER :: data ! Переменная целого типа - то, что хотим получить
READ (string, '(I3)' ) data ! Операция чтения символьной переменной по формату в целое
"Используя оператор WRITE, в строку можно передать данные любых типов. И наоборот, оператором READ из строки можно считать, например, числовые данные (если в строке есть числовые поля данных). Часто при помощи оператора WRITE числовые данные преобразовываются в символьные, например число 123 в строку '123', а также формируются
строки, состоящие из смеси числовых и символьных данных."
строки, состоящие из смеси числовых и символьных данных."
О. В. Бартеньев, Современный ФОРТРАН, стр.72
Комментариев нет:
Отправить комментарий