× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Jerry Draper wrote:
Is there a way to display all jobd's to a file like we can do
with dspusrprf?

I need to look over all jobd's in a system and change message
logging where appropriate.


/* CLP: LISTJOBD creates QTEMP/JDLIST as list of *JOBD */
PGM PARM(&LIB &OBJ) /* for OBJ(&LIB/&OBJ) on DSPOBJD */
CRTDUPOBJ QLIDOBJD *LIBL *FILE QTEMP JDLIST DATA(*NO)
/* assumes no file; code to handle as appropriate */
CHGPF QTEMP/JDLIST SIZE(*NOMAX)
DSPOBJD &LIB/&OBJ *JOBD *FULL +
OUTPUT(*OUTFILE) OUTFILE(QTEMP/JDLIST)
ENDPGM

One method is to create a SQL UDF or UDTF where the QWDRJOBD API retrieves the desired information which is returned to the external function [i.e. the HLL program which calls that API] as data and/or an indication that the current setting is not /appropriate/.

A UDTF might use the above CLP or its file as input [or object list API] to establish the list of Job Description objects from which it then generates one row for each *JOBD in the output file. The external User Defined Table Function would establish the table with field names JDxxx to denote the information from the *JOBD object. Then the SQL SELECT JDLIB, JDNAME, JDLOGLVL, JDLOGSEV, JDLOGTEXT FROM TABLE(ODJOBDLIST('*ALL', '*ALL')) WHERE JDLOGTEXT <> '*SECLVL' could return those rows from the DSPOBJD which [according to the WHERE clause] did not have Second Level text logging set.

A UDF might be more specific [than a UDTF might be] to the LOG() elements, and respond to a question as a function named IsJOBDlogOK or to a request for action as a function named SetJOBDlogging. The function could returns a '0' for false or unchanged, '1' for true or changed. An SQL SELECT ODNAME, ODLBNM, IsJOBDlogOK(ODNAME, ODLBNM, 4, 0, '*NOLIST') could show a report of which have LOG(4 0 *NOLIST) and which do not. An SQL SELECT ODNAME, ODLBNM, SetJOBDlogging(ODNAME, ODLBNM, 4, 0, '*NOLIST') could show a report of those same job descriptions, but also include the action to change those which did not match the expected setting.

Some may imply that effecting the actual change in the UDF would be /dangerous/ since it would be best to limit the data by a WHERE clause or join to prevent changing something unexpected. *But* that is only for lack of first reviewing what would be changed [as a sanity check], which is _no different_ than coding the same change activity outside of any SQL. Using the SQL just makes it /fit/ with the use of an output file; i.e. rows of data. To avoid making two functions, I have used an extra parameter on just the one [change capable] function, as a 'D' for display-only and 'C' for a request to implement the change. In that manner I can select all the data to see what would have been changed without it actually having changed anything. Other times I would use the UDTF to enable the review of the affected /rows/, and then it is run again as input to a program which actually makes the change; but to prevent the dynamic results of the UDTF from changing between invocations of the UDTF, either the UDTF operates against a static list [the JDLIST file is created before, not by the UDTF] or the reviewed data is best stored separately as a static list using something like:
CREATE TABLE QTEMP/LISTTOCHANGE
AS SELECT * FROM TABLE(ODJOBDLIST(...))
WITH DATA

Regards, Chuck

As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 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.