CL

96. 今さら聞けない SNDMSG と SNDPGMMSG

メッセージの送信と言えば i5/OS では
SNDMSG コマンド と

SNDPGMMSG コマンド の二つが用意されているが
区別はついているだろうか ?
API ではさらにややこしくて

SNDMSGに対応する API が QMHSNDM
SNDPGMMSGに対応する API が QMHSNDPM である。

各々の名称はというとさらに不可解で、

SNDMSG,QMHSNDM 非プログラム・メッセージの送信
SNDPGMMSG,QMHSNDPM プログラム・メッセージの送信

となっていてこれらを扱うユーザーに意図的に混乱を
呼ぶような名称となっている。

「非プログラム・メッセージ」という呼び名からすると
プログラム内では使うべきではないのか ?
それならばなぜ API が存在するのか ?
API は専らプログラム内に組み込むことを目的としているからである。

開発者としての読者は SNDPGMMSG は使っているが
SNDMSG を使う機会は少ないかもしれない。
エンド・ユーザーとして日常的に操作を中心に行っている読者は
SNDMSG は使うが SNDPGMMSG を使う機会は少ないのかもしれない。

そろそろ結論が見えてきたところだ。
確かに SNDMSG はコマンド入力画面で実際に入力して操作する機会が多く
SNDPGMMSG は CLP 内に組み込んで使用する機会が多い。
これは

  • SNDMSG: 他のエンド・ユーザーのメッセージを送信する。
  • SNDPGMMSG: プログラムがこのプログラムを実行したユーザーに
    メッセージを送信する。

ただし QSYSOPR へは、どちらのコマンドでも送信することができる。

このことを目的として用意されているコマンドである。
無理やりに SNDMSG を使って自分自身にメッセージを送信することは
できるのだが SNDPGMMSG のような完了メッセージや報告のメッセージを
送信する機能は SNDMSG には用意されていない。

従って

他人に送るメッセージは SNDMSG
実行した自分に送るメッセージは SNDPGMMSG

であると理解しておけばよい。
長いあいだのモヤモヤが解けましたか ?