ILE RPG Traitement des exceptions
ILE RPG fournit quatre types de mécanismes de traitement des exceptions:
- Un indicateur d'erreur ou un gestionnaire d'extension de code d'opération'E'
- Un groupe MONITOR
- Un gestionnaire de sous-routine d'erreur
- Un gestionnaire d'exceptions par défaut
RPG catégorise les exceptions en deux classes, programme et fichier, ce qui détermine le type de sous-programme d'erreur appelé. Quelques exemples d'exceptions de programme sont la division par zéro, l'index de tableau hors limites ou SQRT d'un nombre négatif. Des exemples d'exceptions de fichier sont le type d'enregistrement non défini ou une erreur d'unité.
Il existe cinq façons d'indiquer que RPG doit gérer une exception. Vous pouvez
:
- Indiquez un indicateur d'erreur aux positions 73 à 74 des spécifications de calcul du code opération approprié.
- Indiquez l'extension de code opération'E' pour le code opération approprié.
- Incluez le code qui génère l'exception dans un groupe MONITOR.
- Codez un sous-programme d'erreur de fichier, défini par le mot clé INFSR dans une spécification de description de fichier, pour les exceptions de fichier. La sous-routine d'erreur de fichier doit être codée dans la même portée que le fichier ; un fichier global dans un module de cycle doit avoir sa sous-routine dans la procédure cycle-main et un fichier local doit avoir sa sous-routine dans la même sous-procédure que le fichier. Vous ne pouvez pas coder un INFSR pour un fichier global utilisé dans une sous-procédure.
- Codez un sous-programme d'erreur de programme, nommé *PSSR, pour les exceptions de programme. Notez qu'une valeur *PSSR est locale à la procédure dans laquelle elle est codée. Cela signifie qu'une valeur *PSSR dans une procédure principale ne traitera que les erreurs de programme associées à la procédure principale. De même, une valeur *PSSR dans une sous-procédure ne traitera que les erreurs de cette sous-procédure.