我需要知道如何发现一个程序是用ALWMNULL(*USRCTL)编译的(或者不管是哪一个)。
命令DSPPGM似乎没有提供这些信息。
我们正在运行V7r1。
谢谢。
无法从程序(或模块)中判断它是用什么ALWMNULL参数编译的。
揭示为什么问这个问题,可能会得到更好地满足真实需求的回答;即,除了遇到错误外,不太可能需要了解程序是如何编译的。如果进行调查的动力是一个意外的错误条件,那么也许可以提出一个更合适的问题
虽然不是可见属性,但既不通过显示(DSP)功能也不通过检索(RTV)功能显示,该设置可以通过RPG程序打开数据库文件成员的运行时效果推断。RPG运行时是否打算使用"允许空"功能打开成员的指示将在为该打开创建的开放数据路径(ODP)中显示;当然,如果编译器被告知要执行ALWMULL(*USRCTL),但运行时未能执行,那么这很可能是一个缺陷,并且推断将是不确定的。FWiW RPG DUMP功能将在实际打开的文件.mbr的ODP的"打开反馈"中,将该值显示为"允许空的字段文件"属性\设置
也许可以从我的回复中获得更多信息:
http://archive.midrange.com/rpg400-l/201504/msg00020.html
http://archive.midrange.com/rpg400-l/201504/msg00022.html
我不确定目的是什么,但是如果对象的源在您的系统上,您可以尝试这种方法。对象可能会告诉你(取决于对象的编译方式)源在哪里,所以你可以编写一个程序从对象中获取元信息,然后让程序打开该源成员并查找ALWNULL
的存在。
如果你没有源代码,同样取决于对象是如何编译的,也许你可以从对象本身提取源列表并检查它。