A Lingo-terminológia az alprogramokat eseménykezelőnek (handler) nevezi. Az alprogramokat szkriptekben tudjuk megadni, lehetőségünk van mind eljárások, mind függvények megadására.
Az alprogramok (eseménykezelők) megadása a következő módon történik:
Amennyiben az alprogram törzsében szerepel a return utasítás, az alprogram függvényként viselkedik. Amennyiben nem szerepel, az alprogram eljárásnak tekinthető.
Az eseménykezelő fejrészében, a szignatúra részeként megadható argumentumlista. Ekkor az alprogram paraméterekkel hívható. A formális és aktuális paraméterlistában a paraméterek számának nem kell megegyeznie:
A hívottAlprogram-ban a d változó lokális név lesz, és mivel nem kap értéket, kiíráskor értéke void lesz.
Az aktuális paraméterlistában több argumentum van, mint a formálisban. Ekkor a hívottAlprogram-ban az a értéke 1 lesz, a b értéke 2, az aktuális paraméterlista harmadik argumentuma, a 3 ebben a példában figyelmen kívül marad.
Lehetőségünk van olyan alprogramokat is készíteni, melyben nem adunk meg formális paraméterlistát, hanem minden híváskor kiértékeljük azok számát. Ehhez a param() és a paramCount függvényeket kell használnunk:
A paraméterátadás mindig érték szerinti. Abban az esetben, ha egy szkriptben ugyanazt az azonosítót kapja egy globális változó és egy paraméter a formális paraméterlistában, akkor az azonosítóhoz rendelt érték a globális változó értéke lesz.
A Lingo nem tiltja a rekurziót. Az alprogramokat a Lingo terminológiája eseménykezelőknek (handler) nevezik, az eseménykezelőket szkriptekben tudjuk megadni az alábbi módon:
Az eseménykezelők hívásakor azok nevét kell csak megadnunk. Rekurzív hívás tehát a következő módon történhet: