Ibm midrange 消息子文件未显示
我编写了一个使用消息子文件的简单程序。但是,这些消息不显示。你能看一下代码和帮助吗 DDS: RPG代码:Ibm midrange 消息子文件未显示,ibm-midrange,Ibm Midrange,我编写了一个使用消息子文件的简单程序。但是,这些消息不显示。你能看一下代码和帮助吗 DDS: RPG代码: FMSGSBFL1 CF E WorkStn INDDS(INDDS) DINDDS DS DEXIT 3 3N
FMSGSBFL1 CF E WorkStn INDDS(INDDS)
DINDDS DS
DEXIT 3 3N
DCANCEL 12 12N
DPSDS SDS
D SDS_PROC 1 10
DMsgId S 7A
DMsgLoc S 20A Inz('SFLMSGF *LIBL ')
DMsgRplDta S 1A Inz(' ')
DMsgRplDtaLen S 4B 0 Inz(0)
DMsgType S 10A Inz('*DIAG')
DMsgQueue S 276A Inz('*')
DMsgCallStack S 4B 0 Inz(0)
DMsgKey S 4A Inz(' ')
DMsgErr S 4B 0 Inz(0)
DMsgrmv S 10A INZ('*ALL')
DMsgId S 7A
DMsgLoc S 20A Inz('SFLMSGF *LIBL ')
DMsgRplDta S 1A Inz(' ')
DMsgRplDtaLen S 4B 0 Inz(0)
DMsgType S 10A Inz('*DIAG')
DMsgQueue S 276A Inz('*')
DMsgCallStack S 4B 0 Inz(0)
DMsgKey S 4A Inz(' ')
DMsgErr S 4B 0 Inz(0)
DMsgrmv S 10A INZ('*ALL')
/Free
DoU Exit or Cancel;
Write Msgsbctl;
Exfmt Screen1;
MsgKey = *Blanks;
Exsr RcvMsg;
If First_Name <> 'Thejwal';
MsgId = 'SFL0001';
Exsr SndMsg;
EndIf;
If Last_Name <> 'Pavithran';
MsgId = 'SFL0002';
Exsr SndMsg;
EndIf;
EndDo;
*Inlr = *on;
C SndMsg Begsr
C CALL 'QMHSNDPM'
C PARM MsgId
C PARM MsgLoc
C PARM MsgRplDta
C PARM MsgRplDtaLen
C PARM MsgType
C PARM MsgQueue
C PARM MsgCallStack
C PARM MsgKey
C PARM MsgErr
C Endsr
C RcvMsg Begsr
C CALL 'QMHRMVPM'
C PARM MsgQueue
C PARM MsgCallStack
C PARM MsgKey
C PARM MsgRmv
C PARM MsgErr
C Endsr
FMSGSBFL1 CF E工作TN INDDS(INDDS)
DINDDS
DEXIT 3 3N
DCANCEL 12 12N
DPSDS
D SDS_程序110
DMsgId S 7A
DMsgLoc S 20A Inz('SFLMSGF*LIBL')
DMsgRplDta S 1A Inz(“”)
DMsgRplDtaLen S 4B 0英寸(0)
DMsgType S 10A Inz(“*DIAG”)
DMSGS 276A Inz('*')队列
DMsgCallStack S 4B 0英寸(0)
DMSGEY S 4A Inz(“”)
DMsgErr S 4B 0英寸(0)
DMsgrmv S 10A英寸(“*全部”)
DMsgId S 7A
DMsgLoc S 20A Inz('SFLMSGF*LIBL')
DMsgRplDta S 1A Inz(“”)
DMsgRplDtaLen S 4B 0英寸(0)
DMsgType S 10A Inz(“*DIAG”)
DMSGS 276A Inz('*')队列
DMsgCallStack S 4B 0英寸(0)
DMSGEY S 4A Inz(“”)
DMsgErr S 4B 0英寸(0)
DMsgrmv S 10A英寸(“*全部”)
/免费的
退出或取消;
编写Msgsbctl;
Exfmt屏幕1;
MsgKey=*空格;
Exsr-RcvMsg;
如果第一个名字叫“Thejwal”;
MsgId='SFL0001';
Exsr-SndMsg;
EndIf;
如果姓“Pavithran”;
MsgId='SFL0002';
Exsr-SndMsg;
EndIf;
EndDo;
*Inlr=*on;
C SndMsg Begsr
C调用“QMHSNDPM”
帕姆姆斯吉德酒店
C帕尔姆酒店
C PARM MsgRplDta
C PARM MsgRplDtaLen
C PARM MsgType
C参数MsgQueue
C PARM MsgCallStack
帕姆姆斯吉基酒店
帕姆·姆斯盖尔酒店
C Endsr
C RcvMsg Begsr
C调用“QMHRMVPM”
C参数MsgQueue
C PARM MsgCallStack
帕姆姆斯吉基酒店
C PARM MsgRmv
帕姆·姆斯盖尔酒店
C Endsr
我可以看到消息显示在W作业日志中,但由于某些原因,它没有显示在屏幕上。我不确定DDS是否有故障,或者消息是否没有发送到正确的程序队列。请帮助我我得到了答案!!!问题是我错过了Screen1记录格式的overlay关键字。真是松了一口气:)
FMSGSBFL1 CF E WorkStn INDDS(INDDS)
DINDDS DS
DEXIT 3 3N
DCANCEL 12 12N
DPSDS SDS
D SDS_PROC 1 10
DMsgId S 7A
DMsgLoc S 20A Inz('SFLMSGF *LIBL ')
DMsgRplDta S 1A Inz(' ')
DMsgRplDtaLen S 4B 0 Inz(0)
DMsgType S 10A Inz('*DIAG')
DMsgQueue S 276A Inz('*')
DMsgCallStack S 4B 0 Inz(0)
DMsgKey S 4A Inz(' ')
DMsgErr S 4B 0 Inz(0)
DMsgrmv S 10A INZ('*ALL')
DMsgId S 7A
DMsgLoc S 20A Inz('SFLMSGF *LIBL ')
DMsgRplDta S 1A Inz(' ')
DMsgRplDtaLen S 4B 0 Inz(0)
DMsgType S 10A Inz('*DIAG')
DMsgQueue S 276A Inz('*')
DMsgCallStack S 4B 0 Inz(0)
DMsgKey S 4A Inz(' ')
DMsgErr S 4B 0 Inz(0)
DMsgrmv S 10A INZ('*ALL')
/Free
DoU Exit or Cancel;
Write Msgsbctl;
Exfmt Screen1;
MsgKey = *Blanks;
Exsr RcvMsg;
If First_Name <> 'Thejwal';
MsgId = 'SFL0001';
Exsr SndMsg;
EndIf;
If Last_Name <> 'Pavithran';
MsgId = 'SFL0002';
Exsr SndMsg;
EndIf;
EndDo;
*Inlr = *on;
C SndMsg Begsr
C CALL 'QMHSNDPM'
C PARM MsgId
C PARM MsgLoc
C PARM MsgRplDta
C PARM MsgRplDtaLen
C PARM MsgType
C PARM MsgQueue
C PARM MsgCallStack
C PARM MsgKey
C PARM MsgErr
C Endsr
C RcvMsg Begsr
C CALL 'QMHRMVPM'
C PARM MsgQueue
C PARM MsgCallStack
C PARM MsgKey
C PARM MsgRmv
C PARM MsgErr
C Endsr