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;
我的程序遇到问题。有 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;