Главная страница

бд. Системауправлениябазами


Скачать 0.74 Mb.
НазваниеСистемауправлениябазами
Дата01.03.2022
Размер0.74 Mb.
Формат файлаpdf
Имя файлаlhb.pdf
ТипДокументы
#378057
страница5 из 8
1   2   3   4   5   6   7   8
Действия в начале работы
Синтаксис
<действия в начале работы>::= before <действия>
<действия>::= { <блок операторов> }
Описание
Указанные <действия> выполняются в момент запуска утилиты lhb при условии отсутствия синтаксических ошибок в тексте сценария или в командной строке.
Действия в конце работы
Синтаксис
<действия в конце работы>::= after <действия>
<действия>::= { <блок операторов> }
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021
47

Автоматизация архивирования БД
Описание
Указанные <действия> выполняются при корректном завершении работы утилиты lhb
(в том числе и при завершении по инициативе пользователя по команде +).
Действия при ошибочной ситуации
Синтаксис
<действия при ошибочной ситуации>::= iferr <действия>
<действия>::= { <блок операторов> }
Описание
Указанные <действия> выполняются в случае выявления ошибки, не обработанной в блоках операторов сценария.
48
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021

Операторы языка сценария
Оператор выражения
Оператор выражения задает выражение строкового или числового типа. В таблице
1
представлены операции, допустимые для строковых операндов.
Таблица 1. Операции строковых операндов выражения
Операция Название операции
Тип результата
Примечание
+
Конкатенация
Символьный
=
Присваивание
Символьный
==
Сравнение на равенство
Числовой
0 – операнды не равны
1 – операнды равны
!=
Сравнение на неравенство
Числовой
0 – операнды равны
1 – операнды не равны
В таблице
2
указаны допустимые операции для числовых операндов.
Таблица 2. Операции числовых операндов выражения
Операция
Название операции
Примечание
+
Сложение
-
Вычитание
Бинарная операция
-
Изменение знака
Унарная операция
=
Присваивание
==
Сравнение на равенство
0 – условие не выполнено
1 – выполнено
!=
Сравнение на неравенство
0 – условие не выполнено
1 – выполнено
>
Сравнение на больше
0 – условие не выполнено
1 – выполнено
<
Сравнение на меньше
0 – условие не выполнено
1 – выполнено
>=
Сравнение на больше или равно
0 – условие не выполнено
1 – выполнено
<=
Сравнение на меньше или равно
0 – условие не выполнено
1 – выполнено
AND
Логическое И
0 – условие не выполнено
1 – выполнено
OR
Логическое ИЛИ
0 – условие не выполнено
1 – выполнено
NOT
Логическое отрицание
0 – условие не выполнено
1 – выполнено
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021
49

Операторы языка сценария
Комментарий
Комментарий может начинаться в любой позиции строки между синтаксическими элементами языка и должен располагаться в одной строке исходного текста сценария.
Признаком начала и конца комментария является сочетание символов
/* и */
соответственно.
Оператор цикла
Синтаксис
while (<условие цикла>)
{ <блок операторов> }
<условие цикла>::= выражение, результат вычисления которого имеет числовой тип.
Примечание
Если <блок операторов> состоит из одного оператора, скобки
{,} можно не указывать.
Описание
В качестве <условия цикла> может использоваться любое выражение, результатом вычисления которого является значение числового типа.
<блок операторов> выполняется циклически до тех пор, пока значение <условия цикла>
не равно нулю.
Пример
while(I)
{
I=I-1;
/* нарастающее архивирование */
backup ("s -inc -u" + myname + "/" + mypass + "
-f " + "\"" + lastfilename + "\"");
if(CERROR==0)
logprint(ctimestamp() + ":" + ">>" +
lastfilename);
}
Оператор условия
Синтаксис
if (<условие выбора>)
{ <блок операторов 1> }
[ else
{ <блок операторов 2> } ]
<условие выбора>::= выражение, результат вычисления которого имеет числовой тип
50
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021

