无法监控 SELECT 语句内的消息

问题描述 投票:0回答:1

我有这个代码,即使 QTEMP/FILE1 已经存在也可以工作。

CRTPF FILE(QTEMP/FILE1) RCDLEN(133)
MONMSG MSGID(CPF5813)

但是当我将相同的代码放入 SELECT...ENDSELECT 中时,MONMSG 无法处理现有文件,并且会因 CPF5813 而出现错误。

SELECT                                       
      WHEN (&A *EQ &B) THEN(DO)
          CRTPF FILE(QTEMP/FILE1) RCDLEN(133)
          MONMSG MSGID(CPF5813)
          ... other codes
      ENDDO
      OTHERWISE (DO)
          ... other codes
      ENDDO
ENDSELECT

如何监控 SELECT 语句中的消息?

ibm-midrange clp
1个回答
0
投票

Message

CPF5813
不是这里要监控的消息,它是诊断消息。这是消息
CPF7302
,由
CRTPF
提出,必须监控。

如果您想检查

CPF5813
是否是发送的诊断信息,您必须使用
RCVMSG
,如下所示:

   pgm

   dcl        &diagid *char 7

   select
      when       (1 *eq 1) then(do)
         crtpf      file(qtemp/file1) rcdlen(133)
         monmsg     CPF7302 *n do
            rcvmsg     msgtype(*diag) msgkey(*none) rmv(*no) msgid(&diagid)
            if         (&diagid *ne cpf5813) do
               sndpgmmsg  msgid(cpf9898) msgf(qcpfmsg) msgdta('qtemp/file1 not created for an +
                     unexpected reason: ' *cat &diagid *bcat 'see joblog for details') +
                     msgtype(*escape)
            enddo
         enddo
      enddo
      otherwise  (do)
         /* do something */
      enddo
   endselect

   endpgm ```
© www.soinside.com 2019 - 2024. All rights reserved.