- •Основы
- •Элементарные типы данных
- •Некоторым аналогом (по виду, но не по смыслу) объявления переменных внутри процедуры или
- •Пример
- •Имена переменных
- •Команды создания локальных
- •Используемые в Caché простые типы данных
- •Конкатенация строк
- •Числа
- •Булевы величины
- •Даты
- •Оператор косвенности
- •"Визитная карточка" оператора косвенности – символ @.
- •Косвенное имя
- •В следующем примере значение B полагается равным шести:
- •Косвенный аргумент
- •В следующем примере вторая команда set иллюстрирует косвенное имя (@a – только часть
- •Косвенный индекс
- •Пример
- •Списки и массивы
- •Списки
- •Библиотечный класс Caché %AbstractList,
- •Существуют и другие методы, с которыми можно ознакомиться в справочнике классов Caché. Заметим,
- •Массивы
- •Библиотечный класс Caché %AbstractArray,
- •Пример обработки массива:
- •Обработка ошибок
- •Рассмотрим следующую ситуацию. На html-
- •РЕШЕНИЕ ПРОБЛЕМЫ
- •После локализации мы заполняем ее
- •Многомерные массивы и глобалы
- •Глобалы позволяют хранить произвольную информацию, выстроенную в иерархию любой сложности.
Даты
Caché предоставляет набор функций, работающих с датами, но не имеет встроенного типа для них.
Функции работают с датами как с символьными строками, представленными в различных форматах, заданных пользователем как параметры этих функций.
$Horolog - возвращает строку, состоящую из двух разделенных запятой подстрок. Первая подстрока – это количество дней, прошедших с 31 декабря 1840 г. Вторая подстрока – это количество секунд, про шедших от полуночи текущих суток до данного момента времени.
Функции $ZDATE, $ZDATETIME и $ZTIME
"подхватывают" информацию, предоставленную $Horolog, и приводя ее к виду, нужному пользователю и регулируемому многочисленными аргументами.
Иногда может потребоваться и обратное преобразование даты и времени в Horolog- формат. Его выполняют функции $ZDATEH, $ZDATETIMEH и $ZTIMEH.
Оператор косвенности
Оператор косвенности, позволяет формировать тело команды во время выполнения программы.
Оператор косвенности следует применять только там, где это действительно необходимо, поскольку его использование приводит к дополнительным накладным расходам во время выполнения программы.
Использование оператора косвенности снижает читабельность программного кода. Если сложные конструкции, содержащие косвенность, недостаточно полно документированы, разобраться в них даже автору будет по прошествии времени очень трудно.
Программы с оператором косвенности требуют особенно тщательной отладки, поскольку некорректное формирование символьной строки, содержащей выражение языка Caché Object Script, приведет к аварийному завершению программы.
"Визитная карточка" оператора косвенности – символ @.
Если мы пишем @X, то это означает, что значение переменной X будет подставлено в тело динамически формируемого выражения.
В Caché Object Script существует 5 видов косвенности, среди которых мы рассмотрим три:
1.косвенное имя
2.косвенный аргумент
3.косвенный индекс
Косвенное имя
В этом варианте оператор косвенности используется для вычисления имени переменной, метки или вызываемой функции.
В качестве имени переменной может выступать имя глобала или локальной переменной, возможно с индексами.
В следующем примере значение B полагается равным шести: |
Set Y="b", @Y=6 |
В следующем примере управление будет передано: |
на метку FIG, если N=1; |
на метку GO, если N=2; |
на метку STOP в любом другом случае: |
Set D=$SELECT(N=1:"FIG",N=2:"GO",1:"STOP") |
GoTo @D |
Косвенное имя может интерпретироваться только как |
адресуемое выражение. Появление на его месте литерала |
приводит к ошибке: |
Set var1="5" |
Set x = @var1*6 |
для исключения которой фрагмент можно переписать так: |
Set var1="var2", var2=5 Set x= @var1*6 |
Косвенный аргумент |
В отличие от косвенного имени, где с |
помощью оператора косвенности |
вычислялась только часть аргумента |
команды (в приведенных примерах – Set), |
косвенный аргумент неявно формирует |
аргумент команды полностью. |
set qq="ptr=##class(Data."_X_"). |
%OpenId(1)" set @qq |
где X содержит имя класса; |
@qq – полный аргумент команды set. |
В следующем примере вторая команда set иллюстрирует косвенное имя (@a – только часть аргумента, имя переменной), а третья команда – косвенный аргумент, так как @b – это полный аргумент команды set.
Set a="var1", b="var2=3*4" Set @a=5*6
Set @b
После выполнения этих команд переменные будут равны: a="var1", b="var2=3*4", var1=30, var2=12.
Косвенный индекс |
Признаком косвенного индекса |
является дважды встречающийся |
символ @. Первый из них преобразует |
идущую вслед за ним строку в имя |
переменной, второй – добавляет к |
полученному имени заданный внутри |
скобок индекс или несколько индексов. |
Пример |
Set array="fields(3,2)", x=1, y=2 Set |
fields(3,2,1,2)="James" |
Тогда команда |
Write @array@(x,y) |
выведет: James. |