A nyelv nem különbözteti meg az eljárások deklarációját a függvények deklarációjától. Az eljárásokat void visszatérési típusú függvényként kell deklarálni.
Paraméter nem fogadó függvények deklarálása két módon történhet:
Ezt a két esetet szemlélteti az alábbi példa.
A függvények formális paraméterei szerepelhetnek in, out vagy inout módosítóval.
Az in érték szerinti átadást, az out eredmény szerinti visszaadást, az inout pedig a kettőt együttesen jelenti.
Az in, out, inout kulcsszavak módosítják a kötési szemantikák jelentését. Az alábbi példában p a rendszertől kapott értéket veszi fel, de q inicializálatlan.
A fordítás eredménye:
Érdekesség, hogy ha q inout kulcsszóval van deklarálva, akkor a POSITION szemantika mindkét értelmében vonatkozik rá, de nem minden esetben fordítható.
Ezt mutatják be a következő példák.
q csak kimenetként szerepel
A fordítás eredménye megegyezik az előzővel:
Ha q ki és bemenetként is szerepel:
Hibát eredményez, a fordító nem ismeri fel q kettős szerepét:
Azonban, ha q nem-triviális kifejezésben (pl. szorzás eggyel, összeadás nullával) szerepel, akkor a program lefordul:
Eredménye:
Hogy ne kelljen profilonként külön kódot karbantartani, lehetőség van profil szerinti függvénytúlterhelésre.
A profil szerinti függvénytúlterhelés lehetőséget biztosít, hogy a program kevés extra kóddal a lehető legtöbb környezetben fusson, és hogy az adott környezet képességeit minél jobban kihasználja.