IBM Lotus Symphony


Применение процедур и функций

Ниже приведены основные сведения о применении процедур и функций в языке Basic Lotus® Symphony™.

Значок Примечание При создании модуля Basic в Lotus Symphony в него автоматически добавляется процедура с именем "Main". Это имя никак не связано со структурой или начальной точкой проекта Basic в Lotus Symphony. Более того, его можно изменить без каких бы то ни было последствий.

Процедуры (SUB) и функции (FUNCTION) позволяют структурировать программу путем разбиения ее на логические блоки.

Одно из преимуществ применения процедур и функций заключается в том, что однажды созданный код может многократно использоваться в других проектах.

Передача переменных в процедуры (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


Комментарии по продукту | Дополнительная документация | Товарные знаки