如何将新记录的值从子文件移动到 RPGLE 中的物理文件?
How to MOVE VALUE OF A NEW RECORD ADDED from subfile to physical file in RPGLE?
如何将从 SUBFILE 添加的新记录的值移动到物理文件?
数值如下图所示:
CUREXG 是我的物理文件名(pf),CURREC 是我的记录名。我的 pf 看起来像这样:
如何将值分离到物理文件中?
我应该怎么办?请帮我。
提前致谢
每个货币记录存储单个货币代码和日期的货币汇率。所以你必须写多条记录。每个货币代码一个。
\free
exgdat = date ;
exgcur = 'USD' ;
exgamt = usd ;
write currec ;
\end-free
尝试使用SQL。它内置于系统中。并使代码更具可读性。
exec sql
insert into exgrat ( exgdat, exgcur, exgamt )
values( :date, 'USD', :usd ) ;
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
来按照它们在显示文件中出现的顺序保存交换代码,以实现此目的。
如何将从 SUBFILE 添加的新记录的值移动到物理文件?
数值如下图所示:
CUREXG 是我的物理文件名(pf),CURREC 是我的记录名。我的 pf 看起来像这样:
如何将值分离到物理文件中? 我应该怎么办?请帮我。 提前致谢
每个货币记录存储单个货币代码和日期的货币汇率。所以你必须写多条记录。每个货币代码一个。
\free
exgdat = date ;
exgcur = 'USD' ;
exgamt = usd ;
write currec ;
\end-free
尝试使用SQL。它内置于系统中。并使代码更具可读性。
exec sql
insert into exgrat ( exgdat, exgcur, exgamt )
values( :date, 'USD', :usd ) ;
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
来按照它们在显示文件中出现的顺序保存交换代码,以实现此目的。