使用QCMDEXC通过DB2存储过程调用QEZSNDMG

使用QCMDEXC通过DB2存储过程调用QEZSNDMG,db2,ibm-midrange,db2-400,Db2,Ibm Midrange,Db2 400,在一个附带项目中,我使用一组视图来识别iSeries物理文件集中记录的争用 一旦识别出,我想做的是拉取锁定记录的用户配置文件,然后将中断消息作为信息中断消息发送到他们的终端 我发现的是QEZSNDMGAPI。简单到可以交互使用,但我正在尝试组合一个命令,该命令将与QCMDEXC API一起使用,以发出对QEZSNDMG的调用,并提醒用户他们正在锁定记录 回顾,我看到有两组选项参数,但没有要求的(这对我来说似乎很奇怪,但另一天的另一个主题)。但我继续收到错误“调用时传递的参数与所需参数不匹配” 以

在一个附带项目中,我使用一组视图来识别iSeries物理文件集中记录的争用

一旦识别出,我想做的是拉取锁定记录的用户配置文件,然后将中断消息作为信息中断消息发送到他们的终端

我发现的是QEZSNDMGAPI。简单到可以交互使用,但我正在尝试组合一个命令,该命令将与QCMDEXC API一起使用,以发出对QEZSNDMG的调用,并提醒用户他们正在锁定记录

回顾,我看到有两组选项参数,但没有要求的(这对我来说似乎很奇怪,但另一天的另一个主题)。但我继续收到错误“调用时传递的参数与所需参数不匹配”

以下是我在命令行中尝试过的一些示例:

  • 调用PGM(QEZSNDMG)PARM(“*信息”“中断”“测试”“4”“道格拉斯”“1”“1”“4”“)
  • 调用PGM(QEZSNDMG)PARM(“*信息”“中断”“测试”“4”“道格拉斯”)
  • 调用PGM(QEZSNDMG)PARM(“*信息”“中断”“测试”“4”“道格拉斯”“1”)
  • 注意:如果可能的话,我想避免使用CL或RPG程序,但我明白,使用我在发布之前发现的许多示例中的一个可能会出现这种情况。在走那条路之前,我只想用尽这个办法

    更新 登录时,我使用WRKMSGQ查看分配给我的站点的消息队列。有两个:QSYS/DOUGLAS和QUSRSYS/DOUGLAS。然后,我发布了SNDBRKMSG,对我的工作站没有任何影响(即,该消息没有中断我的会话):

    • SNDBRKMSG MSG(测试)TOMSGQ(QSYS/DOUGLAS)
    • SNDBRKMSG MSG(测试)TOMSGQ(QUSRSYS/DOUGLAS)
    我意识到,如果我在TOMSG参数中提供工作站会话名称,它将起作用:

    • SNDBRKMSG MSG(测试)TOMSGQ(*LIBL/QPADEV003)

      • 使用SNDBRKMSG正是我想要的

        在正确的方向上轻轻一推使我意识到工作站会话ID位于QSYS2.RCD_LOCK in field JOB_NAME(作业编号/用户名/工作站)中


        通过提取工作站ID,我可以向QCMDEXC创建一个格式正确的SNDBRKMSG命令,并提醒用户他们正在锁定另一个进程所需的记录。

        有什么原因不能使用SNDMSG或SNDBRKMSG实现此目的吗?@Player1st:如果我错了,请纠正我,但SNDMSG没有中断功能,我需要用户被打断。对于SNDBRKMSG,我不相信您可以指定一个特定的用户,它会发送给所有活动用户或其他用户。我认为您可以提供一个消息队列名称和库,将其缩小到一个用户\@Mike:WRKMSGQ在我的会话中显示了两个消息队列。当我同时提供这两个选项时,我收到一条消息说消息没有中断。我将用我所做的和结果更新我的问题。作为使用call命令调用QEZSNDMG时的一些附加信息,它实际上没有任何参数。这是一个使用API的程序,旨在以交互方式使用。最终,您将拥有QEZSNDMG API,您必须编写自己的程序来使用该API,或者您拥有QEZSNDMG程序,您可以交互使用该程序来发送消息。