Macro: procedures

<< Click to Display Table of Contents >>

Navigation:  Macro's > Macro: commando's en parameters >

Macro: procedures

Het is mogelijk om in de macrotaal eigen procedures te definieren. De procedures kunnen worden gebruikt voor veelvuldig door de macro uit te voeren groepen van instructies, zoals rekenkundige bewerkingen of afdrukbewerkingen. Een procedure moet eerst gedefinieerd worden.

 

Definitie van een procedure:

Procedure ( procedurenaam )

...

...

End

 

Gebruik van een procedure:

Call ( procedurenaam )

 

De procedures hebben geen parameters en werken alleen met globale variabelen. Proceduredefinities mogen niet genest worden. In een proceduredefinitie mag een eerder gedefinieerde procedure worden aangeroepen. Ook recursieve procedureaanroep is toegestaan.

 

Voorbeeld:

procedure(calculate_deviation)

// calculate (U-Uref) / Uref * 100%

set(x,U)

subtract(x,Uref)

divide(x,Uref)

multiply(x,100)

end

 

procedure(print_voltages)

text(U:6:2,' kV   ',Uref:6:2,' kV   ',x:6:2,' %')

end

 

loadflow(0,,true)

if(Network.Result,=,'LF')

   text('Voltage     Reference   Deviation')

   text('=======     =========   =========')

   set(Uref,node('MS-Station').U)

   forselection(node('MS-net'),MyNode)

      set(U,MyNode.U)

      call(calculate_deviation)

      call(print_voltages)

   end

else

   text('no loadflow')

end 

 

Deze macro geeft met het demo-net als resultaat:

Voltage     Reference   Deviation

=======     =========   =========

 10,36 kV    10,36 kV     0,00 %

 10,08 kV    10,36 kV    -2,75 %

 10,31 kV    10,36 kV    -0,48 %

  9,93 kV    10,36 kV    -4,16 %

 10,37 kV    10,36 kV     0,09 %

  9,93 kV    10,36 kV    -4,16 %