Васильковый (трехаргументная форма)

Функция $ListGet

Синтаксис:

$LISTGET(list,position,default)

$LG(list,position,default)

Следующая списковая функция – $ListGet – это расширение $LIst. $ListGet идентична одноаргументной и двухаргументной формам $LIst, за исключением того, что не порождает ошибки <null value>. С помощью функции $ListGet можно выделить определенный элемент из списка. Если этот элемент списка не определен, то в виде значения по умолчанию возвращается третий аргумент, если он не задан – пустая строка:

>Write $ListGet(L3, 3) // двухаргументная форма

(пустая строка)

>Write $ListGet(L3, 3, "васильковый")

Васильковый (трехаргументная форма)

Возвращает элемент списка или требуемое значение по умолчанию, если элемент не определен.

Где list - список

Position – позиция извлекаемого элемента

Default – значение по умолчанию, если элемент не определен.

Например:

SET LIST=$LISTBUILD("A","B","C")

WRITE $LISTGET(LIST) ; напечатает A

WRITE $LISTGET(LIST,1) ; напечатает A

SET LIST=$LISTBUILD("A","B","C")

WRITE $LISTGET(LIST,4) ; напечатает пробел, т.к. 4-го элемента нет

WRITE $LISTGET(LIST,4,"ERR"); напечатает "ERR"

Функция $ListData

Как вообще можно установить, определен элемент списка или нет? Здесь поможет функция $ListData: логическая функция, проверяющая существование элемента списка. Синтаксис:

$LISTDATA(list,position)

$LD(list,position)

Где list – список

Position – позиция элемента.

Возвращает 1 (true) – если элемент найден и имеет значение, 0 (false) – если не найден или не имеет значения.

Например:

KILL Y SET X=$LISTBUILD("Red",,Y,"","Green")

WRITE $LISTDATA(X,2) ; второй элемент не определен

WRITE $LISTDATA(X,3) ; третий элемент – переменная которой нет

WRITE $LISTDATA("") ; пустая строка

WRITE $LISTDATA(X,0) ; элемент в нулевой позиции

WRITE $LISTDATA(X,6) ; 6-ая позиция в 5-ти элементном списке

Второй параметр этой функции задает проверяемую позицию списка. Если элемент в этой позиции определен результат функции будет 1, иначе 0.

>Write $ListData(L3, 2)

>Write $ListData(L3, 3)

Функция $ListFind

Поиск заданного элемента списка.

Синтаксис:

$LISTFIND(list,value,startafter)

$LF(list,value,startafter)

Где list – список, value - искомое значение.

Startafter – задает позицию списка, после которой следует выполнять поиск. Необязательный элемент. Если не задан, то поиск с первой позиции.

Возвращает номер найденного элемента, если элемент найден, и ноль (0), если элемент не найден.

Например:

SET X=$LISTBUILD("A","B","C","D")

WRITE $LISTFIND(X,"B")

SET X=$LISTBUILD("A","B","C","D")

WRITE $LISTFIND(X,"B",2)


Оператор косвенности @

Оператор косвенности позволяет преобразовать строку символов в программный код в четырех четко описанных случаях:

• Косвенное имя: преобразование в имя (например, переменной).

• Косвенный аргумент: преобразование в полный аргумент команды.

•Индексная косвенность: преобразование в индексированную переменную.

• Косвенный шаблон: преобразование в шаблон при проверке по шаблону.

Косвенное имя

Предположим, переменная v1 содержит в качестве значения имя локальной переменной, например, «v1 = "locvar"». Тип данных значения v1 очевидно представляет собой строку.

Разумеется, присваивание «Set "locvar" = 4» приведет к сообщению об ошибке, так как команда Set ожидает имя переменной, а не строку символов. Однако имея оператор косвенности "@", программист может преобразовать тип данных в имя: «Set @v1 = 4» присваивает переменной locvar значение 4. Эта форма косвенности называется косвенным именем.

Косвенное имя может применяться всюду, где в Cache ожидается имя переменной (локальной или глобальной, неиндексированной или индексированной) или точка входа в программу (метка или метка плюс имя программы).

Set pname = "^Prog1" Do @pname

Здесь вызывается программа ^Prog1.

Пример:

Set pname=”Prog1”

do @pname // будет вызвана программа с именем Prog1

Set var=”locvar”

Set @var=4 // переменной с именем locvar будет присвоено число 4

Косвенный аргумент

В отличие от косвенного имени, в случае косвенного аргумента осуществляется преобразование строк в аргументы команд. За исключением команды For, в которой косвенность аргумента не допускается, в остальных командах можно косвенно ссылаться на полный аргумент или на список аргументов.

Set isetarg = "x = 1", @isetarg

Переменная isetarg содержит синтаксически корректный аргумент команды Set в виде строки, которая обрабатывается оператором косвенности.

Отчетливо видно отличие от косвенного имени, ведь «"х = 1"» — не разрешенное имя. Разумеется, во многих командах (Read, Write, Kill, New — их далеко не полный перечень) одиночный аргумент также может быть именем. В этом случае обе формы косвенности неотличимы друг от друга.

А вот несколько примеров, в которых обе эти формы косвенности имеют различия:

Set ikill = "(e, f, g)" Kill @ikill Set inew = "(a, b, c)" New @inew
Set isetarg=”x=1”, @isetarg // set x=1







Дата добавления: 2016-01-20; просмотров: 538;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.