IBM Lotus Symphony
|
Ниже приведены основные сведения о применении процедур и функций в языке Basic Lotus® Symphony™.
![]() |
При создании модуля Basic в Lotus Symphony в него автоматически добавляется процедура с именем "Main". Это имя никак не связано со структурой или начальной точкой проекта Basic в Lotus Symphony. Более того, его можно изменить без каких бы то ни было последствий. |
Процедуры (SUB) и функции (FUNCTION) позволяют структурировать программу путем разбиения ее на логические блоки.
Одно из преимуществ применения процедур и функций заключается в том, что однажды созданный код может многократно использоваться в других проектах.
И в процедуры, и в функции можно передавать переменные. Для этого необходимо объявить параметры в процедуре (SUB) или функции (FUNCTION):
SUB Имя_процедуры( Параметр1 As Тип, Параметр2 As Тип,... )
Код программы
END SUB
Процедура вызывается следующим образом:
Имя_процедуры(Значение1, Значение2,...)
Параметры, передаваемые в процедуру, должны соответствовать тем, которые в ней объявлены.
Все вышесказанное относится и к функциям. Кроме того, функция всегда возвращает значение - результат выполнения функции. Результат определяется путем присвоения возвращаемого значения имени функции:
FUNCTION Имя_функции(Параметр1 As Тип, Параметр2 As Тип,...) As Тип
Код программы
FunctionName=Result
End Function
Функция вызывается следующим образом:
Переменная=Имя_функции(Параметр1, Параметр2,...)
![]() |
Процедуры и функции можно вызывать, используя их глобальные полные имена — библиотека.модуль.макрос(). Например, вызов макроса Autotext из библиотеки Gimmicks будет иметь вид Gimmicks.AutoText.Main(). |
Параметры могут передаваться в процедуру или функцию по ссылке или по значению. По умолчанию параметр всегда передается по ссылке. Это означает, что процедура или функция получает параметр и может считывать и изменять его значение.
Для передачи параметра по значению используется ключевое слово ByVal перед параметром в вызове процедуры или функции, например:
Result = Function( ByVal Parameter)
В этом случае функция не изменит исходное значение параметра, поскольку она получит только значение, но не сам параметр.
Переменная, определенная в процедуре или функции, действует только во время выполнения этой процедуры или функции. Такая переменная называется "локальной". В то же время, часто требуется, чтобы переменная действовала во всех процедурах, всех модулях любых библиотек или после завершения процедуры или функции.
GLOBAL имя-переменной As тип
Переменная будет действовать в течение всего сеанса работы в Lotus Symphony.
PUBLIC имя-переменной As тип
Переменная будет действовать во всех модулях.
PRIVATE имя-переменной As тип
Переменная будет действовать только в данном модуле.
DIM имя-переменной As тип
Переменная будет действовать только в данном модуле.
Задайте CompatibilityMode(true), чтобы внутренние переменные были внутренними на уровне модулей.
REM ***** Модуль-1 *****
Private myText As String
Sub initMyText
myText = "Привет!"
print "в модуле-1: ", myText
End Sub
REM ***** Модуль-2 *****
'Option Explicit
Sub demoBug
CompatibilityMode(true)
initMyText
' Возвращает пустой строки
' (или вызывает ошибку для Option Explicit)
print "Теперь в модуле-2: ", myText
End Sub
STATIC имя-переменной As тип
Переменная сохранит свое значение до следующего входа в процедуру или функцию. Объявление должно находиться внутри процедуры или функции.
Как и в случае переменных, для того чтобы задать тип значения, возвращаемого функцией, добавьте знак объявления типа после имени функции или слово "As" и ключевое слово, указывающее тип, в конце списка параметров, например:
Function WordCount(WordText as String) as Integer