Операторы языка сценария
Описание
Если значение <условия выбора> не равно нулю, выполняется <блок операторов 1>, в противном случае (если задана конструкция else) – <блок операторов 2>.
Примеры
1)
if (name == "") /* если пользователь не указал имя и пароль */
{
MYNAME = GETSTR("Введите имя:");
MYPASS = GETPASS("Введите пароль:");
}
else
{
MYNAME = NAME;
MYPASS = PASSWORD;
}
2)
if (not exist (FILES_DIR))
crdir (FILES_DIR); /* создать директорий для архива */
Оператор запуска утилиты lhb
Синтаксис
backup (<командная строка>);
[iferr{ <обработка ошибки> }
{ <блок операторов 2> } ]
<командная строка>::= <символьное выражение>
Описание
Оператор выполняет запуск утилиты lhb с командами и ключами, заданными в
<командной строке>.
Конструкция iferr будет выполнена в случае возникновения ошибки. Если она не задана, то ошибка, выявленная при выполнении оператора, будет обработана в соответствии с иерархией обработки ошибок (см. подпункт
«Действия при ошибочной ситуации»
).
Пример
backup ("s -startinc -u " + myname + "/" + mypass + "
-f " + "\"" + FILES_DIR + "\\" +
tostr(cdate()) + "-" + tostr(cmonth()) + "-" +
tostr(cyear2()) + "\"");
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021
51

Операторы языка сценария
Оператор копирования файла
Синтаксис
copy (<спецификация копируемого файла> , <спецификация копии>);
[ iferr{ < блок операторов > }]
<спецификация копируемого файла>::= <символьное выражение>
<спецификация копии>::= <символьное выражение>
Описание
Оператор выполняет копирование заданного файла. <спецификация копии> задает новое местоположение и имя файла. Имя файла в обеих спецификациях должно быть определено явно, использование знака «*» не допускается. Исходный файл остается без изменений.
Пример
copy("25-12-98.lhb","c:\arc_db\25-12-98.lhb");
Оператор перемещения файла
Синтаксис
move (<спецификация перемещаемого файла>,<спецификация перемещения>);
[iferr { <блок операторов> } ]
<спецификация перемещаемого файла>::= <символьное выражение>
<спецификация перемещения>::= <символьное выражение>
Описание
Оператор выполняет перемещение заданного файла. <спецификация перемещения>
определяет новое местоположение и имя файла. Имя файла в обеих спецификациях должно быть задано явно, использование знака «*» не допускается.
Пример
move("25-12-98.lhb","../old/25-12-98.lhb");
Оператор переименования файла
Синтаксис
rename (<спецификация переименуемого файла>,<спецификация перенаименования>);
[iferr { <блок операторов> } ]
<спецификация переименуемого файла>::= <символьное выражение>
<спецификация перенаименования>::= <символьное выражение>
Описание
Оператор выполняет переименование заданного файла.
<спецификация перенаименования> вводит новое имя и тип файла. Местоположение исходного файла не изменяется.
52
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021

Операторы языка сценария
Пример
rename("c:\arc_db\25-12-98.lhb","25-12-98.arc");
Оператор удаления файла
Синтаксис
delete (<спецификация файла>);
[ iferr { <блок операторов> } ]
<спецификация файла>::= <символьное выражение>
Описание
Оператор выполняет удаление указанного файла. Имя файла в <спецификации файла>
должно быть задано явно, использование знака «*» не допускается.
Пример
delete("../old/__24-12-98.lhb");
Оператор создания каталога
Синтаксис
crdir (<спецификация каталога>);
[ iferr { <блок операторов> } ]
<спецификация каталога>::= <символьное выражение>
Описание
Оператор выполняет создание указанного каталога.
Оператор синхронного запуска программы
Синтаксис
run (<спецификация программы>);
[ iferr { <блок операторов> } ]
<спецификация программы>::= <символьное выражение>
Описание
Оператор запускает на выполнение указанную программу, и утилита lhb переходит в ожидание завершения работы этой программы. <Спецификация программы> должна однозначно определять имя программы и её местонахождение. Если указано только имя программы, она будет искаться в соответствии с правилами ОС. Результат выполнения программы возвращается в предопределенной переменной
CERROR. Если результат выполнения программы отличен от 0, то происходит генерация exception или выполнение секции iferr оператора.
Оператор асинхронного запуска программы
Синтаксис
exec (<спецификация программы>);
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021
53

