OUTQ vs. PRTDEV
February 16, 2011 Hey, Ted
Several CL commands–Create User Profile (CRTUSRPRF) is a good example–have two parameters that control the destination of printed output. Where is the need for both print device and output queue? Can you explain the role of these parameters in determining the destination of output?
I know of no need to use both print device and output queue (“outq”) parameters. I have always managed fine with outq’s only. The System/38, one of the predecessors of the AS/400, used outq’s exclusively. I understand that IBM added the print device option to support software that had been developed for the AS/400’s other predecessor, the System/36. IBM required that the AS/400 be able to run software developed for both S/36 and S/38, therefore print device was added as an option to support the S/36 printer architecture.
Nowadays the print device only comes into play in only two instances of which I am aware: when a printer file is not spooling; and when the outq assignment resolves to *DEV.
As you know, there are several places to specify output queue and print device.
A lot goes into the routing of reports (my inaccurate but easy-to-use collective term for printed output). Of course, overrides trump everything. Aside from overrides, here is an overview of how the system determines where to send the output.
When a job begins, the system sets the outq and print device assignments for the job. These are the values that are used when a parameter has the value *JOB. The system resolves the output queue parameter first, starting with the job description, then examining the user profile, and finally the workstation device description, as needed, until it finds an output queue name or the special value *DEV. Then it goes through the same process to obtain a value for the print device.
At this point, the job has outq and print device assignments. You may use the Change Job (CHGJOB) command to change these job attributes.
When a printer file is opened, the system goes through a similar process, this time using the printer file attributes and job attributes, to determine an output queue name. Printer file attributes trump job attributes.
To sum it up:
If you attempt to send print to an outq that does not exist, the system issues message CPD3322 and sends the report to outq QPRINT.
I encourage you to visit the IBM i Information Center here for more details. You will find a good explanation of the routing process, a dozen examples, and a very short self-test.