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.
Transformons ce batch en un seul objet programme grâce à la programmation modulaire :
Pour le CL la transformation est simple :
- Changer le type de source. Utilisez l’option 13 de PDM et tapez CLLE à la place de CLP. Ou utiliser la commande CHGMBRD
- Editez le source est remplacer les appels de programmes par des appel de procédure : CALL PGM devient CALLPRC PRC.
- Compiler pour créer un module. Option 15 de PDM ou commande CRTCLMOD
Pour le RPG c’est encore plus simple :
- 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.
- 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 ExampleCet 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 Referencedont 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.