Pour utiliser la procédure il suffit de l'invoquer par son nom comme un opérateur classique.
Exemple complet :
DEBPROC MODULO II*ENTIER JJ*ENTIER;
SI( JJ EGA 0) ; MESSAGE ' NOMBRE ZERO INACCEPTABLE';.... ;FINSI;
KK = II / JJ;
MOD = II - ( KK * JJ) ;
FINPROC MOD ;
X = 35 ; Y = 6 ; KK = 18;
Z = MODULO X Y ;
MESSAGE ' Z VAUT ' Z 'KK VAUT ENCORE ' KK;
Cette séquence produit le message :
Z VAUT 5 KK VAUT ENCORE 18
On remarque bien que la définition de KK à l'intérieur de la procédure n'affecte
pas sa valeur à l'extérieur. On aurait pu provoquer une erreur d'exécution de la
procédure si avant de l'appeler on avait surchargé une valeur à SI. Par exemple, en
supposant la même définition de la procédure MODULO la séquence suivante
provoque une erreur.
SI = 32; X = 35 ; Y = 6 ; KK = 18;
Z = MODULO X Y ;
En effet à l'intérieur de la procédure la commande : "32 FAUX" n'a pas
de sens. Pour se prémunir du surchargement des noms d'opérateurs dans les
procédures, il suffit de les mettre entre quotes, afin que l'analyseur
de syntaxe
les considère toujours comme des mots et non comme un nom d'objet ( par chance,la
plupart du temps cet objet n'existe pas. Une procédure du domaine
public à donc
tout intérêt à être écrite comme suit :
'DEBPROC' MODULO II*'ENTIER' JJ*'ENTIER';
'SI'( JJ 'EGA' 0) ; 'MESSAGE' ' NOMBRE ZERO INACCEPTABLE';.... ;'FINSI';
KK = II / JJ;
MOD = II - ( KK * JJ) ;
'FINPROC' MOD ;
Dans ce cas là, aucune mésaventure ne peut arriver. A la lecture de cette
procédure, on remarque des points de suspension. Il y aurait besoin ici d'un
opérateur pour sortir de la procédure.