График выполнения ежечасных операций
Синтаксис
< ежечасная операция >::=
  everyhour (min=< минуты часа >) < действия >
  < минуты часа >::= < дата в формате MI >
  < действия >::= {< блок операторов >}
Описание

Указанные < действия > будут выполняться на заданной минуте каждого часа суток. Если к указанному моменту времени утилита выполняет < действия >, заданные каким-либо другим оператором, то выполнение наступивших < действий > будет задержано до полного окончания предыдущих < действий >. В связи с этим при разработке сценария следует так планировать ежечасные < действия >, чтобы утилита успевала выполнять требуемую работу в заданных промежутках времени.

Отрицательное значение аргумента < минуты часа > определяет периодичность повторения заданного действия от начала часа, например,

everyhour (min=-5)

означает, что действие будет выполнено в .., 13:00, 13:05, 13:10, 13:15, .., 13:55, 14:00, ..

Примечание

Отрицательное значение аргумента < минуты часа > можно задавать только в виде литерала, а не переменной.

Если значение < минуты часа > не является делителем 60, то промежуток между последним вызовом в предыдущем часе и в начале следующего часа будет меньше этого значения, например, если задано everyhour (min=-7), то событие вызовется в 13:56, а затем в 14:00.

Примечание (общее для всех операторов данного раздела)

При разработке сценария необходимо учитывать следующий важный момент. Если на некоторую календарно-временную дату совпало несколько действий (например, совпали по дате и времени ежедневные и еженедельные операции), то утилита выполнит запланированные действия только одного оператора. Другой при этом будет проигнорирован, причем нельзя определенно сказать, какой именно оператор из нескольких будет выполнен. Поэтому, чтобы избежать таких коллизий, графики выполнения планируемых событий должны отличаться друг от друга хотя бы на 1 минуту.

Пример

everyhour(min=59)
{
   /* Сохранение быстроменяющейся  таблицы */
   backup ("s -u SYSTEM/MANAGER8 -f c:\arc_db -ot Заказы");
exception:
   logprint(ctimestamp()+":\n");
   logprint("\tError=" + TOSTR(CERROR));
   logprint("\tLinError=" + TOSTR(LINERROR));
   logprint("\tSysError=" + TOSTR(SYSERROR));
   stop;
}