Edukiak

# Prozedurak, funtzioak eta propietateak erabiltzea

Hurrengoak LibreOffice Basic lengoaiaren prozedura, funtzio eta propietateen oinarrizko erabilera deskribatzen du.

Modulu berria sortzen denean, LibreOffice Basic lengoaiak automatikoki txertatzen du "Main" izena duen Sub bat. Izen lehenetsi horrek ez du inolako eraginik LibreOffice Basic proiektuaren hasiera-puntuaren ordenarekin. Sub errutina horren izena arazorik gabe aldatu daiteke.

Zenbait muga aplikatzen zaizkie aldagai, azpierrutina, funtzio eta propietate publikoen izenei. Ezin da erabili liburutegi bereko moduluetako edozeinen izen bera.

Prozedurak (Sub errutinak), funtzioak (Function) eta propietateak (Property) erabilita, programaren ikuspegi orokor egituratua izan daiteke, programa zati logikoetan zatituta.

Prozedura, funtzio eta propietateen onuretako bat da, zeregin-osagaiak dituen programa-kodea garatu ondoren, kode hori beste proiektu batzuetan erabili daitekeela.

## Aldagaiak pasatzea prozedura, funtzio eta propietateei

Aldagaiak prozedurei, funtzioei zein propietateei pasatu dakizkiete. Sub, Function edo Property elementuak deklaratu behar dira parametroak espero izateko:

      Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
          ' zure kodea hemen doa
      End Sub

Sub elementuak honako sintaxia erabilita deitzen dira:

      [Call] SubName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)

Sub bati pasatutako parametroek Sub deklarazioan zehaztutakoekin bat etorri behar dute.

Prozesu bera aplikatzen zaio Function bati. Horrez gain, funtzioek beti itzultzen dute funtzio bat. Funtzio bate5n emaitza funtzio-izenari itzulitako balioa esleituta definitzen da:

      Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
          ' zure kodea hemen doa
          FunctionName=Result
      End Function

Function deitzeko, erabili honako sintaxia:

      Variable = FunctionName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)

Propietateek prozeduren eta funtzioen sintaxia konbinatzen dute. Property batek normalean parametro bat behar du.

      Private _IsApproved As TYPENAME
      Property Get IsApproved As TYPENAME
          ' zure kodea hemen doa
          IsApproved = some_computation
      End Property
      Property Let IsApproved(value As TYPENAME)
          ' zure kodea hemen doa
          _IsApproved = computed_value
      End Property

Property deitzeko, erabili honako sintaxia:

      var = IsApproved
      IsApproved = some_value

Izen kualifikatu osoa ere erabili daiteke prozedura, funtzio edo propietate bati deitzeko:
[Call] Library.Module.Macro(), non Call aukerakoa den.
Adibidez, Gimmicks liburutegiko Autotext makroari deitzeko, erabili honako komandoa:
Gimmicks.AutoText.Main()

## Aldagaiak balio edo erreferentzia bidez pasatzea

Parametroak prozedura bati, funtzio bati edo propietate bati pasatu dakizkioke, bai erreferentzia modura bai balio modura. Ezer adierazten ez bada, parametro bat beti erreferentzia modura pasatzen da. Horrek esan nahi du Sub, Function edo Property elementuak parametroa jaso eta bere balioa irakurri eta aldatu dezakeela.

Parametro bat balio modura pasatu nahi bada, ByVal kodea erabili behar da parametroaren aurrean Sub, Function edo Property elementua deitzen denean. Adibidez:

      Function ReadOnlyParms(ByVal p2, ByVal p2)
          ' zure kodea hemen doa
      End Function
      result = ReadOnlyParms(parm1, parm2)

Kasu honetan Function funtzioak ez du parametroaren jatorrizko edukia aldatuko, haren balioa hartzen baitu, ez parametroa bera.

## Aukerako parametroak definitzea

Funtzioak, prozedurak edo propietateak aukerako parametroekin definitu daitezke, adibidez:

      Sub Rounding(number, Optional decimals, Optional format)
          ' zure kodea hemen doa
      End Sub

## Kokalekuaren araberako edo gako-hitzen bidezko argumentuak

Funtzio bati edo azpierrutina bati deitzen zaionean, haien argumentuak kokalekuaren arabera edo izenaren arabera pasatu daitezke. Kokalekuaren arabera pasatzeak esan nahi du argumentuak funtzioan edo azpierrutinan definituta dauden ordena berean zerrendatzen direla. Izenaren arabera pasatzeko, argumentuari parametroaren izena, bi puntu eta berdin ikur bat atxiki behar zaizkio aurrean (:=). Gako-hitzen bidezko argumentuak edozein ordenatan agertu daitezke. Begiratu Basic-en Replace() funtzioa horren adibideak ikusteko.

Parametro gutxiago pasatu behar badira, erabili gako-hitzen bidezko argumentuak. Kasu horretan kokalekuaren arabera pasatu nahi badira argumentuak, parametro guztietarako eman behar dira balioak, berdin dio aukerakoak diren ala ez. Horrela, balioak kokaleku zuzenean sartzen direla ziurtatuko da. Parametroak izenaren arabera -gako-hitzen bidezko argumentuak- pasatzen badira, tarteko argumentuak ez dago sartu beharrik.

## Aldagaien esparrua

Sub, Function edo Property batean definitutako aldagai bat baliozkoa izango da prozesuratik irten arte soilik. Horri aldagai "lokal" deritzo. Zenbait kasutan, hala ere, aldagai bat beharrezkoa izaten da prozedura guztietan, liburutegi guztietako modulu guztietan edo Sub, Function edo Property batetik irten ondoren ere.

### Aldagaiak deklaratzea Sub, Function edo Property batetik kanpo

    Global VarName As TYPENAME

Aldagaia LibreOffice saioak irauten duen bitartean da baliozkoa.

    Public VarName As TYPENAME

Aldagaia baliozkoa da modulu guztietan.

    Private VarName As TYPENAME

Aldagaia modulu honetan bakarrik da baliozkoa.

    Dim VarName As TYPENAME

Aldagaia modulu honetan bakarrik da baliozkoa.

### Aldagai-pribatuen adibideak

Aldagai pribatuak modulu guztietan pribatu izan daitezke, ezarri CompatibilityMode(True).

      ' ***** Module1 *****
      Private myText As String
      Sub initMyText
          myText = "Kaixo"
          print "in module1 : ", myText
      End Sub

      ' ***** Module2 *****
      'Option Explicit
      Sub demoBug
          CompatibilityMode( True )
          initMyText
          ' Now kate huts bat ematen du
          ' (edo errorea sortzen du Option Explicit funtziorako)
          print "Now in module2 : ", myText
      End Sub

### Aldagaiaren edukia gordetzea Sub, Function edo Property batetik irten ondoren

      Static VarName As TYPENAME

Aldagaiak bere balioa gordetzen du Function, Sub edo Property bat berriro sartu arte. Deklarazioak Sub, Function edo Property baten barruan existitu behar du.

## Function edo Property batek itzuliko duen balio mota zehaztea

Aldagaietan bezala, sartu mota deklaratzeko karaktere bat funtzioaren izenaren ondoren, edo As kodeak adierazitako mota eta hari dagokion datu mota parametro-zerrendaren amaieran, funtzioaren edo propietatearen itzulerako balioaren mota definitzeko. Adibidez:

      Function WordCount(WordText As String) As Integer

Erlazionatutako gaiak

CompatibilityMode() funtzioa

Option Explicit instrukzioa

Aukerako gako-hitza

Property insktrukzioa

Static inkstrukzioa