2.13. Символьные переменные

Символьные, или строковые, переменные описываются в виде: CHARACTERf5*^?/^ длина] имя[*длина] , ... Если задан описатель длина для какой-либо переменной, то он отменяет для этой переменной действие описателя общая длина. Если длина вообще не задана, она считается равной единице. Наибольшая возможная длина строки равна 32767. Символьные переменные можно инициализировать в операторе DATA и опера­торе присваивания. Если присваиваемое значение длиннее, чем переменная, то оно усекается справа, если короче, то дополняется справа пробелами. Таким об­разом, символьные переменные в языке FORTRAN имеют фиксированную дли­ну. Неинициализированные символьные переменные заполнены 0-символами. Допускаются символьные массивы любой размерности.

Именованные символьные константы задаются обычным образом в операто­ре PARAMETER, но такие константы должны быть дополнительно описаны в операторе CHARACTER. Символьные переменные можно выводить операто­ром PRINT* и вводить оператором READ*, но при вводе символьные значения следует задавать в апострофах. При форматном вводе-выводе используется фор­мат A.

Существует только одна символьная операция - // - конкатенация или сцеп­ление строк. Кроме того, к символьным данным применимы операции сравнения

.EQ., .NE., .LT., .LE., .GT., .GE.

Имеется возможность непосредственного обращения к любой подстроке символьной переменной, для этого используется псевдопеременная "подстрока":

имя строки([начало]:[конец]) где начало и конец - целочисленные выражения, задающие номера первого и по­следнего символов, образующих подстроку. Если не задано начало, то подстрока начинается с первого символа строки, если не задан конец, то подстрока включа­ет весь остаток строки ( но символ : обязательно должен быть записан). Точно так же можно обратиться к подстроке элемента символьного массива. Подстрока может не только быть операндом выражения, но также стоять в левой части опе­ратора присваивания, вводиться оператором READ и инициализироваться в опе­раторе DATA, т.е. подстрока может использоваться точно так же, как и настоя­щая символьная переменная.

Для обработки символьных данных в языке FORTRAN есть две встроенные функции:

LEN(character) INTEGER - возвращает длину стро-

ки, но, поскольку строки в языке FORTRAN имеют фиксированную длину, возвращаемое значение всегда есть макси­мальная длина строки или длина строки по описанию.

INDEX(character,character) INTEGER - возвращает номер символа в

первом аргументе, начиная с которого вто­рой аргумент входит в первый или 0. Параметрами подпрограмм могут быть символьные переменные или сим­вольные массивы. Они должны быть соответствующим образом описаны в про­цедуре. Длину строки можно задавать константой, переменной или использовать описатель неопределенной длины (*). Отметим, что именно для таким образом описанных строк-параметров и используется функция LEN.