我创建了一个DS,如下所示:
dcl-ds P_IAC3002L extname('IAC3002_L') qualified template;
LISTROWNumber extfld('LISTROWNBR');
WorkTitle extfld('WORKTITLE');
OriginalWorkTitle extfld('WRKTITLEOR');
TypeOfWorkTitle extfld('WRKTITLETY');
TitleTypeDescription extfld('TITLEDESC');
OriginalVersionInd extfld('WRKORGIND');
OriginalVersionIndDescription extfld('WRKORGDESC');
Role extfld('ROLE' );
RoleDescription extfld('ROLEDESC');
StatusOfWork extfld('WRKSTS' );
WorkStatusDescription extfld('WRKSTSDESC');
WorkKey extfld('WORKKEY');
WorkTitleNumber extfld('WRKTITLENO');
WorkMatchIndicator extfld('WRKMATCHIN');
WorkCCIndicator extfld('WRKCCIND');
OtherTitlesExist extfld('OTHTITLIND');
WorkIsReferenced extfld('WRKISREF');
WorkIsActive extfld('WRKISACT');
AgreementExceptionExists extfld('PAGEXCEP');
WorkReferencesCountExceedsLimit extfld('RFCNMRTHLT'); //STR0044946
WorkReferencesList like(P_IAC3002L.WORKREF) dim(10); //STR0044946
end-ds;
这很好用。但是,如果我试图更改子字段的声明顺序WorkReferencesList like(P_IAC3002L.WORKREF(dim(10(;第一个后面跟着WorkReferencesCountExceedsLimit extfld('RFCNMRTHLT'(
编译失败。
013200 WorkReferencesCountExceedsLimit extfld('RFCNMRTHLT');
======> aaaaaa
*RNF3701 20 a 013200 Keyword is not allowed for a subfield definition; keyword
is ignored.
似乎所有EXTFLD都应该立即跟随EXTNAME。然而,在我的情况下,我真的想首先用like声明子字段,因为从可读性的角度来看,这更符合逻辑。
对此有什么建议吗?
我认为编译器不太可能更改为允许EXTFLD定义遵循普通子字段定义。
但是,如果您的数据库文件已经有更可读的备用名称,您可以使用RPG数据结构的ALIAS关键字来获取备用名称,并可能完全跳过EXTFLD重命名。