<< Klik om de inhoudsopgave weer te geven >> Navigatie: 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 %