メッセージの送信と言えば 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
であると理解しておけばよい。
長いあいだのモヤモヤが解けましたか ?