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

时间:2019-06-25 20:35:11

标签: ibm-midrange rpgle

如果我有一个带有单个模块的服务程序,其中包含三个子过程。是否可以通过编程方式找到库/文件中各个子过程的用法?

是这样的:

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

然后我有一个ILE程序,它使用PROC1PROC3但不使用PROC2

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

我正在寻找一种搜索PROC1PROC3并查看返回MYLIB/MYPGM的结果的方法。但是,搜索PROC2不会返回结果。

到目前为止,我已经尝试使用DSPPGMREF,但这仅返回整个对象(即:MYLIB/MYSRVPGM),而不返回所使用的单个子过程。

我尝试使用的另一种方法是使用FNDSTRPDM,但这只是在源中扫描字符串PROC1。可能是在评论中并返回了误报。

我知道可以使用第三方工具,但是由于成本原因,它们目前尚不可行。不过,可以选择免费或相对便宜的软件(我只是不知道有没有)。我不走运吗?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

我唯一了解的可能是现有的* PGM / * SRVPGM对象可以在debug APIs

周围构建一些东西

您说第三方工具不是一种选择,我认为您的意思是商业工具,您将为此付出一分钱。

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

答案 2 :(得分:0)

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

是的,这是源搜索,但是,比较容易分辨出是否有评论。