Добавление операторов в главный блок
После того, как вы описали переменные для процедуры, необходимо добавить код, который будет с ними работать для достижения необходимой функциональности процедуры. Рассмотрим по шагам как:
- присваивать значения переменным;
- выводить информацию с помощью оператора message;
- выполнить возврат из процедуры.
Присваивание значения переменной
Оператор присваивания (=) в ABL аналогичен операторам присваивания в других языках программирования. Синтаксис оператора подразумевает указание имени переменной слева от оператора, а присваиваемое значение справа. Тип значения должен соответствовать типу переменной. Если переменная имеет значение в момент присваивания, то это значение будет заменено новым.
Синтаксис оператора присваивания:
<variable-name> = <value>.
Значением переменной может быть константа, другая переменная или значение, определённое во время выполнения, например, возвращённое значение функции.
Пример присваивания значений переменным CustomerName, CurrentNum и CustomerNum:
CustomerName = "Петрович". // переменная OldNum должна иметь тот же тип, что у переменной CurrentNum CurrentNum = OldNum. /* функция GetNextNum() должна возвращать значение с тем же типом, что у переменной CustomerNum */ CustomerNum = GetNextNum().
Присваивание значений нескольким переменным
Если вам необходимо присвоить значения нескольким переменным одновременно, то вы должны использовать оператор assign. Такой подход к присваиванию является более предпочтительным, так как это позволяет работать приложению более эффективно в отличие от раздельного присваивания значений каждой переменной.
Синтаксис оператора assign:
assign <var-1> = <val-1> <var-2> = <val-2> <var-n> = <val-n> .
Пример использования оператора assign:
assign CustomerName = "Петрович" CurrentNum = OldNum CustomerNum = GetNextNum() .
Вывод информации оператором message
Оператор message – это быстрый и самый простой способ вывода сообщений и значений переменных на экран или в файл. Например, если код работает в Developer Studio или не в серверном процессе, то вы можете использовать этот оператор для записи информации в обычный файл или отображения на экране в виде всплывающего окна. Если код исполняется на сервере приложений, то с помощью оператора message можно записывать информацию в лог сервера приложений.
Если вы хотите с помощью оператора message записать информацию в файл, то вы должны заключить его в блок операторов output to и output close. Синтаксис в этом случае будет следующим:
[output to <filename>.] . . . message <value-1> <value-2> [skip] <value-n> [view-as alert-box]. . . . [output close.]
filename
Имя файла в который необходимо вывести информацию оператором message. Файл может иметь как полный, так и относительный путь. Относительный путь определяется тем, где выполняется ABL-код.
skip
Ключевое слово для разделения информации на строки, что улучшает читаемость. Ключевое слово skip игнорируется в случае записи сообщения журнал сервера приложений.
view-as alert-box
Ключевое слово используемое для вывода сообщения в виде pop-up окна на экран.
Пример использования оператора message для вывода информации в текстовый файл:
output to C:\OpenEdge\WRK\myApp.txt. message "Имя клиента: " CustomerName skip "Номер клиента " CustomerNum. output close.
Результат:
Пример использования оператора message для вывода информации в виде всплывающего окна на экран:
message "Имя клиента: " CustomerName skip "Номер клиента " CustomerNum view-as alert-box.
Результат:
Возврат из процедуры
По умолчанию, когда в процедуре завершает работу последний оператор, работа процедуры тоже завершается. Если процедура вызвана из другой части приложения, то управление возвращается вызывающей части приложения. Хорошей практикой является указания оператора return в качестве последнего оператора процедуры. Синтаксис этого оператора простой:
return.
Следующий пример демонстрирует законченную процедуру, в которой определены переменные, присваиваются значения им, выводятся на экран данные и выполняется возврат из процедуры:
/* *************************** Definitions ************************** */ block-level on error undo, throw. /* ******************** Preprocessor Definitions ******************** */ define variable CustomerNum as integer no-undo initial 1. define variable CustomerName as character no-undo. /* *************************** Main Block *************************** */ assign customerNum = 777 customerName = "Петрович" . message "Имя клиента: " CustomerName skip "Номер клиента " CustomerNum view-as alert-box. return.