ADELIA |
|
|
|
|
(I/B) |
|
|
|
|
Paragraphe d'utilisation
Fin de paragraphe PROCEDURE
Syntaxe
FIN_PROCEDURE IdVar
IdVar |
→ |
IdVar | Rien |
Description
Cet ordre marque la fin d'une procédure interne au programme (sous-programme interne).
Une procédure peut être placée à n'importe quel endroit du programme.
Cependant :
Deux procédures ne peuvent pas être imbriquées.
Une procédure ne peut pas être écrite dans une imbrication de type SI ou TANT_QUE.
Une procédure ne peut pas être écrite dans des paragraphes TRT_TOTAL, TRT_CHANGEMENT, CHANGEMENT_PAGE, GESTION_SFL.
Chaque ordre FIN_PROCEDURE doit correspondre à un ordre DEBUT_PROCEDURE qui doit le précéder.
Le contrôle est rendu au programme derrière l'ordre qui a appelé cette procédure "TRAITER_PROC NomProcédure".
Si l'ordre FIN_PROCEDURE termine :
soit une procédure de type *PSSR (possible uniquement en RPG) :
DEBUT_PROCEDURE *PSSR,soit une procédure de type INFSR (possible en RPG pour définir une procédure déclarative) :
DEBUT_PROCEDURE PROFI1 où PROFI1 est une procédure de gestion d'erreur fichier (INFSR),
il est possible, dans ces deux cas, de préciser derrière l'ordre FIN_PROCEDURE une variable alphanumérique.
Par exemple :
FIN_PROCEDURE INSTRUC_RETOUR
Cette variable contient un mot-clé qui indique où le contrôle doit être rendu après l'exécution de la procédure ; voir les brochures IBM RPG concernant l'utilisation de cette variable associée à l'instruction ENDSR à propos des procédures déclaratives.
Important : les notions de *PSSR et de INFSR n'étant pas gérées avec le générateur C, la variable de fin de procédure n'est alors pas prise en compte.
Par exemple
SI ARTICLE EXISTE
VALEUR_TABLE = CODE_TAXE
TRAITER_PROC CLPRIX
SINON
VALEUR_TABLE = '000'
TRAITER_PROC CLPRIX
FIN
*
DEBUT_PROCEDURE CLPRIX
CLE_TABLE = 'TAXE'
LIRE FICHIER_TABLE
PRIX_TOTAL = ( PRIX_ART * QTE - REMISE ) * TAUX_TAXE
FIN_PROCEDURE
*
DEBUT_PROCEDURE *PSSR
SI *STATUT_PGM <> 0
CODE_FIN_PSSR = '*CANCL'
FIN
TRAV_ERR = *JOB
USER_ERR = *USER
HEURE HEURE_ERR
PGME_ERR = *NOM_PGM
APPELER TRACE_ERREURS TRAV_ERR USER_ERR HEURE_ERR PGME_ERR
FIN_PROCEDURE CODE_FIN_PSSR