Accueil du site > Les articles > Arborescence d’une chaîne de programmes (RPG Free)
Version à imprimer Enregistrer au format PDF

Arborescence d’une chaîne de programmes (RPG Free)

samedi 8 septembre 2007, par Grégory Jarrige Visites  6020 |Popularité : 100%  Première mise en ligne le jeudi 23 octobre 2003.

Edition de l’arborescence d’une chaîne de programmes en RPG. La précécente version de ce programme était en RPG IV "délimité". J’ai réécrit cette nouvelle version, qui est strictement identique fonctionnellement parlant, en RPG au format libre. Les 2 versions (format délimité et libre) sont contenues dans le fichier ZIP et pourront aider les développeurs RPG n’ayant pas encore franchi le pas du "format libre" à se familiariser en douceur avec cette nouvelle syntaxe.


Didier Encinas avait écrit il y a quelques années un petit programme permettant d’imprimer une chaîne de programmes sous la forme d’une arborescence. Il avait écrit la première version de ce programme en Adélia, et je l’avais par la suite réécrit en RPG, me trouvant alors dans une société où je ne disposais que de ce langage. C’est le source de la version RPG que vous trouverez ci-dessous.

La précécente version de ce programme était en RPG IV au format dit "délimité" ou "fixe". J’ai réécrit cette nouvelle version, qui est strictement identique fonctionnellement parlant, en RPG au format "libre". Les 2 versions (au format "délimité" et "libre") sont contenues dans le fichier ZIP et pourront aider les développeurs RPG n’ayant pas encore franchi le pas du "format libre" à se familiariser en douceur avec cette nouvelle syntaxe.

Pour la petite histoire, Didier ne s’est pas arrêté en si bon chemin, car il a depuis écrit (en Adelia) une version de PGMPGM plus élaborée, qui génère une arborescence dans les deux sens (programme appelant vers tous les programmes appelés et programme appelé vers tous les appelants), qui l’affiche à l’écran (en plus de l’imprimer) et dont on peut ouvrir et fermer les niveaux d’appel (façon explorateur de Windows). Cette version, beaucoup plus complexe, n’est pas décrite ici. On nous a d’ailleurs intérrogé sur la disponibilité de cette version plus élaborée, dans le forum XDOCS, mais cette version élaborée pour le compte d’une société, n’est pas libre de droits.

Extrait d’un spoule généré par cet outil :

SAICMD1C    Gestion des Commandes  Nouvelle version
 |
 |--CALC02CLP   Calcul de date
 |
 |--SAICLI4R    Sélection Client Pour Commande
 |    |--*VARIABLE
 |    |--QUSCMDLN
 |    |--SAICMD1R    Saisie des commandes clients
 |    |    |--*VARIABLE
 |    |    |--CHISCOM     CL d'appel historique commande
 |    |    |    |--HISCOM      fenêtre hist. cmde client
 |    |    |--DATLIV      Saisie date de livraison
 |    |    |    |--CALC04      Contrôle de date
 |    |    |    |--CALC06      Comparaison de date
 |    |    |--PBDLED      Edition de Bon de Préparation
 |    |    |--PFACED      Edition de facture
 |    |    |--QUSCMDLN
 |    |    |--SAIART5R    Fenêtre de sélection d'article
 |    |--SAICMD3C

 

Comment ça marche ? Avant toute chose, il vous faut connaître la commande AS/400 DSPPGMREF et l’usage que l’on peut en faire. Je vous invite donc à lire l’article consacré à la commande DSPPGMREF dans le site XDocs.

Une fois que vous aurez bien compris comment fonctionne DSPPGMREF, utilisez cette commande pour créer un fichier physique que vous appelerez PGMREF comme dans l’exemple indiqué à la page DSPPGMREF de ce site. Puis créez un fichier logique PGMREFL1 sur ce fichier PGMREF en vous servant du fichier DDS fourni dans le fichier ZIP joint à cet article..

Il vous faut ensuite compiler le programme PGMPGM (source de type RPGLE) et son PRTF PGMPGMPR. Vous trouverez les sources dans le fichier ZIP joint à cet article. Je vous recommande bien évidemment d’utiliser le fichier au format RPG Free (pgmpgm_rpgfree.txt) plutôt que sa version équivalente au format délimité (pgmpgm_rpg4.txt).

Une fois le programme et son PRTF compilés, alimentez votre fichier physique PGMREF en utilisant la commande DSPPGMREF. Pour un premier test, je vous recommande d’indiquer *ALL dans la zone "nom de programme" de façon à incorporer dans votre fichier PGMREF l’ensemble des programmes de votre bibliothèque de développement. Si vous utilisez la commande plusieurs fois pour alimenter le même fichier PGMREF, soyez vigilant sur le mode de remplissage (*ADD ou *REPLACE) que vous souhaitez utiliser.

Dès que votre fichier PGMREF est prêt, lancez le programme PGMPGM par un CALL ’<nom programme>’ (<nom programme> est le premier programme de la chaîne que vous souhaitez éditer).

Si vos programmes sont fréquemment modifiés, vous pouvez programmer dans le scheduler de l’AS/400 une réactualisation quotidienne de votre fichier PGMPGM au moyen de la commande DSPPGMREF.

P.-S.

Didier Encinas, l’auteur de l’algorithme utilisé dans ce programme, propose comme suggestion d’amélioration de remplacer la mécanique d’insertion des programmes dans les tables, par une liste chaînée. On peut également envisager de remplacer les tables par des fichiers temporaires, et on peut aussi remplacer les accès natifs fichiers par des requêtes SQL. On peut aussi modifier l’algorithme pour le rendre capable d’explorer l’arborescence des appels de programmes dans les 2 sens. Bref, ce petit programme peut faire l’objet de nombreuses améliorations, alors... à vos claviers !

Documents joints