Операторы языка сценария
[ iferr { <блок операторов> } ]
<спецификация программы>::= <символьное выражение>
Описание
Оператор запускает на выполнение указанную программу, и утилита lhb продолжает свою работу. <Спецификация программы> должна однозначно определять имя программы и её местонахождение. Если путь к программе не прописан, она будет искаться в текущем каталоге. Результат выполнения программы не контролируется.
Оператор окончания программы
Синтаксис
stop
Описание
Оператор прекращает выполнение утилиты lhb.
Оператор прерывания обработки
Синтаксис
break
Описание
Оператор прекращает работу текущего оператора if или выполняет преждевременный выход из цикла while.
Оператор продолжения обработки
Синтаксис
continue
Описание
Оператор вызывает выполнение следующей итерации охватывающего цикла (
while,
if).
Оператор объявления секции обработки ошибок
Синтаксис
exception:
Описание
Оператор объявляет начало секции обработки ошибок текущего уровня вложенности.
Оператор перехода на обработку ошибки
Синтаксис
error
54
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021

Операторы языка сценария
Описание
Оператор выполняет переход в секцию exception или в блок операторов iferr,
соответствующий текущему оператору.
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021
55

Предопределенные переменные и константы
В языке сценария реализованы следующие предопределенные переменные (т.е. такие переменные, использовать которые можно без их объявления и инициализации):
Имя переменной
Значение переменной
LASTFILENAME
Спецификация пути и имени (без расширения) последнего сохраненного архивного файла
LASTDATE
Дата последнего сохранения
CERROR
Код завершения утилиты lhb или программы, выполненной по оператору run. Этот код будет проверяться для вызова iferr (приложение может присваивать её собственное значение)
LINERROR
Код завершения, возвращенный СУБД ЛИНТЕР
SYSERROR
Код завершения, возвращенный операционной системой
NAME
Имя пользователя из командной строки
PASSWORD
Пароль пользователя из командной строки
FILENAME
Имя файла из командной строки
DATEFORMAT
Выходной формат данных типа «дата/время». Элементы формата аналогичны элементам формата в операторе set: tsformat
56
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021

Предопределенные функции
Текущее время
Синтаксис
CTIMESTAMP()
Тип возвращаемого значения: символьный.
Описание
Функция возвращает текущую календарную дату в формате предопределенной переменной
DATEFORMAT.
Для установки формата, отличного от используемого по умолчанию, необходимо присвоить переменной
DATEFORMAT соответствующее значение, например:
DATEFORMAT="YYMMDD-HH24MI";
Номер года
Синтаксис
CYEAR2()
Тип возвращаемого значения: числовой.
Описание
Функция возвращает две последние цифры текущего года.
Полный номер года
Синтаксис
CYEAR4()
Тип возвращаемого значения: числовой.
Описание
Функция возвращает полный номер текущего года.
Номер месяца
Синтаксис
CMONTH ()
Тип возвращаемого значения: числовой.
Описание
Функция возвращает номер текущего месяца (число в диапазоне от 1 до 12).
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021
57

Предопределенные функции
Номер дня недели
Синтаксис
CDAY()
Тип возвращаемого значения: числовой.
Описание
Функция возвращает номер текущего дня недели (число в диапазоне от 1 до 7,
нумерация начинается с понедельника).
Название дня недели
Синтаксис
CWEEKDAY ()
Тип возвращаемого значения: символьный.
Описание
Функция возвращает первые три символа названия текущего дня недели. Названия выдаются в англоязычном виде, например:
Mon, Tue, …
Номер дня месяца
Синтаксис
CDATE()
Тип возвращаемого значения: числовой.
Описание
Функция возвращает номер текущего дня месяца (число в диапазоне от 1 до 31).
Номер текущего часа
Синтаксис
CHOUR ()
Тип возвращаемого значения: числовой.
Описание
Функция возвращает номер текущего часа (число в диапазоне от 0 до 23).
Номер текущей минуты
Синтаксис
CMIN ()
Тип возвращаемого значения: числовой.
58
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021

Предопределенные функции
Описание
Функция возвращает номер минуты текущего часа (число в диапазоне от 0 до 59).
Информация о файле
Синтаксис
EXIST(<спецификация файла>)
<спецификация файла>::= <символьное выражение>
Тип возвращаемого значения: числовой.
Описание
Функция возвращает информацию о существовании указанного файла:
0 – файл не существует,
1 – файл существует.
Выдача сообщения на консоль
Синтаксис
PRINT (<сообщение >)
<сообщение>::= <символьное выражение>
Тип возвращаемого значения: числовой.
Описание
Функция посылает на консоль (устройство, с которого запущена утилита lhb) текст указанного сообщения. Всегда возвращается значение
1.
Запись сообщения в файл протокола
Синтаксис
LOGPRINT(<сообщение >)
<сообщение>::= <символьное выражение>
Тип возвращаемого значения: числовой.
Описание
Функция помещает в файл протокола утилиты указанное сообщение. Если файл протокола не ведется, функция игнорируется. В любом случае возвращается значение
1.
Преобразование числа в строку
Синтаксис
TOSTR(<числовое выражение>)
Тип возвращаемого значения: символьный.
Описание
Функция преобразует числовое выражение в символьное представление.
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021
59

Предопределенные функции
Ввод строки с консоли
Синтаксис
GETSTR(<символьная переменная>)
Тип возвращаемого значения: символьный.
Описание
Функция осуществляет ввод с консоли символьного текста. Перед вводом данных на консоль выдается подсказка, текст которой содержится в параметре <символьная переменная> вызова функции. Максимальная длина вводимого текста равна 200
символам, признаком конца ввода является переход на новую строку.
Пример
GETSTR("lhb>Имя файла архива: ")
Ввод пароля
Синтаксис
GETPASS (<символьная переменная>)
Тип возвращаемого значения: символьный.
Описание
Функция осуществляет ввод с консоли символьного текста, представляющего пароль.
Вводимые символы визуально отображаются в виде «****». Перед вводом данных на консоль выдается подсказка, текст которой содержится в параметре <символьная переменная> вызова функции. Максимальная длина вводимого текста равна 200
символам, признаком конца ввода является переход на новую строку.
Пример
GETPASS("lhb>Пароль ?: ")
Значение переменной окружения
Синтаксис
GETENV (<имя переменной>)
<имя переменной>::= <символьное выражение>
Тип возвращаемого значения: символьный.
Описание
Функция возвращает значение заданной переменной окружения, если она существует,
и пустую строку – в противном случае.
Пример
GETENV ("SY00")
Пример сценария архивирования
//
60
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021

Предопределенные функции
// Пример сценария архивации
// ------------------------- variables:
NUM = 1;
rights:
everyday (time = '12:00')
{
if (CWEEKDAY() =="Sun") /* Новый архив создавать в воскресенье
*/
{
move (FILENAME + TOSTR(NUM) + ".lhb" , "c:\arc");
NUM = NUM + 1;
backup ("s -u " + NAME + "/" + PASSWORD + "
-f "+ FILENAME + TOSTR(NUM) + ".lhb -startinc");
}
else { /* В остальные дни ведется нарастающее архивирование */
backup ("s -u " + NAME + "/" + PASSWORD + "
-f " + FILENAME + TOSTR(NUM) + ".lhb -inc");
} /* end of 'if' */
exception: /* Обработка ошибок оператора 'everyday' */
print ("Error=" + TOSTR(CERROR) +
",LinError=" + TOSTR(LINERROR) +
",SysError=" + TOSTR(SYSERROR));
stop;
}
special:
before /* just after the start */
{
print ("Start backup system");
backup ("s -u " + NAME + "/" + PASSWORD + "
-f " + FILENAME + TOSTR(NUM) + ".lhb -startinc");
}
after /* after 'stop' or Ctrl-C */
{
print ("Stop backup system");
if (ERROR != 0)
logprint ("Error present:" + TOSTR(CERROR));
}
iferr /* global */
{
print ("Error=" + TOSTR(CERROR) +
",LinError=" + TOSTR(LINERROR) +
",SysError=" + TOSTR(SYSERROR));
stop;
}
1   2   3   4   5   6   7   8


написать администратору сайта