Février 2015: Lettre RePeGlio 

 Bonjour #Surname# #Name#,

Etonnant le cycle RPG?          -Lettre technique RPG-

    RPG signifie, comme chacun sait, « Report Program Generator ». L’âme de ce langage de gestion était le cycle RPG qui permettait de gérer les ruptures automatiquement. Mais le cycle RPG est tombé en désuétude, à tel point que les développeurs modernes ont demandé à IBM d’enlever l’instruction SETON LR (*inlr=*on) obligatoire, énervés par le message d’erreur à la compilation : « le programme RPG ne sait pas comment s’arrêter ».
    Nous sommes donc en droit de nous poser la question : par quoi a-t-on remplacé le cycle RPG qui gérait les ruptures ? Réponse courte : SQL et la clause GROUP BY de l’expression SELECT permet de gérer un nombre illimité de ruptures avec les totaux aux différents niveaux. Cependant, SQL gère difficilement les cas complexes nécessitant un langage procédural. Prenons l’exemple suivant :
    Soit appeler un programme de calcul au niveau fin de la rupture 2, afficher une extraction complexe en début rupture 1, afficher des informations en entête calculées du niveau de fin rupture 1, concaténer en détail etc… avec SQL il faut avoir recours à un bouquet de technologies comme  CTE (Common Table Expressions), Subqueries  (sous analyses), Jointures, Vues stockés etc... Autrement dit, on fait de façon savante ce que les anciens faisaient simplement dans le cycle RPG.
    Le cycle RPG avait un point commun avec SQL : ce sont tous deux des langages déclaratifs par opposition aux langages exclusivement procéduraux. En effet, lorsqu’on travaille dans le cycle ou avec SQL, il suffit de modéliser les ruptures. Cependant avec RPG, il est possible de remplir les sous-programmes qui correspondent aux ruptures avec des instructions RPG procédurales.  

Voici un exemple de modèle des lignes commandes par client avec rupture L2 sur le code société + code Client et rupture L1 sur le code entête commandes.

Nous voyons bien qu’il suffit d’adapter ce modèle pour développer simplement tous les programmes RPG basés sur les ruptures.

    Pourquoi le cycle RPG est-il tombé en désuétude ? Peut-être par préjugé car il date du RPG I du temps des cartes perforées! Notons que lire un paquet de cartes perforées triées ou des index SQL, ne change absolument rien au niveau de la logique applicative : dans les deux cas le traitement doit lire des enregistrements dans l’ordre des clés afin de gérer les ruptures. Aujourd’hui, le cycle RPG sait lire les index SQL. Finalement, si les technologies de stockage de l’information ont fortement évolué, la logique applicative est restée la même pour gérer les ruptures.
    Lorsque le cycle est associé à SQL nous avons deux belles solutions déclaratives complémentaires à notre disposition. A déguster en free-form. Le fichier principal étant déclaré en Primaire, le programme s'arrête tout seul quand il a tout lu. Plus besoin de SETON LR! Décidément, on ne s’étonne plus de rien!

 Jean Mikhaleff/RePeGlio

Nos références:

Notre Site: www.repeglio.com

Pour un commentaire libre ou pour abonner quelqu'un: jean@repeglio.com


Pour retirer votre email d'envoi  de notre liste de diffusion: 

Retourner-nous la lettre avec en objet OPTOUT et votre email d'envoi:  #E-mail#    sera retiré de notre liste de diffusion.