Інструкції виклику підпрограм.

При розгляді структури макрорсів було зазначено, що існують два види макросів: макроси-процедури (Sub) і макроси-функції (Function). З точки зору класичного структурного програмування, і функції, і процедури є підпрограмами і мали б виконуватися лише після виклику із головної програми. Проте, і макроси Sub, і макроси Function в OOo Basic доступні для запуску на виконання, наприклад, командою Run. Це можна пояснити тим, що для макросів головною програмою є сам OpenOffice, в рамках якого підпограми можна викликати різними способами: виконанням команд меню, натисканням комбінацій “гарячих” клавіш на клавіатурі, тощо. Проте “класичний” механізм виклику одного макроса із коду іншого макроса у OOo Basic також передбачений та часто використовується.

Макроси Sub (підпрограми-процедури) викликаються у коді іншого макроса окремою інструкцією, яка складається з імені цього макроса, наприклад:

Sub Hello
MsgBox “Привіт!”
End Sub

Sub DemoSub
Hello
End Sub

У цьому приклад макрос DemoSub складається з однієї інструкції – виклику макроса Hello, яка власне переходить до виконання інструкцій цього макроса.

Якщо потрібно викликати макрос-процедуру з параметрами, (при описі таких макросів, список параметрів вказується у дужках після імені макроса) то інструкції яка містить лише ім’я макроса переважно недостатньо. При виклику такої підпрограми потрібно задати значення для його параметрів. Виклик процедури з параметрами виконується інструкцією вигляду:

<Ім’яПроцедури> <СписокФактичнихПараметрів>

де СписокФактичнихПараметрів – список значень аргументів, які передаються процедурі, розділених комами. Він повинен відповідати списку формальних параметрів (параметрів, заданих при описі процедури) за кількістю, типом та порядком аргументів у списку. Якщо при передачі параметрів опускається необов’язковий аргумент, то на його місці ставлять пропуск, обмежений з двох боків комами.

Звертання до підпрограм-функцій (макросів Function) з коду іншого макроса повинно бути частиною інструкції присвоєння справа від знака “=”, оскільки підпрограми-функції обчислюють результат, який, у вигляді значення заданого типу, повертають у програму, що їх викликала. Справа від знака “=” в інстукції присвоєння може бути вираз, що містить звертання до декількох різних функцій. Щоб уникнути непорозумінь при обчисленні виразів, список фактичних параметрів функцій беруть у круглі дужки, навідміну від списку фактичних параметрів процедур.