Alprogramok alprogramokban
Az alprogramokat a főprogram deklarációs részében kell megadnunk. Az alprogramok azonban egymásba is ágyazhatók, így tehát egy alprogramhoz is rendelhető alprogram:
Procedure eljaras1(a, b : Integer);
Procedure eljaras2(x, y: Word);
Begin
{az eljaras2 törzse}
End;
Begin
{az eljaras1 törzse}
End;
Begin
{a főprogram törzse
End.
Alprogramok hatásköre, láthatósága
Ahogyan változók esetében, úgy az alprogramoknál is értelmezhető a láthatóság és a hatókör fogalma. A fenti példában az eljaras2 az eljaras1 lokális neve, így az eljaras2 alprogramot csak az eljaras1-ből hívhatjuk meg, a főprogramból, vagy más alprogramból nem.
Rekurzió
A rekurzió olyan programozási erszköz, mely során az alprogram önmagát hívja, közvetlenül, vagy közvetve (egy másik alprogramon keresztül). Ha a hívás közvetve történik, akkor a hívási láncban sérül a kötelező előredeklarálási szabály. Ezért az ilyen esetekben az egyik alprogram fejét a deklarációk között előre kell hozni, és a Forward előredeklaráló direktívával kell ellátni. Az alábbi példa mutatja ezt az esetet.
Procedure Egy ( {formális paraméterek} ); Forward;
Procedure Ketto ( {formális paraméterek} );
{deklarációk}
Begin
{utasítások}
Egy({aktuális paraméterek});
{utasítások}
End; {Ketto}
Procedure Egy ( {formális paraméterek} );
{deklarációk}
Begin
{utasítások}
Ketto({aktuális paraméterek});
{utasítások}
End; {Egy}
Begin
utasítások}
End. {főprogram}
Az a folyamat, amikor egy alprogram önmagát hívja alprogramként, vagy egy olyan másik alprogramot, amely meg fogja hívni ezt az adott alprogramot ismét.