Модуль
Зміст
Покажчик 🔎︎

# Використання процедур і функцій

Далі описано основне використання процедур і функцій у LibreOffice Basic.

Коли користувач створює новий модуль, LibreOffice Basic автоматично вставляє процедуру SUB з ім'ям "Main". Це типове ім'я жодним чином не впливає на порядок або початкову точку проекту LibreOffice Basic. Дану процедуру SUB можна перейменувати.

Існують деякі обмеження для назв ваших публічних змінних і функцій. Не допускається використання назв, які збігаються з назвами модулів у бібліотеці.

Процедури (SUBS) і функції (FUNCTIONS) допомагають підтримувати структуроване уявлення за допомогою поділу програми на логічні частини.

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

## Передача змінних до процедур (SUB) і функцій (FUNCTION)

Змінні можуть бути передані процедурам і функціям. Процедуру або функцію необхідно оголосити так, щоб вона могла приймати параметри:

    Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
    Програмний код
    End Sub

Процедура SUB викликається за допомогою такого синтаксису:

    SubName(Value1, Value2,...)

Параметри, що передаються процедурою, повинні відповідати параметрам, зазначеним в оголошенні процедури.

Такий самий процес застосовується до функцій. До того ж функції завжди повертають результат виконання функції. Результат функції визначається шляхом присвоєння повернутого значення назві функції:

    Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
    Програмний код
    НазваФункції=Результат
    End Function

Функція викликається за допомогою такого синтаксису:

    Змінна=НазваФункції(Параметр1, Параметр2,...)

Для виклику процедури або функції можна також використовувати повне ім'я:
Library.Module.Macro()
Наприклад, для виклику макросу автотексту з бібліотеки Gimmicks використовується така команда:
Gimmicks.AutoText.Main()

## Передача змінних з допомогою значення або посилання

Параметри можуть бути передані процедурі чи функції або за допомогою посилання, або з допомогою значення. Якщо не вказано інше, параметр завжди передається за допомогою посилання. Це означає, що процедура або функція отримує параметр і може читати і змінювати його значення.

Якщо потрібно передати параметр за допомогою значення, то при виклику процедури або функції вставте перед параметром ключове слово "ByVal", наприклад:

    Результат = Функція(ByVal Параметр)

У цьому випадку вихідний вміст параметра не буде змінюватися функцією, бо вона тільки отримує значення, а не самий параметр.

## Область дії змінних

Змінна, визначена в процедурі або функції, залишається дійсною тільки до виходу з процедури. Така змінна називається локальною. У багатьох випадках змінна повинна бути дійсною у всіх процедурах, в кожному модулі всіх бібліотек або після виходу з процедури або функції.

### Оголошення змінних за межами процедури SUB або функції FUNCTION

    Global VarName As TYPENAME

Змінна існує, поки триває сеанс LibreOffice.

    Public VarName As TYPENAME

Змінна може бути використана у всіх модулях.

    Private VarName As TYPENAME

Змінна може бути використана тільки в цьому модулі.

    Dim VarName As TYPENAME

Змінна може бути використана тільки в цьому модулі.

### Приклад для приватних змінних

Змінні можуть бути визначені як приватні для всіх модулів шляхом встановлення CompatibilityMode(true).

    ' ***** Module1 *****
    Private myText As String
    Sub initMyText
        myText = "Здоровенькі були!"
        Print "In module1 : ", myText
    End Sub

    ' ***** Module2 *****
    'Option Explicit
    Sub demoBug
        CompatibilityMode( true )
        initMyText
        'Повернення порожнього рядка
        ' (або з'являється повідомлення про помилку для Option Explicit)
        Print "Зараз у модулі2 : ", myText
    End Sub

### Збереження вмісту змінної після виходу з процедури або функції

    Static VarName As TYPENAME

Змінна зберігає своє значення до наступного входу в цю функцію або процедуру. Оголошення змінної повинно існувати усередині процедури або функції.

## Вказівка типу значення, що повертається функцією

Як і у випадку змінних, вкажіть символ оголошення типу після назви функції або тип, позначений службовим словом "As", і відповідне ключове слово в кінці списку параметрів, щоб визначити тип значення, яке повертається функцією. Наприклад:

    Function WordCount(WordText As String) As Integer