Un sous-programme est déclaré au meme moment
que les autres identificateurs. Par exemple:
procedure exemple is un : constant integer := 1; x, y : integer := 1; function succeseur(x:integer) return integer is z : integer := x; begin z := z +1; return(z); end succeseur; begin y := x + succeseur(3); end exemple;
Ce programme déclare deux variables x,y,
une constante un
et une fonction succeseur. Les actions entourées
par les begin ...end de la
procédure exemple
sont appelées programme principal
par oppostions aux actions des sous-programmes (ici, entourées
par begin, end succeseur).
De même qu'un programme déclare des identificateurs
(dont des sous-programmes), un sous-programme peut
aussi déclarer une grande variété d'identificateurs:
variables, constantes, sous-programmes, et d'autres encore.
Ces identificateurs sont alors dit locaux au sous-programme.
Il y a deux sortes d'identificateurs locaux à un
sous-programme:
les paramètres formels et les
identificateurs déclarés à l'intérieur
du sous-programme.
Dans la procédure
exemple, la fonction succeseur déclare un
paramètre formel x: integer et une variable
locale z : integer. Tous deux sont
locaux à la fonction.
Un identificateur local à un sous-programme
ne peut être utilisé qu'à l'intérieur de celui-ci.
Par opposition, les identificateurs
globaux sont déclarés par le programme
principal et sont utilisables dans tout
le programme, y compris à l'intérieur des sous-programmes.
Dans la procédure exemple les identificateurs
x, y et un sont globaux.
L'identificateur
x est déclaré à deux endroits: dans le programme
principal, et comme paramètre de la fonction successeur.
Il est donc à la fois global et local. Dans ce contexte,
comment donner sens à une utilisation de x à un endroit
donné du programme?
De manière générale, le
sens donné aux identificateurs
dépend de l'endroit où ils ont étés déclarés,
mais il dépend aussi de la portée et
de la visibilitée
de leurs déclarations.