STRTOFLD(S: STRING[]; Type: TYPE_IDENT; [ Format: STRING[] ] ): ANYTYPE; TYPE_IDENT = NUMERIC | FLOAT | SCAL | STRING | DATE | TIME | LONGTIME | LTIME | TIMESTAMP | PROC |
Преобразует строку S к значению указанного типа Type согласно формату Format и возвращает результат преобразования. Может возвратить пустое значение, если параметр S есть строковое представление пустого значения для данного типа и формата. В случае неудачи преобразования выбросит исключение 131. Тип возвращаемого значения определяется параметром Type.
Параметр Format определяет способ преобразования строки в значение указанного типа. Для разных типов данных допустимы различные типы форматов (см. таблицу "Типы форматов преобразования в строку и из строки" в приложениях). Для числовых типов данных существует шесть типов форматов преобразования, для STRING, DATE, TIME/LONGTIME/LTIME, TIMESTAMP - по одному. В общем случае формат преобразования представляет собой строку, возможно начинающуюся с однобуквенного префикса, указывающего тип формата преобразования. Исключение составляет перечислимый числовой формат, он определяется не префиксом, а по наличию символа разделителя подстрок '|' в строке формата.
Для числовых типов определен формат по умолчанию, для которого указывать префикс необязательно. Для типов NUMERIC и FLOAT умолчательным является формат с фиксированной точкой, а для SCAL - десятичный скалярный формат. За префиксом типа формата следуют символы в синтаксисе конкретного формата. Для формата с фиксированной точкой это разделитель тысяч, число десятичных цифр после запятой и заменитель десятичной точки. Префикс 'Z' в формате с фиксированной точкой в данной функции запрещен, будет выброшено экзотическое исключение. Пустая строка формата с фиксированной точкой интерпретируется как "0" - нуль знаков после десятичной точки. Вне зависимости от указаний строки формата, символ точки в формате с фиксированной точкой всегда рассматривается как допустимый заменитель десятичной точки. Формат с плавающей точкой не настраивается. Для обоих скалярных и строкового формата, форматов даты и времени строка формата определяет вывод, специальные символы в ней заменяются при вводе определенным, указанным в таблице, образом.
Если необязательный параметр Format не указан явно, используется значение по умолчанию из приведенной ниже таблицы.
Параметр Type | Format | Тип результата функции |
---|---|---|
NUMERIC | "9." | FLOAT |
FLOAT | "9." | FLOAT |
SCAL | "" | FLOAT |
STRING | "" | STRING[] |
DATE | "D\N\y" | DATE |
TIME | "H:M" | TIME |
LONGTIME | "H:M" | LTIME (LONGTIME[41]) |
LTIME | "H:M" | LTIME (LONGTIME[41]) |
TIMESTAMP | ".7D\N\y:H:M:S" | TIMESTAMP |
PROC | "" | PROC |
Особый случай - преобразование из строки в ссылку на процедуру (в качестве Type указан PROC). Формат в этом случае не важен. Во входной строке ожидается имя процедуры (функции) с префиксом модуля или без оного. Если префикс модуля указан, то результат однозначен. В противном случае FLDTOSTR работает аналогично функции PROCREF, разыскивая указанную процедуру (функцию) по обычным правилам видимости.