Modulo
Contenuto
Indice 🔎︎

# Usare procedure e funzioni

Questa sezione descrive gli usi principali delle procedure e delle funzioni in LibreOffice Basic.

Quando create un nuovo modulo, LibreOffice Basic inserisce automaticamente una SUB (subroutine) di nome "Main". Questo nome predefinito non influisce in alcun modo sull'ordine o sul punto di partenza dei progetti di LibreOffice Basic. Potete anche rinominare senza problemi questa SUB.

Ai nomi delle variabili, subroutine e funzioni pubbliche si applicano alcune restrizioni. Non dovete usare lo stesso nome utilizzato come nome di uno dei moduli della stessa libreria.

Le procedure (SUB) e le funzioni (FUNCTION) vi aiutano a mantenere una visione strutturata del programma, separandolo in parti logiche.

Uno dei vantaggi delle procedure e delle funzioni è che, una volta sviluppato un codice di programma con componenti per un dato compito, potete usare lo stesso codice per altri progetti.

## Passare variabili alle procedure (SUB) e alle funzioni (FUNCTION)

Le variabili possono essere passate sia alle procedure, sia alle funzioni. La dichiarazione della subroutine o della funzione deve specificare i parametri ammessi:

    Sub SubName(Parameter1 As Type, Parameter2 As Type,...)

    Codice del programma

    End Sub

La SUB (subroutine) viene chiamata con la sintassi seguente:

    SubName(Value1, Value2,...)

I parametri passati a una subroutine devono corrispondere a quelli specificati nella relativa dichiarazione.

Lo stesso procedimento può essere applicato alle FUNCTION (funzioni) per restituire il risultato di una funzione. Tale risultato può essere definito direttamente prima di raggiungere la fine della funzione, assegnando il nome della funzione e un parametro al valore che dovrà essere restituito dalla funzione:

    Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type

    Codice del programma

    NomeFunzione=Risultato

    End Function

La FUNCTION (funzione) viene chiamata con la sintassi seguente:

    Variabile=NomeFunzione(Parametro1, Parametro2,...)

Potete usare anche un nome qualificato per richiamare una procedura o funzione:
Libreria.Modulo.Macro()
Ad esempio, richiamate la macro per il testo automatico dalla libreria Gimmicks col seguente comando:
Gimmicks. AutoText.Main()

## Passare le variabili per valore o riferimento

I parametri possono essere passati alla SUB (subroutine) o alla FUNCTION (funzione) attraverso un riferimento oppure usando un valore. Se non specificato diversamente, i parametri vengono sempre passati mediante un riferimento. Ciò significa che la SUB o la FUNCTION ricevono il parametro e possono leggerne o modificarne il valore.

Se volete passare un parametro per valore, inserite la parola chiave "ByVal" davanti al parametro quando chiamate la SUB o la FUNCTION, ad esempio:

    Risultato = Function(parametro ByVal)

In questo caso, il contenuto originale del parametro non verrà modificato dalla FUNCTION, poiché questa riceverà solo il valore e non il parametro vero e proprio.

## Ambito delle variabili

Una variabile definita solo entro un blocco SUB o FUNCTION rimane valida solo finché la procedura è in corso. Questa variabile si chiama variabile "locale". In molti casi, vi potrebbe servire una variabile che sia valida in tutte le procedure, in ciascun modulo di tutte le librerie o dopo che una SUB o FUNCTION è terminata.

### Dichiarare variabili al di fuori di una SUB o una FUNCTION

    Global NomeVar As TIPO

La variabile è valida per la durata della sessione di LibreOffice.

    Public NomeVar As TIPO

La variabile è valida in tutti i moduli.

    Private NomeVar As TIPO

La variabile è valida solo nel modulo attivo.

    Dim NomeVar As TIPO

La variabile è valida solo nel modulo attivo.

### Esempio per variabili private

Forza le variabili private a rimanere tali in altri moduli impostando CompatibilityMode(true).

    ' ***** Module1 *****

    Private myText As String

    Sub initMyText

        myText = "Ciao"

        Stampa "In modulo1 : ", myText

    End Sub

    ' ***** Module2 *****

    'Option Explicit

    Sub demoBug

        CompatibilityMode( true )

        initMyText

        ' Ora restituisce una stringa vuota

        ' (o restituisce un errore per Option Explicit)

        Stampa "Ora in modulo2 : ", myText

    End Sub

### Salvare il contenuto di una variabile dopo l'uscita da una SUB o da una FUNCTION

    Static NomeVar As TIPO

La variabile mantiene il proprio valore finché non ha inizio la FUNCTION o la SUB successiva. La dichiarazione deve essere all'interno di una SUB o di una FUNCTION.

## Specificare il tipo di valore di ritorno di una FUNCTION

Come per le variabili, per definire il tipo di valore di ritorno della funzione inserite un carattere di dichiarazione del tipo dopo il nome della funzione, oppure il tipo indicato da "As" e dalla parola chiave corrispondente, alla fine dell'elenco dei parametri, ad esempio:

    Function WordCount(WordText As String) As Integer