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

时间:2018-07-26 18:10:59

标签: db2 ibm-midrange db2-400

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

一旦确定,我想做的就是拉用户个人资料以锁定记录,然后将中断消息作为信息性中断消息发送到他们的终端。

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

回顾IBM documentation of the QEZSNDMG API,我发现有两组选项参数,但没有必要的参数(这对我来说似乎很奇怪,但又有一天是另一主题)。但是我继续收到错误消息“通过CALL传递的参数与所需的参数不匹配。”

这是到目前为止我从命令行尝试过的一些示例:

  1. 呼叫PGM(QEZSNDMG)PARM('* INFO''* BREAK''TEST''4''DOUGLAS''1''1''-4')
  2. 呼叫PGM(QEZSNDMG)PARM('* INFO''* BREAK''TEST''4''DOUGLAS')
  3. 呼叫PGM(QEZSNDMG)PARM('* INFO''* BREAK''TEST''4''DOUGLAS''1')

注意:如果可能的话,我想避免使用CL或RPG程序,但是我可能会使用我在发布之前发现的许多示例之一来了解它。只是想在走那条路之前先用尽这个选项。

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

  • SNDBRKMSG MSG(测试)TOMSGQ(QSYS / DOUGLAS)
  • SNDBRKMSG MSG(测试)TOMSGQ(QUSRSYS / DOUGLAS)

我意识到,如果我在工作的TOMSG参数中提供了工作站会话名称:

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

1 个答案:

答案 0 :(得分:1)

我正在寻找使用SNDBRKMSG。

一些正确的方向使我意识到工作站会话ID位于QSYS2.RCD_LOCK的字段JOB_NAME(作业号/用户名/工作站)中。

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