procedure NomDeLaProcédure ( liste des paramètres ); Déclaration des variables locales begin Instructions end;
La première ligne est l'entête de la procédure formée du mot clef procedure suivi du nom de la procédure et d'une liste optionnelle de paramètres entre parenthèse.
La partie entre begin et end est le corps de la procédure.
Sous sa forme la moins compacte, la liste des paramètres s'écrit:
paramètre1 : type1,...., paramètreN : typeN
On peut obtenir une écriture plus concise en regroupant les paramètres consécutifs de même type, mais dans ce cas chaque groupe de paramètres doit être séparé du suivant par un point virgule, sachant qu'un groupe de paramètres s'écrit:
paramètre1,...., paramètreN : type
Toute procédure n'utilise pas nécessairement des variables locales, mais si c'est le cas, elles doivent être déclarées entre l'entête et le premier begin.
NomDeLaProcédure ( liste des paramètres effectifs );
Dans l'exemple que nous avons présenté, les paramètres effectifs étaient des noms de variables. De manière générale, la liste des paramètres effectifs est constituée d'expressions quelconques séparées par des virgules:
expression1,...., expressionN
Pour que l'appel de procédure soit compilable (et exécutable !), le type de ces expressions doit être compatible avec celui des paramètres formels:
Reprenons l'exemple de la procédure FormerMail. Voici son entête:
procedure FormerMail (p,n,o : string);
Cette procédure possède donc trois paramètres formels de type chaine de caractères. En supposant que Prenom1, Prenom2 et Nom soient des variables de type chaine de caractères, elle pourrait être appelée de la manière suivante:
FormerMail (Prenom1+'-'+Prenom2, Nom, 'free');
Mais ne pourra être appelé d'aucune des manières suivantes:
FormerMail (Prenom1, Nom); FormerMail (Prenom1, Nom, 9);
En effet, dans le premier appel le nombre de paramètres effectifs n'est pas égal au nombre de paramètres formels et dans le deuxième, le type du troisième paramètre effectif (numérique) n'est pas compatible avec le type du troisième paramètre formel.
Un appel de procédure est toujours contenu dans une autre procédure, que nous appelerons la procédure appelante.
Reprenons l'exemple de la procédure FormerMail appelée de la manière suivante:
FormerMail (Prenom1+'-'+Prenom2, Nom, 'free');
En supposant que les variables Prenom1, Prenom2 et Nom aient respectivement pour valeur 'Jean', 'Sebastien' et 'Bach', cet appel donnerait lieu aux opérations suivantes (pour voir le code de la procédure à droite , cliquez ici) :