如何知道程序是用 ALWNULL(*USRCTL) 编译的

How to know a program was compiled with ALWNULL(*USRCTL)

我需要知道如何找到一个程序是用 ALWNULL(*USRCTL)(或任何一个)编译的。

命令 DSPPGM 似乎没有提供该信息。

我们是 运行 V7r1。

谢谢。

无法从程序(或模块)中判断它是用什么 ALWNULL 参数编译的。

我不确定目的是什么,但是如果对象的源在您的系统上,您可以尝试这种方法。该对象可能会告诉您(取决于对象的编译方式)源在哪里,因此您可以编写一个程序从对象中获取该元信息,然后让程序打开该源成员并查找是否存在ALWNULL

如果您没有源代码,并且再次取决于对象的编译方式,也许您可​​以从对象本身中提取源代码列表并进行检查。

揭示为什么问题被问到,可能允许更好地解决实际需求的响应;即除了遇到错误,不可能 need\desire 知道程序是如何编译的。如果进行查询的动机是意外的错误情况,那么也许可以直接提出更合适的问题。?
虽然不是可见属性,但既不通过显示 (DSP) 功能也不通过检索 (RTV) 功能显示,该设置可以 推断 来自 运行 时间效果RPG 程序打开数据库文件成员。 RPG 运行-time 是否打算使用 Allow-Nulls 功能打开成员的指示将在为该 Open 创建的 Open Data Path (ODP) 中显示;当然,如果编译器被告知影响 ALWNULL(*USRCTL),但 运行 时间未能这样做,那很可能是一个缺陷,推论将是不确定的。 FWiW RPG DUMP 功能将在 "OPEN FEEDBACK" 中将该值显示为 "Null Capable Field File" attribute\setting,用于打开的实际 file.mbr 的 ODP。
也许更多从我在这里的回复中收集:
http://archive.midrange.com/rpg400-l/201504/msg00020.html
http://archive.midrange.com/rpg400-l/201504/msg00022.html