サポートチーム便り2022.04.13
システムメッセージを監視したい
Question
DSPLOGコマンドでシステムメッセージを確認していますが、OSの標準機能を使用して、特定のシステムメッセージを自動で監視する方法はありませんでしょうか。
Answer
STRWCH(監視の開始)コマンドを使用すると、システムに特定のメッセージが出た時に、監視プログラムを実行する事が出来ます。
そのプログラム内で、指定したユーザーなどにメッセージを送信する事などが可能です。
手順
※この例では、システムメッセージ(QHST)に送信される、CPF2234とCPI1468を監視します。
監視プログラムを作成します。
※パラメータ部分
最初の4つのパラメータは必須です。(監視プログラムの予約パラメータです)PGM PARM(&TYPE &SESSION &ERROR &DATA) /* Iuput Parameters */ DCL VAR(&TYPE) TYPE(*CHAR) LEN(10) DCL VAR(&SESSION) TYPE(*CHAR) LEN(10) DCL VAR(&ERROR) TYPE(*CHAR) LEN(10) DCL VAR(&DATA) TYPE(*CHAR) LEN(1024) /* Receive Data */ DCL VAR(&MSGID) TYPE(*CHAR) STG(*DEFINED) LEN(7) + DEFVAR(&DATA 5) MONMSG MSGID(CPF0000)
※メッセージ監視部分
/* CPF2234 Password Error */ IF COND((%SST(&TYPE 1 6) = '*MSGID') & (&MSGID + = 'CPF2234')) THEN(DO) SNDMSG MSG('Signon Password Error') TOUSR(BELLDATA) GOTO CMDLBL(EXIT) ENDDO /* CPI1468 JOBTBL */ IF COND((%SST(&TYPE 1 6) = '*MSGID') & (&MSGID + = 'CPI1468')) THEN(DO) SNDMSG MSG('System job tables nearing capacity.') + TOUSR(BELLDATA) GOTO CMDLBL(EXIT) ENDDO
監視対象のメッセージを受取った場合のサンプルロジックです。
作成したプログラムを、任意のライブラリーへコンパイルします。
CRTCLPGM PGM(BELL/@WCH_PGM01) SRCFILE(BELL/QCLSRC)
STRWCHコマンドで、監視するメッセージIDを登録します。
※1つのSTRCWHコマンドで、最大5つのメッセージIDを監視できます。STRWCH SSNID(@WCH001) WCHPGM(BELL/@WCH_PGM01) WCHMSG((CPF2234) (CPI1468)) WCHMSGQ((*HSTLOG))
※監視するメッセージIDが多い場合には、複数のSTRCWHコマンドで監視します。登録した監視を確認します。
「5=表示」で詳細を確認できます。 登録した監視は、システムの再起動を実行しても ACTIVE で残っています。終了するまで、監視を継続します。 → 監視終了コマンド: ENDWCHWRKWCH WCH(*STRWCH)
ご参考サイト
- 「監視セッションの開始」
https://www.ibm.com/docs/ja/i/7.4?topic=program-starting-watch-session - 「監視の開始(STRWCH)」
https://www.ibm.com/docs/ja/i/7.4?topic=ssw_ibm_i_74/cl/strwch.htm
by あすと