Ibm midrange 在DSPF中具有MSGID的动态文本
我正在修改一个交互式程序,使用带有输出字段的DSPF:Ibm midrange 在DSPF中具有MSGID的动态文本,ibm-midrange,rpgle,rpg,Ibm Midrange,Rpgle,Rpg,我正在修改一个交互式程序,使用带有输出字段的DSPF: MSGERR 80A O 24 2MSGID(&§MSGID FILE_MSG) 我将一个ID传递到MSGID,它就可以正常工作了 现在我有这样一个信息: VALUE CAN BE: &1, &2, &3 A* ======================================================================== A* Message Su
MSGERR 80A O 24 2MSGID(&§MSGID FILE_MSG)
我将一个ID传递到MSGID,它就可以正常工作了
现在我有这样一个信息:
VALUE CAN BE: &1, &2, &3
A* ========================================================================
A* Message Subfile
A* ------------------------------------------------------------------------
A R MSGSFL SFL
A SFLMSGRCD(24)
A MSGKEY SFLMSGKEY
A PGMQ SFLPGMQ
A* ------------------------------------------------------------------------
A* Message Subfile - Control forrmat
A* ------------------------------------------------------------------------
A R MSGCTL SFLCTL(MSGSFL)
A OVERLAY
A SFLINZ
A SFLPAG(1)
A SFLSIZ(2)
A SFLDSP SFLDSPCTL
A 52
AON52 SFLEND(*PLUS)
A PGMQ SFLPGMQ
我需要用文本替换&1、&2和&3
是否可以使用当前的方法?
因为我不能直接在RPGLE上的MSGERR上操作,因为它不可见。不,你不能。我更喜欢消息子文件,而不是使用MSGID、ERRMSGID等。看起来是这样的:
VALUE CAN BE: &1, &2, &3
A* ========================================================================
A* Message Subfile
A* ------------------------------------------------------------------------
A R MSGSFL SFL
A SFLMSGRCD(24)
A MSGKEY SFLMSGKEY
A PGMQ SFLPGMQ
A* ------------------------------------------------------------------------
A* Message Subfile - Control forrmat
A* ------------------------------------------------------------------------
A R MSGCTL SFLCTL(MSGSFL)
A OVERLAY
A SFLINZ
A SFLPAG(1)
A SFLSIZ(2)
A SFLDSP SFLDSPCTL
A 52
AON52 SFLEND(*PLUS)
A PGMQ SFLPGMQ
要使用它,您将消息发送到程序消息队列,然后将MSGCTL作为屏幕事务的一部分写入。因此,如果您的屏幕上通常有一个名为record的单一记录格式,您可以执行以下操作:
pgmq = <Program Name>;
write msgctl;
exfmt record;
我有qmhsndpm和qmhrmvpm的原型,但是您可以很容易地在文档中查找它们和错误代码参数的格式
在事务开始时,调用SendDspfgMsg发送消息,调用ClearDspfMsg清除消息队列。PGMQ对于所有这些部分都应该具有相同的值,并且它将正常工作
注意:这不适用于RPG,因为您没有访问子过程的权限。如有必要,将程序转换为RPGLE,它将正常工作。或者在这种情况下使用子程序而不是子过程。不,您不能。我更喜欢消息子文件,而不是使用MSGID、ERRMSGID等。看起来是这样的:
VALUE CAN BE: &1, &2, &3
A* ========================================================================
A* Message Subfile
A* ------------------------------------------------------------------------
A R MSGSFL SFL
A SFLMSGRCD(24)
A MSGKEY SFLMSGKEY
A PGMQ SFLPGMQ
A* ------------------------------------------------------------------------
A* Message Subfile - Control forrmat
A* ------------------------------------------------------------------------
A R MSGCTL SFLCTL(MSGSFL)
A OVERLAY
A SFLINZ
A SFLPAG(1)
A SFLSIZ(2)
A SFLDSP SFLDSPCTL
A 52
AON52 SFLEND(*PLUS)
A PGMQ SFLPGMQ
要使用它,您将消息发送到程序消息队列,然后将MSGCTL作为屏幕事务的一部分写入。因此,如果您的屏幕上通常有一个名为record的单一记录格式,您可以执行以下操作:
pgmq = <Program Name>;
write msgctl;
exfmt record;
我有qmhsndpm和qmhrmvpm的原型,但是您可以很容易地在文档中查找它们和错误代码参数的格式
在事务开始时,调用SendDspfgMsg发送消息,调用ClearDspfMsg清除消息队列。PGMQ对于所有这些部分都应该具有相同的值,并且它将正常工作
注意:这不适用于RPG,因为您没有访问子过程的权限。如有必要,将程序转换为RPGLE,它将正常工作。或者在这种情况下使用子程序而不是子程序。谢谢您的回复,但我无法修改此DSPF。我已解决通过显示消息的窗口呼叫Pgm的问题。感谢您的回复,但我无法修改此DSPF。我已经解决了通过显示消息的窗口调用Pgm的问题。