Vos rapports prennent trop de temps et génèrent des erreurs? Beaucoup d’équipes sur IBM i font face au même problème. Je présente l’origine du report program generator, son passage au format libre et les intégrations SQL/BI qui rendent la production d’états plus fiable.
Vous gagnerez du temps d’exécution et réduirez la dette technique, avec exemples concrets de migration vers /FREE. On commence par définir précisément le report program generator (RPG) et son rôle opérationnel sur IBM i.
Résumé
- RPG = langage IBM i pour la génération d’états et le traitement de données ; existant en format traditionnel et free-form (/FREE) et étroitement intégré à DB2 et aux outils IBM i.
- Histoire et évolution : né avec le cycle de programme (1959), évolutions RPG II → RPG IV puis /FREE et ILE qui préservent la compatibilité binaire et permettent des migrations progressives.
- Avantages opérationnels : le cycle RPG réduit le volume de code pour des rapports hiérarchiques ; gérer fichiers maître/détail avec SETLL/CHAIN ou via SQL et factoriser la logique en procédures ILE.
- Modernisation et performance : utiliser SQLRPG et requêtes set-based, analyser plans d’exécution, créer index couvrants, fragmenter transactions et mesurer l’impact avec le moniteur SQL.
- Interopérabilité et migration pratique : exposer vues DB2 pour la BI (Cognos/Crystal), offrir web services (RPG Open Access / HTTP API), migrer progressivement vers /FREE avec tests automatisés et coordination DBA/développeurs.
Qu’est-ce que le report program generator (rpg) ?
Le report program generator (rpg) est un langage de haut niveau développé par IBM pour la génération d’états et le traitement de données sur les systèmes IBM i (AS/400). Conçu à l’origine pour produire des rapports à partir de fichiers métier, il combine des spécifications d’entrées/sorties avec une logique procédurale. Aujourd’hui, rpg existe en versions classiques et en format libre (/FREE), et il reste fortement intégré à l’écosystème DB2 et aux outils d’administration d’IBM i.
Comprenez rpg comme un langage optimisé pour la fiabilité en production. Il gère les fichiers séquentiels et indexés, propose des instructions dédiées pour l’I/O et offre des points d’accès modernes via SQL et web services. Pour maintenir des applications critiques, maîtrisez les concepts de cycle de programme, les spécifications de données et l’outillage (RDi, STRDBG).
Évolution technique du RPG : dates-clés et versions
Cette section récapitule l’histoire technique et les ruptures majeures du langage, afin de clarifier pourquoi rpg a survécu et comment la compatibilité a été préservée au fil des versions.
Origines du RPG et cycle de programme (1959–1980)
RPG naît à la fin des années 1950 pour remplacer le travail sur cartes perforées. Sa force initiale fut le programme cycle, qui automatise le traitement ligne à ligne pour produire des rapports avec peu de code. Les premières variantes imposaient une syntaxe en colonnes héritée du tabulage mécanique. Dans les années 1970, RPG II étend les possibilités avec des sous-routines et des structures de contrôle adaptées aux systèmes midrange d’IBM.
De RPG II à RPG IV et /FREE : rupture, évolutions et compatibilité
La transition vers RPG IV (années 1990) introduit des fonctionnalités modernes et la compatibilité ILE. Le format /FREE supprime les contraintes en colonnes, facilitant la lisibilité et l’intégration d’outils modernes. Les compilateurs ILE conservent la compatibilité binaire pour les anciens modules, ce qui permet de migrer progressivement. Préférez tester les modules critiques en environnement de test avant toute mise en production.
Cas pratique : comment le cycle RPG simplifie la génération de rapports complexes
Le cycle de rpg gère automatiquement les lectures/écritures et les ruptures de niveau, ce qui réduit la quantité de code pour des états hiérarchiques. Manipulez les fichiers maîtres/détails avec SETLL/CHAIN ou via SQL pour optimiser les performances. Pour les rapports complexes, fractionnez la logique en procédures ILE et exposez des APIs pour la réutilisation par d’autres systèmes.
Le RPG est-il obsolète ? Pertinence et niches d’usage aujourd’hui
Non, rpg n’est pas mort. Il reste dominant sur les environnements IBM i où réside un parc applicatif critique. Les acteurs bancaires, industriels et coopératifs conservent des applications en production pour leur stabilité et leur intégration native à DB2. La modernisation via /FREE, SQLRPG et web services prolonge sa pertinence.
Si vous gérez un parc IBM i, conservez des compétences rpg ou planifiez une migration progressive. Évaluez le coût de maintenance versus le transfert vers des architectures microservices seulement si l’impact métier le justifie.
Capacités pratiques, intégrations et migrations : SQL, BI et outils modernes
Rendez rpg interopérable avec l’écosystème moderne en combinant accès SQL natif, outils BI et APIs. Cette section présente des pratiques pour améliorer performances, monitoring et migration.
SQLRPG et DB2 : meilleures pratiques pour requêtes et performances
Utilisez SQLRPG pour intégrer des requêtes embarquées et profiter des index DB2. Préférez les opérations set-based plutôt que des lectures ligne à ligne quand c’est possible. Analysez les plans d’exécution et créez des index couvrants pour requêtes lourdes. Mesurez l’impact via moniteur SQL et optimisez les locks en fractionnant les transactions.
Interopérabilité avec outils BI et APIs (Cognos, Crystal Reports, web services)
Exposez des vues DB2 dédiées pour la BI et limitez la logique métier côté base. Intégrez Cognos ou Crystal Reports sur des vues matérialisées pour charge stable. Pour l’intégration applicative, offrez des web services REST/SOAP via RPG Open Access ou des procédures ILE exposées par l’API HTTP d’IBM i.
Cas pratique : migration réussie d’une PME vers le free-form (/FREE)
Dans une migration type, commencez par convertir des modules non critiques en /FREE, testez les conversions de chaînes et les formats dates, puis validez la compilation ILE. Automatisez les tests unitaires et fonctionnels. Rapprochez DBA et développeurs pour ajuster les index DB2. Planifiez une bascule progressive pour minimiser l’impact sur les opérations.


