CLPの RCVMSGコマンドでメッセージ・キーの取得を
指示しているのに一向にメッセージ・キーを取得できない。
_
例えば
RCVMSG PGMQ(*SAME) MSGTYPE(*FIRST) KEYVAR(&KEYVAR)
と指定している。実行してもエラーにもならないのに
メッセージ・キー: &KEYVAR の値はブランクのままであり
メッセージ・キーを受取ることができない。
原因不明のままになってしまうことがある。
■ 原因は メッセージの除去
RCVMSGコマンドは省略値では メッセージ除去(RMV) は *YES である。
上記の RCVMSG ではメッセージを受取ると受取ったメッセージも
RCV(*YES)によって受取ったとたんに除去されていまう。
従ってメッセージ・キーも消滅するので &KEYVARはブランクに
なってしまう。
■ 解決方法
RMV(*NO)を指定するとメッセージ・キーを正しく受取ることができる。
RCVMSG PGMQ(*SAME) MSGTYPE(*FIRST) KEYVAR(&KEYVAR) RMV(*NO)
とすればよい。
ただしこれでもわかるように RMVMSG で明示的にメッセージを除去してしまうと
除去されたメッセージのメッセージ・キーは指定することはできなくなってしまうので
そのことにも注意が必要である。
_