($title_img_alt)

こちらからの投稿は、先頭に表示されているコメントへの返信になります。
JOBQ未処理件数の監視 KDM さん [ 12月27日(水) 0時50分 ]
V6R1を社内で稼働させてます。
JOBQで1件ずつジョブを走らせてデータを別システムへ計上する処理があります。
アクティブジョブは1ジョブで1ジョブずつ処理させてます。
中継のマクロの動作の不具合が原因でジョブがたまってしまう事象が稀に発生します。
ある程度はマクロからの不具合は発生しないようにしてますが、それでも他のパターン
が原因で待ちがたまってしまう恐れがあります。
JOBQの待ち件数を監視したいのですが、この情報をCLか何かで取得する方法は
ありませんでしょうか。
よろしくお願いします。
WRKJOGQ MKB さん [ 12月27日(水) 8時31分 ]
WRKJOBQ でスプールに 落とす。
RPG で 解読。
RE:WRKJOGQ KDM さん [ 12月27日(水) 14時6分 ]
MKB様、ありがとうございます。
Qがたまった時に確認してみます!
RE:WRKJOGQ KDM さん [ 12月27日(水) 20時59分 ]
MKB様この方法でとることができました。
APIの方も試しています。
ありがとうございました。
RE:WRKJOGQ まめたろぅ さん [ 12月27日(水) 12時4分 ]
API QSPRJOBQ を利用すればJOBQの待ち件数を取得できると思います。
サンプルは下記サイトを参考にすればどうでしょうか。
http://www.think400.dk/apier_5.htm#eks0005
RE:WRKJOGQ KDM さん [ 12月27日(水) 14時15分 ]
まめたろぅ様、まめたろぅさん様、ありがとうございます。
APIで試したいのですが、CLでCALLすればよいと思ってますが
その考え方でよろしいでしょうか。
IBM Knowledge Centerを見ましたところ以下をパラメータとして呼ぶのだ
ということは分かったのですが以下5パラメータのうち1、2が
どうしても何をセットしてよいか理解することができませんでした。
1が変数名で2が長さ、でしょうか。
1 Receiver variable Output Char(*) 
2 Length of receiver variable Input Binary(4) 
3 Format name Input Char(8) 
4 Qualified job queue name Input Char(20) 
5 Error Code I/O Char(*) 
質問の目的とはズレてしまい申し訳ありません。
RE:WRKJOGQ まめたろぅ さん [ 12月27日(水) 16時14分 ]
< CLでCALLすればよいと思ってますが
< その考え方でよろしいでしょうか。
はい、CLでCALLできます。

< 1が変数名で2が長さ、でしょうか。
そうです。
サンプルでは、変数の長さが144バイトとして設定しています。
APIを呼んで返ってくる変数の中で48バイト目から4バイト分がジョブの数です。
RE:WRKJOGQ まめたろぅ さん [ 12月27日(水) 16時19分 ]
補足します。
1の変数の中身は空っぽのまま API に渡せばいいです。
APIからの結果が1の144バイト分の変数に返ってきますので
その中の48バイト目から4バイト分を確認すればよいでしょう。
RE:WRKJOGQ KDM さん [ 12月27日(水) 17時41分 ]
まめたろぅさん様、ありがとうございます!
早速試してみます!
RE:WRKJOGQ KDM さん [ 12月27日(水) 20時58分 ]
まめたろぅ さん様、144バイトの中身をデバッグで見たのですが、バイナリー部分は見えません。
当然ですよね。CHARの144でかえってきたもののバイナリー部分を取る方法を教えていただくことは
できませんでしょうか。
------------------------------------------------------------------
DCL        VAR(&RCVV) TYPE(*CHAR) LEN(144)
DCL        VAR(&JQCNT) TYPE(*CHAR) LEN(04)

CALL       PGM(QSPRJOBQ) PARM(&RCVV &SIZE &FNAME &JFNAME &ERRCD) 

