我在RPG ILE Free中使用外部描述的数据结构时遇到了一些问题 最简单的问题似乎只是宣告结构。
DCL-DS PALWGHT extname(SCN102DS);
PW DIM(20) OVERLAY(PALWGHT:1);
END-DS;
当我编译时,它说外部文件不存在......但它确实存在并且它在我的库列表中。
A R PALWGHT
A P01WGHT 11S 3
A P02WGHT 11S 3
A P03WGHT 11S 3
A P04WGHT 11S 3
A P05WGHT 11S 3
A P06WGHT 11S 3
A P07WGHT 11S 3
A P08WGHT 11S 3
A P09WGHT 11S 3
A P10WGHT 11S 3
A P11WGHT 11S 3
A P12WGHT 11S 3
A P13WGHT 11S 3
A P14WGHT 11S 3
A P15WGHT 11S 3
A P16WGHT 11S 3
A P17WGHT 11S 3
A P18WGHT 11S 3
A P19WGHT 11S 3
A P20WGHT 11S 3
这在将其更改为自由格式之前有效.....
DPALWGHT E DS EXTNAME(SCN102DS)
DPW 11s 3 DIM(20) OVERLAY(PALWGHT:1)
我迷路了。这可能是非常愚蠢的......
答案 0 :(得分:6)
一些问题。首先,在自由格式中,EXTNAME(filename)
中的文件名必须是命名常量或字符文字。这与固定形式变体不同,后者可以是文件名或字符文字。如果您阅读了所有错误消息RNF0202 - THE PARAMETER FOR EXTNAME OR EXTFLD MUST BE A DEFINED NAMED CONSTANT OR LITERAL.
如果您使用文件名,则必须用自由格式的引号括起来。
DCL-DS PALWGHT extname('SCN102DS');
PW
仍未定义,因为它没有类型声明。而且,在自由格式中,OVERLAY()
不能指向数据结构。而是使用POS()
。所以整个事情看起来应该是这样的:
DCL-DS PALWGHT extname('SCN102DS');
PW LIKE(P01WGHT) DIM(20) POS(1);
END-DS;