问题描述
A DSPSIZ(24 80 *DS3)
A PRINT
A ERRSFL
A INDara
...
A R DSPBTM
A CF05
A CF01
A CF07
A OVERLAY
...
A NEWFLD R B 12 12REFFLD(FLE/MYFIELD FIELDSFILE)
A 40 DSPATR(PR)
A EDTCDE(Z)
A 59 ERRMSG('New field and Original fiel-
A d must be different.' 59)
...
以及相关的RPG代码:
...
//If the old field and the new field are the same,error.
if oldfld = newfld;
*in59 = *on;
iter;
endif;
...
在调试时,我在打开* in59之前验证了这一点。但是,当显示屏幕时,我什么也没得到。错误消息不会出现,该字段也不会突出显示,它的行为就像是正常循环,没有错误。
使用ERRMsgiD时,我还有其他错误,这些错误确实起作用。但是,我希望避免使用消息文件,因为这可能只会使用一次。
我还没有找到任何有用的在线资源。一些教程似乎朝着正确的方向发展(例如this one),但仍未解决问题。
解决方法
更改* IN59的状态后,您需要对记录格式DSPBTM发出WRITE。