非限定数据结构字段能否被限定引用?DS1需加QUALIFIED才能编译吗?
RPGLE非限定数据结构的字段引用问题
问题解答
- 不能对非限定数据结构的字段进行限定引用。非限定数据结构(未添加
QUALIFIED关键字)的字段会直接暴露在全局作用域中,只能通过字段名(比如FIELD1)直接访问,无法使用数据结构名.字段名的格式。 - 你提供的代码必须为
DS1添加QUALIFIED关键字才能编译。因为代码中使用了DS1.FIELD1这种限定引用的写法,只有添加QUALIFIED后,编译器才会识别这种格式,允许通过数据结构名来限定访问其字段。
修正后的可编译代码如下:
**FREE DCL-DS DS1 QUALIFIED; FIELD1 PACKED(5); END-DS; DS1.FIELD1 = 2024; DSPLY DS1.FIELD1; RETURN;
关于有人断言原代码可以编译的情况,大概率是混淆了限定与非限定数据结构的用法,或是误记了旧版本编译器的特殊行为。当前主流的RPGLE编译器(包括PUB400使用的版本)都严格遵循规则:非限定数据结构不支持点号式的限定引用。
内容的提问来源于stack exchange,提问作者Osama
相关产品推荐
相关产品推荐

