|
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.