如何将添加的新记录的值从子文件移动到 RPGLE 中的物理文件?

问题描述

如何将从 SUBFILE 添加的新记录的值移动到物理文件中?

数值如下图所示:

CREATE

CUREXG 是我的物理文件名(pf),CURREC 是我的记录名。我的 pf 看起来像这样:

PF

如何将值分离到pyhsical文件中? 我应该怎么办?请帮我。 提前致谢

解决方法

每个货币记录存储单个货币代码和日期的货币汇率。所以你必须写多条记录。每个货币代码一个。

|

尝试使用 SQL。它内置于系统中。并使代码更具可读性。

 \free
      exgdat = date ;
      exgcur = 'USD' ;
      exgamt = usd ;
      write  currec ;
 \end-free

,

RockBoro 建议的蛮力方法会起作用,尽管有很多重复的代码。减少重复代码的一种方法(DRY 原则)是使用数组重新定义显示文件记录结构。虽然你没有给我们显示文件记录的 DDS,但我猜记录格式看起来像这样:

dcl-f DSPF    Workstn Qualified;
dcl-ds rec    LikeRec(DSPF.screen: *all) Inz;

5 个费率一个接一个下降的地方。你可以像这样覆盖一个数组:

dcl-s rates   Like(rec.usd3) dim(5) based(pRates);
dcl-s pRates  Pointer Inz(%addr(rec.usd3));

读取屏幕后,只需循环速率并写入物理文件:

exfmt DSPF.screen rec;
for ix = 1 to %elem(rates);
  exgdat = rec.date;
  exgcod = exccd(ix);
  exgrat = rates(ix);
  write currec;
endfor;

您还需要一个编译时数组 exccd 来按照交换代码出现在显示文件中的顺序保存交换代码,以使其工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...