2
votes

Comment trouver l'utilisation de sous-procédure dans RPG sur IBM i?

Si j'ai un programme de service avec un seul module qui contient trois sous-procédures. Existe-t-il un moyen de trouver par programme les utilisations des sous-procédures individuelles dans une bibliothèque / un fichier?

Donc, quelque chose comme ceci:

MYLIB/MYPGM  <-- My ILE program object which uses PROC1 and PROC3

Ensuite, j'ai un programme ILE qui utilise PROC1 et PROC3 mais pas PROC2.

MYLIB/MYSRVPGM  <-- My service program object
  PROC1  <-- My first sub-procedure
  PROC2  <-- My second sub-procedure
  PROC3  <-- My third sub-procedure

Je recherche un moyen de rechercher PROC1 ou PROC3 et de voir le résultat de MYLIB / MYPGM renvoyé. Cependant, une recherche sur PROC2 ne doit pas renvoyer de résultat.

Jusqu'à présent, j'ai essayé d'utiliser DSPPGMREF , mais cela ne renvoie que l'objet global ( IE: MYLIB / MYSRVPGM ), pas les sous-procédures individuelles utilisées.

Une autre route que je me suis aventurée utilisait FNDSTRPDM mais il ne fait que scanner le source de la chaîne PROC1 . Cela pourrait être dans un commentaire et renvoyer un faux positif.

Je sais que des outils tiers existent pour cela, mais ce ne sont pas des options viables pour le moment en raison du coût. Des options gratuites ou relativement bon marché peuvent cependant être une option (je n'en connais tout simplement pas). Suis-je pas de chance?


1 commentaires

Malheureusement, j'ai trouvé des outils de développement sur IBM i pour des choses comme celui-ci pour être terriblement inadéquats par rapport à presque n'importe quel autre environnement de développement. Même ces outils tiers sont loin d'être aussi fiables que d'autres que j'ai utilisés dans d'autres environnements. Jusqu'à présent, la chose la plus fiable que j'ai trouvée est simplement de faire une recherche de source sur chaque membre source de la bibliothèque qui vous préoccupe.


3 Réponses :


1
votes

La seule chose que je sache qui pourrait fonctionner à partir d’objets * PGM / * SRVPGM existants serait de créer quelque chose autour de API de débogage

Vous avez dit que les outils tiers ne sont pas une option, je suppose que vous parlez des outils commerciaux pour lesquels vous paieriez un joli centime.

Et l'open source? Consultez la vérification de la bibliothèque de programmes d'Easy / 400


1 commentaires

Oui, ce sont les commerciaux où vous devez payer un bras et une jambe pour lesquels ne sont pas une option. Des services gratuits ou même relativement bon marché pourraient être envisagés. Nous ne sommes qu'un petit magasin et ne pouvons justifier le coût de ces magasins commerciaux. Je vais jeter un œil aux options que vous avez suggérées, j'espère que l'une d'entre elles répondra à nos besoins, merci!



4
votes

Si vous avez les modules pour les programmes, vous pouvez utiliser l'API List Module Information (QBNLMODI) pour obtenir une liste des importations de modules. https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/ apis / qbnlmodi.htm


1 commentaires

Merci @Barara Morris! Je vais devoir lire ceci pour savoir comment l'utiliser. Cela semble faire exactement ce dont nous avons besoin.



1
votes

J'utilise le plugin iSphere dans RDi pour ce faire. Si vous n'utilisez pas RDi, vous êtes déjà en retard sur le développement pour IBM i. iSphere n'a pas la capacité directe de trouver des importations, mais il dispose d'une fonction de recherche de source que j'aime mieux que FNDSTRPDM. Vous pouvez rechercher un membre, un fichier source, tous les fichiers source d'une bibliothèque, ou même tout ce qui se trouve dans un filtre RDi pour une chaîne donnée.

Oui, c'est une recherche de source, mais il est relativement facile de dire si quelque chose est un commentaire ou non.


0 commentaires