Modul
Isi
Indeks 🔎︎

# Menggunakan Prosedur dan Fungsi

Berikut ini dijelaskan penggunaan-penggunaan dasar untuk prosedur dan fungsi di dalam LibreOffice Basic.

Ketika kamu membuat modul baru, LibreOffice Secara otomatis akan memasukkan sebuah SUB yang disebut "Main". Nama default ini tidak ada hubungannya dengan pesanan atau titik awal dari proyek dasar LibreOffice. Anda juga dapat mengganti nama SUB ini dengan aman.

Beberapa batasan berlaku untuk nama variabel publik Anda, subs, dan fungsi. Anda tidak boleh menggunakan nama yang sama dengan salah satu modul dari pustaka yang sama

Prosedur (SUBS) dan Fungsi (FUNCTIONS) membantu Anda menjaga ringkasan yang terstruktur dengan memisahkan program menjadi bagian yang logis.

Satu keuntungan dari prosedur dan fungsi adalah ketika Anda selesai mengembangkan sebuah kode program yang mengandung komponen-komponen tugas di dalamnya, maka kode-kode ini bisa Anda pakai pada proyek yang lain.

## Melewatkan Variabel ke Prosedur (SUB) dan Fungsi (FUNCTION)

Variabel dapat diteruskan untuk prosedur dan fungsi. SUB atau FUNCTION harus dideklarasikan untuk mengharapkan parameter:

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

    Kode program

    End Sub

SUB dipanggil dengan sintaksis berikut:

    SubName(Value1, Value2,...)

Parameter yang diteruskan ke SUB harus sesuai dengan yang ditentukan dalam deklarasi SUB.

Proses yang sama berlaku untuk FUNGSI. Sebagai tambahan, fungsi selalu mengembalikan hasil fungsi. Hasil dari fungsi ditetapkan dengan memberikan nilai kembalian ke nama fungsi:

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

    Kode program

    NamaFungsi=Hasil

    End Function

FUNCTION dipanggil dengan sintaksis berikut:

    Variabel=NamaFungsi(Parameter1, Parameter2,...)

Anda juga dapat menggunakan fully qualified name untuk memanggil prosedur atau fungsi:
Library.Module.Macro()
Contohnya, untuk memanggil makro Autotext dari pustaka Gimmicks, gunakan perintah berikut:
Gimmicks.AutoText.Main()

## Meneruskan Variabel berdasarkan Nilai atau Referensi

Beberapa parameter dapat diteruskan ke sebuah SUB atau sebuah FUNCTION antara berdasarkan acuan atau berdasarkan nilai. Kecuali jika tidak ditentukan, sebuah parameter selalu diteruskan berdasarkan acuan. Itu berarti bahwa sebuah SUB atau sebuah FUNCTION mengambil parameter dan dapat membaca dan memodifikasi nilainya.

Jika Anda ingin meneruskan parameter dengan memasukkan nilai kata kunci "ByVal" di depan parameter ketika Anda menyebut SUB atau FUNGSI, contohnya:

    Hasil = Fungsi(ByVal Parameter)

Dalam hal ini, konten asli dari parameter tidak akan dimodifikasi oleh FUNGSI karena hanya mendapat nilai dan bukan parameter itu sendiri.

## Cakupan Variabel

Sebuah variabel yang didefinisikan dalam SUB atau FUNGSI, hanya tetap berlaku sampai prosedurnya keluar. Ini dikenal sebagai variabel "lokal". Dalam banyak kasus, Anda memerlukan variabel untuk berlaku di semua prosedur, di setiap modul semua pustaka, atau setelah SUB atau FUNGSI dikeluarkan.

### Mendeklarasikan Varibel di Luar SUB atau FUNCTION

    GLOBAL VarName As TYPENAME

Variabel ini berlaku selama LibreOffice sesi berlangsung.

    PUBLIC VarName As TYPENAME

Variabelnya sah untuk semua modul.

    PUBLIC VarName As TYPENAME

Variabelnya hanya sah untuk modul ini.

    PUBLIC VarName As TYPENAME

Variabelnya hanya sah untuk modul ini.

### Contoh untuk variabel privat

Terapkan variabel pribadi menjadi pribadi di seluruh modul dengan menyetel CompatibilityMode (Benar).

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

    Private myText As String

    Sub initMyText

        myText = "Hello"

        print "in module1 : ", myText

    End Sub

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

    'Option Explicit

    Sub demoBug

        CompatibilityMode( true )

        initMyText

        ' Sekarang menghasilkan string kosong

        ' (atau mencapai kesalahan/error pada Option Explicit)

        print "Now in module2 : ", myText

    End Sub

### Menyimpan Isi Variabel Usai Keluar dari SUB atau FUNCTION

    STATIC VarName As TYPENAME

Variabel mempertahankan nilainya sampai waktu selanjutnya FUNCTION atau SUB dimasukkan. Deklarasi harus ada di dalam SUB atau FUNGSI.

## Menentukan Tipe Nilai Pengembalian dari FUNGSI

Seperti halnya variabel, menyertakan sebuah karakter deklarasi tipe setelah nama fungsi, atau jenis yang ditunjukkan oleh "As" dan kata kunci yang sesuai di akhir daftar parameter untuk menentukan jenis nilai pengembalian fungsi, sebagai contoh:

    Function WordCount(WordText As String) As Integer