以自由格式SQLRPGLE替换键列表

MAS*_*400 1 rpgle

我正在将RPGLE固定格式转换为自由格式,而在转换时我遇到了一个问题,KEY-LIST&Fields被转换为数据结构.这基本上是重新定义已经直接或间接定义的字段......

DCL-DS Key_List;                                                                               
     Field1 CHAR(4);                                                                            
     Field2 CHAR(4);  
END-DS;  
Run Code Online (Sandbox Code Playgroud)

field1和field2都是文件的字段.下面是旧式(固定格式)

C     Key_list      KLIST                           
C                   KFLD                    Field1
C                   KFLD                    Field2       
Run Code Online (Sandbox Code Playgroud)

请注意...程序给出编译时错误(SQL0314)field1&field不是唯一的

Cha*_*les 5

您可以将%kds()与使用EXTNAME(...:*KEY)或定义的数据结构一起使用LIKEREC(...:*KEY)

dcl-ds key_list likerec(myfileR:*key);
//
chain %kds(key_list) myfile;
Run Code Online (Sandbox Code Playgroud)

或者直接使用这些字段,因为它们已经定义了......

chain (field1:field2) myfile;
Run Code Online (Sandbox Code Playgroud)

这两种方法都应该摆脱重复的定义并从预编译器中停止SQL0314错误.