疑似的にMSGWのジョブを作る方法ってありますか?
Question
監視用のプログラムを作成しています。
その監視用のプログラムではショブのステータスがMSGWになるものを検知するものです。
上手く、監視用のプログラムが出来たか、疑似的にMGSWのジョブを作りたいのですが、何か方法はありますでしょうか。
Answer
簡単にということであれば以下の方法ではいかがでしょうか。
まずは対話型ジョブでMSGWになる方法を説明します。
コマンド入力画面から、
CRTPF FILE(QTEMP/QTEMP) RCDLEN(10) IGCDTA(*YES) SIZE(1 1 1)
UPDDTA QTEMP/QTEMP
と処理をします。
最後のUPDDTAでQTEMPのファイルに対してレコードを追加します。
QTEMPのファイルのサイズが1レコード+1レコード、1回増分なので、2レコードしか追加できません。
3件目を追加しようとすると、CPA5305が出て「QSYSOPRのメッセージへの応答を待機中」のメッセージが送信され、MSGWになります。
終了させる場合は、システムリクエストの2、或いはシステムリクエストの6でメッセージ応答する等してください。
シスリクって何ですか?
https://www.e-bellnet.com/category/technology/1903/1903-65.html
バッチの時は上記応用ですが、対話でQTEMPにファイルを作ってもバッチはジョブが異なるので共有できません。
QTEMPでなく実在のLIBLARYで作ってください。
例)
CRTLIB TEST ←テスト用のLIBLARYが無い場合は任意の名前で作成してください。
CRTPF FILE(TEST/TEST) RCDLEN(10) IGCDTA(*YES) SIZE(1 1 1)
CRTPF FILE(TEST/TEST2) RCDLEN(10) IGCDTA(*YES) SIZE(2 1 1)
ここで、UPDDTA (TEST/TEST2) でダミーのデータを3件分、作成・追加してください。
次に、SBMJOBでCPYFを使い「元データが多いものから少ない器にコピー」する処理をバッチ投入します。
SBMJOB CMD(CPYF FROMFILE(TEST/TEST2) TOFILE(TEST/TEST) MBROPT(*REPLACE) CRTFILE(*NO)) JOB(TEST)
先ほどのUPDDTA(DFU)の時とはメッセージが異なりますが、増分回数が限度を超えているのでコピー元にはコピーできないエラーというエラーを作ることが出来ます。
そうすると、先ほどと同じようにWRKACTJOB上では該当のジョブはMSGWとなります。
いかがでしょうか。
良い監視用のプログラムが出来て、MSGWをより早く感知でき、安定した運用をされることを陰ながら応援しています。
by けやきのじぃじ