AS400 duplicate fileds name 逻辑文件中的不同类型

AS400 duplicate fileds name different types in logical file

我的程序遇到问题。有 2 个物理文件将字段声明为 xxBABA。 'xx' 对于其中两个 PF 是不同的,并且这些字段具有不同的类型,一个字符是另一个十进制。存在包含这两个文件的逻辑文件。

在程序 'xx' 中,所有字段的前缀都替换为 YY,因此有 YYBABA 字符和 YYBABA 十进制。

有没有办法从第二个获取数据?

如果程序在 RPG 中,您可以使用 I spec 重命名其中一个或两个字段。

     IPF1RECFMT    
     I              XXBABA                      XXBABA#                               
     IPF2RECFMT    
     I              XXBABA                      XXBABA@

不,你甚至不能那样编译它。

解决此问题的一种方法是按照@RobSchember 的建议用 I 规范重命名一个字段。从 v7.1 开始,另一种方法是在文件上放置一个 Qualified 关键字,然后将 IO 操作到数据结构中。这样命名的字段现在与它们的特定记录相关联。它看起来像这样:

dcl-f file1       Disk Qualified;

dcl-ds rec1       LikeRec(file1.record1: *input);
dcl-ds rec2       LikeRec(file1.record2: *input);

read file1.record1 rec1;
read file1.record2 rec2;