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

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

Далі описано основне використання процедур і функцій у 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