操作系统:IBM i (AS/400)
我想检查两个 ILE *PGM(或 *SRVPGM)对象的可执行代码是否相同。无法使用包含的源更改日期,因为可以更改时间戳但代码是相同的。这是从 git 存储库下载源代码的情况,因此可以更改源代码更改日期。
例子: 您有一个包含所有已编译程序对象的库 A。然后你会从git下载完整的源代码到AS/400,编译成另一个库B。 现在你想检查库 A 和库 B 之间哪些程序对象确实发生了变化。只有发生变化的程序对象应该被保存并传输到目标系统。
将要比较的对象都是在同一系统和同一目标版本上编译的。
我没有找到比较二进制代码的 API。我可以使用 MI 获取此信息吗?
有人遇到同样的问题吗?
最好的问候, 马蒂亚斯
最佳答案
如果 *PGM 碰巧是用 DBGVIEW(*LIST) 或 DBGVIEW(*ALL) 编译的
您应该能够使用调试 API 从对象中提取编译列表。
否则,Dump Object命令可用于生成对象内容的假脱机文件。然后您可以比较假脱机文件。显然,它们不会是完美的匹配,例如库名称和创建日期会有所不同。我还怀疑如果编译对象是在不同级别的操作系统(版本甚至 PTF)上编译的,那么编译对象会有差异。
关于ibm-midrange - IBM i : Binary diff between two *PGM objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65842230/