Printqueue file maxed out

cncmiller

cncmiller

Active Member
Can anyone help with the problem of the printqueue file on an AS/400 enterprise server filling up with over 32,767 members. When this happens UBEs will not run. We have looked into archiving then removing the members from the AS/400 side this seems to work but what about reports that people need to access after we archive the members? Any suggestions will be greatly appriciated.
 
After reading your post, I am not alone.

I have developed a system specs to handle this issue. This solution involved the combination of OneWorld, CLP and RPGLE programs development.

You would need to utilize the DB trigger program to get the correct PDF member from multiple PRINTQUEUES.

Your CLP and RPGLE should automatically create 1 or more history PRINTQUEUE as needed like PRINTQH1, PRINTQH2 to store PDF member files. PRINTQUEUE source file should always have enough room to keep the most recent PDF member. Because once PRINTQUEUE reached its maximum storage, OneWorld batch job will fail. This PDF member management process can be done on nightly basis through the scheduler.

On the OneWorld side, allow user to select and view the PDF as usual but if the PDF member does not exist in the PRINTQUEUE source file, take that user seamlessly to the next history PRINTQH# to bring up the PDF on the screen. It is ideal to create a table and OneWorld program to allow users to define their own PDF preferences setting like how long do you want to keep this report, 30 days, 90 days, 120 days or so on. You can also ask user if they want to save that PDF to a tape after number of days or just simply delete it by the AS/400 server program.

This approach requires you to know CL and RPG ILE languages.
 
Hi there,

There archive programms for it that can work with Oneworld as well. We are currently selecting such a programm so we have no real experience with it but it looks promissing on paper ;o).

And yes there is the occasional problem with orphan PDF members in the printqueu file. An AS400 consultant/programmer has made a programm for us to tackle that problem if needed. We shut down the OW service, run this programm that checks if the member is if F986110 table and if not than it will be erased.

Then there also is the problem of cleaning the printqueue from jobs that do not have to be archived or exsist long. Used to clean them by hand which took a long time but one of the Dutch JDE people did make us a program and ube that does that work way faster. Funny thing is that when I asked for such a thing through the helpdesk it was returned in consider for future design. He made it work and look nice in less than 3 days.

So yes your not alone with these problems and yes there are solutions
 
I've had the same issue at a customer site too.

We implemented a CL program to move PrintQueue members out to another AS400 file when they reach a certain age. The users cannot access the archive file as there us no user interface to it. If they need a file, somebody in CNC has to manually move it back.

The problem is, we produce so much PDF that we can only keep about 2 weeks max in the current PrintQueue! Users sometimes need to access stuff from the last month.

To work around this, I've written a UBE based on F9861101 that instead of purging PDF, it copies PDFs to a share on an Intel logic server. I've made a mod to P976110B so it realises when a PDF is archived and then fetches it from the Windows share.

All this works fine, but there's one issue I have not resolved yet: I need a server C business function to delete the PrintQueue member, and I cannot get it working. I expected something like this to work:

unlink("B7333SYS/PRINTQUEUE(F316078)");

But when I call this from a client testbed applciation, it hangs the client. Still trying to track this down.

I could just system() an AS400 command to delete the member, but that would be quite inefficient.

Any ideas?

Thanks
JohnO
 
Back
Top