在尝试查找用于创建对象的RPG源文件时,我正在寻找使用对象大小、MI指令数量和ODT(对象定义表)条目数量来确认用于创建对象的源文件。似乎有一种观点认为,前两者可能因编译器的不同版本而有所不同。
所以想知道RPG源中的特定类型的语句与ODT整体的数量之间是否存在对应关系。
我在谷歌上广泛搜索了这个主题,但没有找到任何普通应用程序程序员可以理解的关于ODT整体的解释。本文非常详细地描述了ODT,但我发现很难将其与RPG程序和ODT条目的数量联系起来。
这个术语表将ODT定义为系统在编译时构建的表,用于跟踪程序中声明的对象。表中的程序对象包括变量、常量、标签、操作数列表和异常描述。表驻留在编译后的程序对象中。那么,这是否意味着在不同版本的操作系统上编译RPG源代码会导致从同一源创建的每个对象的ODT条目数量保持相同?
对象大小、MI指令、ODT都可能在编译器版本之间发生变化。甚至是PTF应用。
有两种方法支持将源绑定到程序对象。
显示程序(DSPPGM)命令:
Type of program . . . . . . . . . . . . . . . . : OPM
Source file . . . . . . . . . . . . . . . . . . : QRPGSRC
Library . . . . . . . . . . . . . . . . . . . : OLSMLSRC
Source member . . . . . . . . . . . . . . . . . : OP510B
Source file change date/time . . . . . . . . . . : 08/07/05 08:45:11
注意ILE RPG, DSPPGM提供了第三个屏幕,列出了所使用的模块,您可以5=Display Description并查看:
Module . . . . . . . . . . . . . . . . . . . . : OP021B
Library . . . . . . . . . . . . . . . . . . : QTEMP
Source file . . . . . . . . . . . . . . . . . : QRPGLESRC
Library . . . . . . . . . . . . . . . . . . : OLSMLSRC
Source member . . . . . . . . . . . . . . . . : OP021B
Module attribute . . . . . . . . . . . . . . . : RPGLE
Module creation date/time . . . . . . . . . . : 04/04/14 10:27:41
Source file change date/time . . . . . . . . . : 03/25/14 14:08:49
商业变更控制包使用对象控制级别属性,该属性可以通过API设置并通过API或DSPOBJD DETAIL(*SERVICE)查看
Object . . . . . . . . . . . . . . . : OP021B
Library . . . . . . . . . . . . . : OLSMLPRG
Library ASP device . . . . . . . . . : *SYSBAS
Library ASP group . . . . . . . . . : *SYSBAS
Type . . . . . . . . . . . . . . . . : *PGM
Object control level . . . . . . . . : 00N0001X
注意对于ILE程序/服务程序。对象更改控件可以为*PGM对象和所使用的模块对象设置。模块级对象更改控件可以通过DSPPGM与模块源信息一起使用。
DSPPGM命令独立于任何变更控制包。它显示了创建*PGM对象时的属性。