Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материал / Тема №5. Cache Object Script.pptx
Скачиваний:
4
Добавлен:
18.02.2023
Размер:
125.93 Кб
Скачать

Даты

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.