如何在 IBM i 上的 RPG 中查找子过程用法?

How to find sub-procedure usage in RPG on IBM i?

如果我有一个包含三个子程序的单个模块的服务程序。有没有办法以编程方式找到 library/file 中各个子过程的用法?

所以像这样:

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

然后我有一个使用 PROC1PROC3 但不使用 PROC2 的 ILE 程序。

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

我正在寻找一种方法来搜索 PROC1PROC3 并查看 MYLIB/MYPGM returned 的结果。但是,搜索 PROC2 不应 return 结果。

到目前为止,我已经尝试使用 DSPPGMREF,但只有 return 是整个对象(即:MYLIB/MYSRVPGM),而不是使用的各个子程序。

我尝试过的另一条路线是使用 FNDSTRPDM,但这只是扫描字符串 PROC1 的源。它可能在评论中并且 return 误报。

我知道存在用于此的第三方工具,但由于成本原因目前它们不是可行的选择。免费或相对便宜的可能是一种选择(我只是不知道)。我运气不好吗?

我所知道的唯一可能对现有 *PGM / *SRVPGM 对象起作用的是围绕 debug APIs

构建一些东西

你说 third-party 工具不是一种选择,我想你指的是你愿意花一大笔钱买的商业工具。

开源呢?看看 Easy/400 Program library check up

如果您有程序的模块,您可以使用列表模块信息 (QBNLMODI) API 来获取模块导入列表。 https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/apis/qbnlmodi.htm

我使用 RDi 中的 iSphere 插件来执行此操作。如果您不使用 RDi,那么在 IBM i 开发方面您已经落后于 eight-ball。 iSphere 没有直接查找导入的能力,但它确实有一个源搜索工具,我比 FNDSTRPDM 更喜欢它。您可以搜索成员、源文件、库中的所有源文件,甚至是 RDi 过滤器中给定字符串的所有内容。

是的,这是一个来源搜索,但是,判断某些内容是否是评论相对容易。