如果我有一个带有单个模块的服务程序,其中包含三个子过程。是否可以通过编程方式找到库/文件中各个子过程的用法?
是这样的:
MYLIB/MYSRVPGM <-- My service program object
PROC1 <-- My first sub-procedure
PROC2 <-- My second sub-procedure
PROC3 <-- My third sub-procedure
然后我有一个ILE程序,它使用PROC1
和PROC3
但不使用PROC2
。
MYLIB/MYPGM <-- My ILE program object which uses PROC1 and PROC3
我正在寻找一种搜索PROC1
或PROC3
并查看返回MYLIB/MYPGM
的结果的方法。但是,搜索PROC2
不会返回结果。
到目前为止,我已经尝试使用DSPPGMREF
,但这仅返回整个对象(即:MYLIB/MYSRVPGM
),而不返回所使用的单个子过程。
我尝试使用的另一种方法是使用FNDSTRPDM
,但这只是在源中扫描字符串PROC1
。可能是在评论中并返回了误报。
我知道可以使用第三方工具,但是由于成本原因,它们目前尚不可行。不过,可以选择免费或相对便宜的软件(我只是不知道有没有)。我不走运吗?
答案 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筛选器中的所有给定字符串。
是的,这是源搜索,但是,比较容易分辨出是否有评论。