Az alprogram fejléce az azonosítót és a formális paraméterek listáját adja meg, a törzs lokális változódeklarációkat és utasítások sorozatát tartalmazza. A törzs végét lezáró utasításban meg kell ismételni az alprogram azonosítóját. Az alprogram lehet eljárás, vagy eredményt is visszaadó függvény. Érdekesség, hogy mindkettôt ugyanaz a kulccszó jelzi. Szintaxis:
PROCEDURE Eljaras(Parameterek)
BEGIN
...
END Eljaras
vagy
PROCEDURE Fuggveny(Parameterek): EredmenyTipus
BEGIN
...
END Fuggveny
A formális paraméterek azonosítók, amelyekkel az alprogram a kapott adatokra hivatkozni fog. Az érték szerint átadott paraméter valójában lokális változó, amely kezdôértékét az aktuális paraméter - mint kifejezés - értékébôl kapja. A változó paraméter cím szerinti átadást jelöl. Ekkor az aktuális paraméternek változónak vagy rekord mezejének kell lennie és minden hivatkozás a formális paraméterre ezt a változót vagy mezôt fogja használni. A lokális változók értéke meghatározatlan az alprogramba való belépéskor, explicit inicializálni kell ezeket.
A formális paraméterek felsorolhatók egyenként vagy - ha az egymás utániak típusa megegyezik - csoportosítva is. A cím szerinti átadást külön jelezni kell, az alapértelmezést, az érték szerintit nem. Szintaxis:
Parameter1, ..., ParameterN: KozosTipus
vagy
Parameter1: Tipus1; ...; ParameterN: TipusN;
vagy
VAR ValtozoParameter: Tipus
Tömb típusú formális paraméter esetén lehagyhatók az indexhatárok
Parameter: ARRAY OF BazisTipus
formában. Ekkor az N elemû aktuális tömb indexhatára a [0, N-1] intervallumba képezôdik le és a formális tömb csak elemenként indexelve érhetô el vagy szintén indextartomány nélküli tömb paraméterû alprogramnak adható át.
Az alprogram hívásában az aktuális paramétereket ugyanabban a sorrendben és ugyanolyan típussal kell megadni, mint ahogy a formális paraméterek állnak az alprogram fejlécében. A típuskompatibilitás alóli kivétel a típus nélküli paraméter, amelyet a
Parameter: ARRAY OF WORD
formában kell definiálni. Ez minden típussal
kompatibilis. A függvény visszatérési értéke
csakis egyszerû típus lehet.
Az alprogram törzs elején deklarált konstansok, változók, típusok, modulok és alprogramok lokálisak az alprogramra nézve: kívülrôl nem láthatók. Az alprogramban látható az összes formális paraméter és lokálisan deklarált azonosító, valamint az alprogramot magába ágyazó alprogramok azon lokális azonosítói es azon globális azonosítók, amelyeket nem fed el egy ugyanolyan lokális azonosító.
Mivel alprogramok is deklarálhatók a törzs
elején, az alprogramok tetszôleges mélységben
egymásba ágyazhatók.