CHGVAR     VAR(%SST(&RCVV 48 4)) VALUE(&JQCNT)
------------------------------------------------------------------
JQCNTにそのままセットではだめなのかと…。

RE:WRKJOGQ HIROX さん [ 12月28日(木) 10時41分 ]
https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_61/cl/chgvar.htm

JOBQ0100 Format

The following table shows the information returned for the JOBQ0100
format. For more details about the fields in the following table, see
Field Descriptions.
Offset Type Field
Dec Hex
0 0 BINARY(4) Bytes returned
4 4 BINARY(4) Bytes available
8 8 CHAR(10) Job queue name
18 12 CHAR(10) Job queue library name
28 1C CHAR(10) Operator controlled
38 26 CHAR(10) Authority to check
48 30 BINARY(4) Number of jobs
52 34 CHAR(10) Job queue status
62 3E CHAR(10) Subsystem name
72 48 CHAR(50) Text description
122 7A CHAR(10) Subsystem library name
132 84 BINARY(4) Sequence number
136 88 BINARY(4) Maximum active
140 8C BINARY(4) Current active

って書いてあるのだから、読めるように変数に入れてあげましょうよ。
RE:WRKJOGQ まめたろぅ さん [ 12月28日(木) 12時50分 ]
> CHGVAR     VAR(%SST(&RCVV 48 4)) VALUE(&JQCNT)

この場合には、%BIN 関数が有効です。
下記のように指定すればよいでしょうか。
CHGVAR VAR(%BIN(&JQCNT)) VALUE(%SST(&RCVV 48 4))

あと、APIからの戻り変数 &RCVV の各項目の位置は
OFFSETだったので、「48バイト目から4バイト」ではなく
「49バイト目から4バイト」かも知れません。
上記のCHGVARを試してうまく値が取得できなければ
CHGVAR VAR(%BIN(&JQCNT)) VALUE(%SST(&RCVV 49 4))
も試してみて下さい。

もう少しで実現できそうですね。
RE:WRKJOGQ KDM さん [ 12月28日(木) 16時51分 ]
まめたろぅ 様 無事できました!
ありがとうございました!
1コマンドではだめで一旦SSTしたものを*DECにCHGVARしたら取れました。
またおっしゃるとおり49から4バイトでした。

DCL        VAR(&RCVV) TYPE(*CHAR) LEN(200)
DCL        VAR(&JQCNT) TYPE(*CHAR) LEN(04) 
DCL        VAR(&JQCNT2) TYPE(*DEC) LEN(10) 

CALL       PGM(QSPRJOBQ) PARM(&RCVV &SIZE &FNAME &JFNAME &ERRCD)
CHGVAR     VAR(&JQCNT) VALUE(%SST(&RCVV 49 4)) 
CHGVAR     VAR(&JQCNT2) VALUE(%BIN(&JQCNT))    
【訂正】RE:WRKJOGQ まめたろぅ さん [ 12月28日(木) 13時34分 ]
ちょっと試してみたら上記の方法では変換エラーになってしまいました。

下記の方法でどうでしょうか。
DCL VAR(&JQCNT)   TYPE(*CHAR)    LEN(004)
DCL VAR(&JQCNT2)  TYPE(*CHAR)    LEN(004)

CALL PGM(QSPRJOBQ) PARM(&RCVV &SIZE &FNAME &JFNAME &ERRCD)
CHGVAR VAR(&JQCNT2) VALUE(%SST(&RCVV 49 4))
CHGVAR VAR(&JQCNT)   VALUE(%BIN(&JQCNT2))

当方のマシンでは
この方法にて、&JQCNT にジョブ数の値が取得できました。
RE:【訂正】WRKJOGQ KDM さん [ 12月30日(土) 19時50分 ]
まめたろぅ さんありがとうございます!
&JQCNT2を *CHAR  にされてる点が違うということでしょうか。
本体の違いでしょうか、大変参考になります。

お名前

パスワード

メールアドレス

タイトル

ホームページ

アドレス

項目