STRTOFLD


Характеристика

Чистая функция

Синтаксис

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, разыскивая указанную процедуру (функцию) по обычным правилам видимости.

См. также