|
I had the same need. With the DMPSYSOBJ hint, I threw this together.
So far, it seems to meet my needs. Hope it's helpful.
Ron Hudson
Ron.Hudson@colaik.com
Collins & Aikman
/*********************************************************************/
/* UTE015C */
/* Call this pgm w/ a parm of lib and string. */
/* A report will be printed showing all queries containing the */
/* string. */
/* Note: */
/* The string cannot contain any blanks! */
/*********************************************************************/
PGM PARM(&LIB &STRNG)
DCLF *LIBL/QADSPOBJ
DCL &LIB *CHAR 10
DCL &STRNG *CHAR 20
CHKOBJ QTEMP/OBJDMP *FILE
MONMSG MSGID(CPF9801) EXEC( +
CRTPF QTEMP/OBJDMP RCDLEN(132))
CHGPF FILE(QTEMP/OBJDMP) SIZE(*NOMAX)
CPYSPLF QPSRVDMP QTEMP/OBJDMP MBROPT(*ADD)
MONMSG MSGID(CPF3309) EXEC(DO)
GOTO ITSOK
ENDDO
SNDMSG MSG('This utility cannot be used when +
QPSRVDMP spool files exists') +
TOUSR(*REQUESTER)
GOTO THATSALL
ITSOK: DSPOBJD &LIB/*ALL *QRYDFN OUTPUT(*OUTFILE) +
OUTFILE(QTEMP/QRYS)
OVRDBF FILE(QADSPOBJ) TOFILE(QTEMP/QRYS)
READIT: RCVF RCDFMT(QLIDOBJD) WAIT(*YES)
MONMSG MSGID(CPF0864) EXEC(GOTO CMDLBL(SCANIT))
DMPSYSOBJ OBJ(&ODOBNM) CONTEXT(&LIB) OBJTYPE(*QRYDFN)
CPYSPLF QPSRVDMP TOFILE(QTEMP/OBJDMP) MBROPT(*ADD)
DLTSPLF QPSRVDMP
GOTO READIT
SCANIT: CALL UTE015C2 &STRNG
THATSALL: RCLRSC
CLRPFM QTEMP/OBJDMP
ENDPGM
___________________________________________________________________________
______
/*********************************************************************/
/* UTE015C2 */
/* Called from UTE015C */
/* Before compiling this pgm, */
/* CRTPF FILE(*libl/OBJDMP) RCDLEN(132) */
/* After compiling, DLTF *libl/OBJDMP */
/*********************************************************************/
PGM &STRNG
DCLF OBJDMP
DCL &STRNG *CHAR 20
DCL &QRY *CHAR 10
DCL &OBJDMP *CHAR 132
DCL &PRTD *CHAR 1
DCL &CURDAT *CHAR 6
/* QCLSCAN VARS */
DCL &STRLEN *DEC LEN(3 0) VALUE(132)
DCL &STRPOS *DEC LEN(3 0) VALUE(1)
DCL &PATLEN *DEC LEN(3 0)
DCL &TRANS *CHAR LEN(1)
DCL &TRIM *CHAR LEN(1)
DCL &WILD *CHAR LEN(1)
DCL &RESULT *DEC LEN(3 0) VALUE(1)
CHGVAR &PATLEN 1
CALL QCLSCAN PARM(&STRNG &STRLEN &STRPOS +
' ' &PATLEN &TRANS &TRIM &WILD &RESULT)
CHGVAR &PATLEN &RESULT
RTVJOBA DATE(&CURDAT)
LPRINT DATA('UTE015C - Queries contaning string ' +
*cat &STRNG *CAT ' ' *CAT &CURDAT)
READIT: RCVF RCDFMT(OBJDMP) WAIT(*YES)
MONMSG MSGID(CPF0864) EXEC(GOTO CMDLBL(THATSALL))
IF (%SST(&OBJDMP 1 4) = 'OBJ-') THEN(DO)
CHGVAR &QRY (%SST(&OBJDMP 6 10))
CHGVAR &PRTD '0'
GOTO READIT
ENDDO
IF (&PRTD = '1') THEN(GOTO READIT)
CALL QCLSCAN PARM(&OBJDMP &STRLEN &STRPOS +
&STRNG &PATLEN &TRANS &TRIM &WILD &RESULT)
IF (&RESULT > 0) THEN(DO)
LPRINT &QRY
CHGVAR &PRTD '1'
ENDDO
GOTO READIT
THATSALL: RCLRSC
ENDPGM
___________________________________________________________________________
______
From: Allen, Stuart
> Does anyone have a routine that lets you scan a load of Query definitions
> for a particular field, a la option 25 in PDM?
+---
| 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.