Voici une méthode de coding à la fois modulaire, facile à lire et facile à maintenir. Malgré sa simplicité, peu de programmeurs RPG l'utilisent. En voici un exemple.
Exemple de sous-routine qui redéfinit le mode suivant C exsr |
Le code ci-dessus est un programme “ de type serveur ” qui reçoit des requêtes d’une file d’attente de données, les formate et les envoie via TCP/IP à un ordinateur externe, reçoit la réponse de ce dernier, formate la réponse, et la renvoie à une autre file d’attente de données.
Chaque sous-routine définit le mode suivant à appliquer. (Par manque de place, le code ne montre pas à quel mode chaque sous-routine transmet le contrôle.) Le traitement des erreurs est facile parce que la sous-routine intercepte l’erreur puis définit “ fmtError ” comme mode suivant, ce qui a pour effet d’exécuter la sous-routine fmtError et d’effectuer tout traitement d’erreur nécessaire. La sous-routine fmtError met ensuite le mode à “ reset ” et tout recommence.
Pour enrichir le processus, on peut ajouter une autre ligne d’instruction Case et s’assurer qu’elle définit le prochain mode auquel elle doit transmettre le contrôle et que ce nouveau mode est invoqué à la fin des sous-routines appropriées. Il est d’ailleurs fréquent qu’une sous-routine transmette conditionnellement le contrôle à plusieurs sous-routines.
Chris Woodhead, analyste/programmeur
Baycorp Holdings
Auckland, Nouvelle Zélande