|
Dave wrote:
>How does your utility get its information?
I use the API: QUSRJOBI
Here is the program I use to display the amount of temporary storage a job
is using.
The whole utility consists of a never-ending job that takes a look at
subsystem QBATCH
every 5 minis or so and then sends messages to a message queue and/or to a
list of users if
a job is using more that 2GB of storage....
SOURCE FILE . . . . . . . KENNETH/QPGMSRC
MEMBER . . . . . . . . . DSPTMPSTG
SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+...
100 /* ************************************************************** */
200 /* PROGRAM DESCRIPTION : */
300 /* */
400 /* RETRIVE A JOBS TEMP STORAGE USE. */
500 /* THIS PROGRAM IS CALLED BY MONTMPSTG2 */
600 /* */
700 /* SPECIAL COMPILE OPTIONS: */
800 /* */
900 /* WRITTEN BY: KEN GRAAP 03/11/99 */
1000 /* UPDATED BY: 03/19/99 RMV SAE COMMAND */
1100 /* */
1200 /* ************************************************************** */
1300 PGM PARM(&JOB &USER &NUMBER)
1400 /* ************************************************************** */
1500 /* */
1600 /* DECLARE PROGRAM VARIABLES */
1700 /* */
1800 /* ************************************************************** */
1900 DCL &ERRORSW *LGL /* Std err
*/
2000 DCL &MSGID *CHAR LEN(7) /* Std err
*/
2100 DCL &MSGDTA *CHAR LEN(100) /* Std err
*/
2200 DCL &MSGF *CHAR LEN(10) /* Std err
*/
2300 DCL &MSGFLIB *CHAR LEN(10) /* Std err
*/
2400 DCL VAR(&JOBN) TYPE(*CHAR) LEN(26)
2500 DCL VAR(&JOB) TYPE(*CHAR) LEN(10)
2600 DCL VAR(&USER) TYPE(*CHAR) LEN(10)
2700 DCL VAR(&NUMBER) TYPE(*CHAR) LEN(6)
2800 DCL VAR(&TMPSTG) TYPE(*CHAR) LEN(4)
2900 DCL VAR(&TMPSTGDEC) TYPE(*DEC) LEN(8 0)
3000 DCL VAR(&TMPSTGMSG) TYPE(*CHAR) LEN(8)
3100 DCL VAR(&RECEIVER) TYPE(*CHAR) LEN(124)
3200 DCL VAR(&LENGTH) TYPE(*CHAR) LEN(4)
3300 DCL VAR(&ERRLENGTH) TYPE(*CHAR) LEN(4)
3400 /* ************************************************************** */
3500 /* */
3600 /* GLOBAL MESSAGE MONITOR */
3700 /* */
3800 /* ************************************************************** */
3900 MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(STDERR1))
4000 /* ************************************************************** */
4100 /* */
4200 /* DISPLAY THE CURRENT AMOUNT OF TEMP STORAGE USED BY A JOB */
4300 /* IF MORE THAN 2GB SEND A MSG VIA THE SHOUT COMMAND */
4400 /* */
4500 /* ************************************************************** */
4600
4700 CHGVAR VAR(&JOBN) VALUE(&JOB *CAT &USER *CAT +
4800 &NUMBER)
4900 CHGVAR VAR(%BIN(&LENGTH)) VALUE(124)
5000 CHGVAR VAR(%BIN(&ERRLENGTH)) VALUE(0)
5100 CHGVAR VAR(%BIN(&TMPSTG)) VALUE(4)
5200 CALL PGM(QUSRJOBI) PARM(&RECEIVER &LENGTH +
5300 JOBI0150 &JOBN ' '
&ERRLENGTH)
5400 CHGVAR VAR(&TMPSTG) VALUE(%SST(&RECEIVER 109 4))
5500 CHGVAR VAR(&TMPSTGDEC) VALUE(%BIN(&TMPSTG 1 4))
5600 IF COND(&TMPSTGDEC *GT 1999999) THEN(DO)
5700 SHOUT USERS(KEG RSJ CAS JAE JAEA) MSG('Job' *BCAT
+
5800 &NUMBER *TCAT '/' *TCAT &USER *TCAT '/' +
5900 *TCAT &JOB *BCAT 'is using more than 2GB +
6000 of temporary storage. Please monitor it +
6100 and total aux storage usage closely.')
6200 SNDPGMMSG MSG('Job' *BCAT &NUMBER *TCAT '/' *TCAT +
6300 &USER *TCAT '/' *TCAT &JOB *BCAT 'is +
6400 using more than 2GB of temporary storage.
+
6500 Please monitor it and total aux storage +
6600 usage closely.') TOMSGQ(QGPL/DSPTMPSTG)
6700 ENDDO
6800 CHGVAR VAR(&TMPSTGMSG) VALUE(&TMPSTGDEC)
6900 SNDPGMMSG MSG('Job' *BCAT &NUMBER *TCAT '/' *TCAT +
7000 &USER *TCAT '/' *TCAT &JOB *BCAT 'is +
7100 using' *BCAT &TMPSTGMSG *BCAT 'of +
7200 temporary storage') TOMSGQ(QGPL/DSPTMPSTG)
7300
7400 /* ************************************************************** */
7500 /* */
7600 /* NORMAL END OF PROGRAM */
7700 /* */
7800 /* ************************************************************** */
7900 END: RETURN
8000 /* ************************************************************** */
8100 /* */
8200 /* STANDARD ERROR PROCESSING */
8300 /* */
8400 /* ************************************************************** */
8500 STDERR1: /* Standard error handling routine */
8600 IF &ERRORSW SNDPGMMSG MSGID(CPF9999) +
8700 MSGF(QCPFMSG) MSGTYPE(*ESCAPE) /* Func chk
*/
8800 CHGVAR &ERRORSW '1' /* Set to fail ir error occurs
*/
8900 STDERR2: RCVMSG MSGTYPE(*DIAG) MSGDTA(&MSGDTA) MSGID(&MSGID)
+
9000 MSGF(&MSGF) MSGFLIB(&MSGFLIB)
9100 IF (&MSGID *EQ ' ') GOTO STDERR3
9200 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
9300 MSGDTA(&MSGDTA) MSGTYPE(*DIAG)
9400 GOTO STDERR2 /* Loop back for addl diagnostics */
9500 STDERR3: RCVMSG MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID)
+
9600 MSGF(&MSGF) MSGFLIB(&MSGFLIB)
9700 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
9800 MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)
9900 ENDPGM
* * * * E N D O F S O U R C E * * * *
Kenneth
--
********************************
Kenneth E. Graap
IBM Certified Specialist
AS/400 Professional
System Administrator
NW Natural - Information Services
System Services
503 226 4211 X5537
FAX 503 721 2521
keg@nwnatural.com
********************************
-----Original Message-----
From: Dave Shaw [mailto:dshaw1@InfoAve.Net]
Sent: Tuesday, April 20, 1999 8:06 AM
To: MIDRANGE-L@midrange.com
Subject: Re: "unprotected" storage usage
+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.