使用EXTNAME、EXTFLD和LIKE定义数据结构



我创建了一个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重命名。

最新更新