AS/400 - La programmation modulaire

30/11/2005
Avec une programmation modulaire on crée des « briques » que l’on peut ensuite empiler de manière ordonnée pour créer des programmes.

L’économie se révèle importante en terme de maintenance :
Quand on doit modifier une fonction on ne traite que le module concerné. Il est plus court et donc plus rapidement appréhendable par le programmeur qui effectue à cette maintenance, il pourra travailler rapidement. Les tests unitaires pourront se limiter au module modifié et les tests d’intégrations seront plus rapides car le risque de régression est limité par rapport à un programme de grande taille.

Economie en terme de ressources :
Un appel de programme externe coûte cher en temps de chargement. Le système doit ressoudre le nom du programme en adresse puis charger celui-si en mémoire.
La programmation modulaire permet de ressoudre ce problème car la résolution d'adresse est effectuée, une fois pour toute à la création du programme.

Comment cela marche...
Comment convertir une application existante.
Supposons une application batch classique comportant un programme CL appelant 2 programmes RPG, un des programmes RPG appel un troisième programme RPG (notez que les programmes peuvent être écrit dans n’importe quel langage supportant ILE)
Actuellement l’application comporte 4 membres sources et quatre objets programmes à déployer en production.

OPM

Transformons ce batch en un seul objet programme grâce à la programmation modulaire :

Pour le CL la transformation est simple :

  1. Changer le type de source. Utilisez l’option 13 de PDM et tapez CLLE à la place de CLP. Ou utiliser la commande CHGMBRD

  2. Editez le source est remplacer les appels de programmes par des appel de procédure : CALL PGM devient CALLPRC PRC.

  3. Compiler pour créer un module. Option 15 de PDM ou commande CRTCLMOD


Pour le RPG c’est encore plus simple :

  1. Convertir le RPG 3 en RPG 4 si nécessaire. La commande CVTSRC est disponible pour cela. Attention les fichiers sources RPG 4 doivent être taillés avec des enregistrements de 112 octets de longueur pour ne pas perdre les commentaires de fin de ligne.

  2. Compiler pour créer un module. Option 15 de PDM ou commande CRTRPGMOD.


Créer le programme en assemblant les modules avec la commande CRTPGM.
CRTPGM PGM(PGM1) MODULE(PGM1 PGM2 PGM3 PGM4) ENTMOD(PGM1)

Une fois le programme créé vous pouvez supprimer les objets de type *MODULE.
Vous ne déployez qu’un seul objet *PGM en production.

C’est fait.
Quelques précautions :

  • Il faut retirer les directives de compilation concernant les groupes d’activations dans les programmes RPG.

  • Il peut être intéressant d’utiliser les prototypes de procédure dans les programmes RPG et remplacer les ordres call par des ordres callp. Les prototypes peuvent êtres écrit dans des membres séparés que l’on intègre dans le source principal par la directive /copy.
    Nous disposons ainsi du contrôle de validité du type des paramètres à la compilation. Ce que le call traditionnel ne sait pas faire.


Dans notre exemple, c’est principalement dans le cas ou un appel récurrent au programme PGM3 est effectué que le gain de performance sera sensible.
Si le programme PGM2 effectue une lecture séquentielle d’un gros fichier et appel le programme PGM3 pour chaque enregistrement de ce fichier les gains en temps d’exécution peuvent êtres très importants.

Bilbliographie



ILE Concepts
C'est le livre de référence pour la programmation modulaire. On y trouve aussi des informations sur les groupes d'activations, le fonctionnement de la pile d'appel programme, la gestion des exceptions. C'est plus passionnant que « Da Vinci Code ».

ILE Application Development Example
Cet ouvrage permet de bien comprendre ce que dit le manuel ILE Concept en « mettant les mains dans le cambouis ! »

Les incontournables :
ILE RPG Programmer's Guide
ILE RPG Reference
dont le programmeur RPG doit faire ses livres de chevet.
Ces liens référencent la documentation de RPG pour la V5R3. Il existe une documentation diférente pour toutes les versions d'OS.

Who Knew You Could Do That with RPG IV? A Sorcerer's Guide to System Access and More.
Son titre dit tout. Même si l'ouvrage date un peu c'est à lire de toute urgence. Il semblerait que IBM doive en éditer une nouvelle version. C'est un ouvrage écrit par des experts extérieurs à IBM dont la lecture n’apporte que du bonheur.