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



On 11 May 2013 11:05, Kirk Goins wrote:
Me thinks everyone is over thinking this... Take a look at the
printer file parameters EXPDATE and DAYS . The default is *NONE
(next to last page of the parms). Change the printfile to 60 and
*DAYS. Now you can use the DLTEXPSPLF cmd

Perhaps. But the Expiration feature for spooled files is not helpful directly, to resolve the issue for any existing spool file either which does not already have an expiration attribute or which was [or will be] created in a manner that would not have the spool expiring [within the stated 30 days]; e.g. per OVRPRTF EXPDATE(*NONE), even if CHGPRTF had already set every Printer File to effect an expiration other than *NONE. Thus using the Delete Expired Spooled files (DLTEXPSPLF) likely would give no joy for the originally stated goal, of deleting those existing spools currently over thirty days old :-(

A separate reply to the Opening Post that I had composed with mention of the DLTEXPSPLF was not yet sent, pending determination of when the EXPDATE feature came into the OS. Seems that the EXPDATE() and DAYS() are not documented at v5r3 for CHGSPLFA and CHGPRTF, yet these appear in the v5r4 docs for both, *without* any change flags <ugh>; I am fairly confident that the /convention/ was that changes to commands would appear bracketed with <start of change> <end of change> markers, but seems that did not occur. Anyhow, it seems the capability came in v5r4; I will send my reply with the links to the current docs.

Nonetheless my comment was specifically to suggest that *if* someone were to choose to avoid the APIs against which to code a solution for existing spool files, and to use WRKSPLF spooled output, then they could do better to avoid the three separate spool-related actions of Spool, CPYSPLF, and DLTSPLF by just pushing the output data from the WRKSPLF request directly to a database file member over which a query using a function call to the command interpreter can issue ad hoc spool file command invocations.

Perhaps worth noting that a variation on the SQL I presented, can be used to issue a CHGSPLFA request to assign an EXPDATE() [via DAYS()] to specify the [date or] number of days for any existing spool files. That is, instead of using the DLTSPLF, as was noted could be any ad-hoc command request string built from the data, a CHGSPLFA command string could be built to change the expiration attribute on any spool files selected according to similar WHERE-clause criteria. FWiW: Whatever particular release of the OS being used, may or may not have added the expiration information to WRKSPLF output, whereby that information might be worthwhile to include in a predicate on the WHERE clause.

After the query to effect DLTSPLF for those spool files over thirty days old [in my earlier quoted reply found below], the following request could set expiration dates for those remaining spool files less than or equal to thirty days old [those which were not previously deleted] to have an expiration in ~30 days since their creation date:

select cmdExec( 'chgsplfa ' concat file concat ' job('
concat jobnbr concat '/' concat rtrim(jobuser)
concat '/' concat jobname concat ')'
concat ' splnbr(' concat filenbr concat ')'
concat ' expdate(*days) days(' concat char( dec( min(
days(current date) - days( nullif(crtdate, '') +1 ), 366
)/*end-min*/ , 5 )/*end-dec*/ )/*end-char*/
concat ')' )
from qtemp/qprtspldta /* pf under LF qprtsplf */
where days(current date) - days( nullif(crtdate, '') ) <= 30

Note: the MIN function and the "+1" work together to satisfy the limits requirement of the DAYS() parameter irrespective of the above selection which nullifies the effect of the MIN. However if the selection were to change to include spool data already older than 366 days, then the query would still generate a valid command string.

The command string to be performed by the cmdExec function, as generated from such a query, could be for example [noting: some extra but insignificant spaces\white-space are not trimmed in the above string expression]:

'chgsplfa QPDSPLIB job(177811/THEUSER/QPADEV0013) splnbr( 3) expdate(*days) days(18 )'

Note: More parameters than shown in the examples here might be required on either of the DLTSPLF or CHGSPLFA, if spool files were /restored/ to the system. The other parameters may be required to ensure a distinct spool file can be located with the criteria specified as parameters on the command string.

Regards, Chuck

On Fri, May 10, 2013 at 4:27 PM, CRPence wrote:


If one were really so averse to using the APIs that are provided,
and also were content with such /tricks/ both being easily impacted
by OS reporting [printer file] changes and possibly functional only
on the installed language and release on which the code was first
written, then why not just write the output of the WRKSPLF directly
into a database file over which a SQL query is run to effect the
command invocation? e.g. the following work gets the data into a
database file and the SQL can be used to issue any ad-hoc requests
beyond just the DLTSPLF, by dynamically building the command
request from the column data:

clrpfm qtemp/qprtspld
; -- presumes prior effective CRTPF QTEMP/QPRTSPLD
ovrdbf qprtsplf qtemp/qprtsplf lvlchk(*no)
; -- presumes prior CRTLF QTEMP/QPRTSPLF over QPRTSPLD
wrksplf *all output(*print)
;
/* run in same SQL OPTION DATFMT as job DATFMT() */
select cmdExec( 'dltsplf ' concat file concat ' job('
concat jobnbr concat '/' concat rtrim(jobuser)
concat '/' concat jobname concat ')'
concat ' splnbr(' concat filenbr concat ')' )
from qtemp/qprtspldta /* pf under LF qprtsplf */
where days(current date) - days( nullif(crtdate, '') ) > 30
; -- presumes UDF cmdExec exists for the purpose of QCMDEXC
dltovr qprtsplf
;



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

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.