在RPG ILE Free中使用外部描述的数据结构

时间:2018-02-28 14:13:05

标签: rpgle

我在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)

我迷路了。这可能是非常愚蠢的......

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;