Ibm midrange RPG/RPGLE-在带有参数的程序中捕获调用的程序

Ibm midrange RPG/RPGLE-在带有参数的程序中捕获调用的程序,ibm-midrange,rpgle,Ibm Midrange,Rpgle,是否有一种方法可以捕获程序中所有被调用的程序,包括每个被调用程序的参数(名称、类型和长度) DSPPGMREF到outfile让我走了一半 DSPPGMREF PGM(MYLIB/*ALL) OUTPUT(*OUTFILE) OUTFILE(QTEMP/MYFILE) 从问题的上下文判断,我假设您希望通过对源或对象的分析而不是在运行时执行此操作 据我所知,除了构建自己的交叉引用工具之外,使用内置IBMi工具实现这一点没有简单的方法。有很多第三方交叉引用工具可以为您实现这一点,但据我所知,在IB

是否有一种方法可以捕获程序中所有被调用的程序,包括每个被调用程序的参数(名称、类型和长度)

DSPPGMREF到outfile让我走了一半

DSPPGMREF PGM(MYLIB/*ALL) OUTPUT(*OUTFILE) OUTFILE(QTEMP/MYFILE)

从问题的上下文判断,我假设您希望通过对源或对象的分析而不是在运行时执行此操作


据我所知,除了构建自己的交叉引用工具之外,使用内置IBMi工具实现这一点没有简单的方法。有很多第三方交叉引用工具可以为您实现这一点,但据我所知,在IBMi上没有一个是免费的。只有我个人使用过的列表是Hawkey Pathfinder、MDCMS或Fresche X-Analysis。

从问题的上下文判断,我假设您希望通过对源或对象的分析而不是在运行时执行此操作


据我所知,除了构建自己的交叉引用工具之外,使用内置IBMi工具实现这一点没有简单的方法。有很多第三方交叉引用工具可以为您实现这一点,但据我所知,在IBMi上没有一个是免费的。只有我个人使用过的列表是Hawkey Pathfinder、MDCMS或Fresche X-Analysis。

如果使用PGMINFO(*PCML:*模块)作为命令参数或在H规范中编译程序,程序将包含描述参数的程序调用标记语言

您可以使用QBNRPII API从程序中检索PCML。本文有一个命令,它只显示PCML,但是您可以修改它以使用XML-INTO或XML-SAX以可用的方式获取信息。(如果参数可能是复杂的数据结构,XML-INTO可能无法很好地工作。)

对于具有以下PI的程序:

dcl-pi *n;
   name char(25) const;
   salary packed(9:2);
end-pi;
下面是PCML的一个示例

<pcml version="6.0">
   <!-- RPG program: PCMLTEST  -->
   <!-- created: 2018-04-18-08.01.17 -->
   <!-- source: BMORRIS/QRPGLESRC(PCMLTEST) -->
   <!-- 1 -->
   <program name="PCMLTEST" path="/QSYS.LIB/BMORRIS.LIB/PCMLTEST.PGM">
      <data name="NAME" type="char" length="25" usage="input" />
      <data name="SALARY" type="packed" length="9" precision="2" usage="inputoutput" />
   </program>
</pcml>

为了得到这种好的格式,我用PGMINFO(*PCML:*STMF)INFOSTMF('PCMLTEST.PCML')编译了我的程序。生成到模块(然后放入程序)中的PCML没有任何换行符或额外的间距

以下是RPG Cafe命令为同一程序显示的内容:

Printing PCML info
   Object: BMORRIS/PCMLTEST  *PGM
   Module: *ALLBNDMOD
   Length of information: 320
   Length of data: 227
       0:  <pcml version="6.0"> <program name="PCMLTEST" entr
      50:  ypoint="PCMLTEST"> <data name="NAME" type="char" l
     100:  ength="25" usage="input" /> <data name="SALARY" ty
     150:  pe="packed" length="9" precision="2" usage="inputo
     200:  utput" /> </program></pcml>
打印PCML信息
对象:BMORRIS/PCMLTEST*PGM
模块:*ALLBNDMOD
资料长度:320
数据长度:227
0:      

如果使用PGMINFO(*PCML:*模块)作为命令参数或在H规范中编译程序,程序将包含描述参数的程序调用标记语言

您可以使用QBNRPII API从程序中检索PCML。本文有一个命令,它只显示PCML,但是您可以修改它以使用XML-INTO或XML-SAX以可用的方式获取信息。(如果参数可能是复杂的数据结构,XML-INTO可能无法很好地工作。)

对于具有以下PI的程序:

dcl-pi *n;
   name char(25) const;
   salary packed(9:2);
end-pi;
下面是PCML的一个示例

<pcml version="6.0">
   <!-- RPG program: PCMLTEST  -->
   <!-- created: 2018-04-18-08.01.17 -->
   <!-- source: BMORRIS/QRPGLESRC(PCMLTEST) -->
   <!-- 1 -->
   <program name="PCMLTEST" path="/QSYS.LIB/BMORRIS.LIB/PCMLTEST.PGM">
      <data name="NAME" type="char" length="25" usage="input" />
      <data name="SALARY" type="packed" length="9" precision="2" usage="inputoutput" />
   </program>
</pcml>

为了得到这种好的格式,我用PGMINFO(*PCML:*STMF)INFOSTMF('PCMLTEST.PCML')编译了我的程序。生成到模块(然后放入程序)中的PCML没有任何换行符或额外的间距

以下是RPG Cafe命令为同一程序显示的内容:

Printing PCML info
   Object: BMORRIS/PCMLTEST  *PGM
   Module: *ALLBNDMOD
   Length of information: 320
   Length of data: 227
       0:  <pcml version="6.0"> <program name="PCMLTEST" entr
      50:  ypoint="PCMLTEST"> <data name="NAME" type="char" l
     100:  ength="25" usage="input" /> <data name="SALARY" ty
     150:  pe="packed" length="9" precision="2" usage="inputo
     200:  utput" /> </program></pcml>
打印PCML信息
对象:BMORRIS/PCMLTEST*PGM
模块:*ALLBNDMOD
资料长度:320
数据长度:227
0: