Once a program has initialised printing it can control printing by selecting a subdevice POD(assuming the Device Group has suitable PODS) to change the device characterstics in some way. By far the most common use of this is in programs that use an OSDI. A typical POS program may need to switch between journal and receipt printers, or send output to a customer or operator display. All these would probably be selected by using Sub device output procedures and selecting an appropriate POD. These may all use the same COD with different parameter choices, or they may use different CODs. This is completely invisible and irrelevant to the QAB programmer.
A notable difference of selecting a subdevice from initialising a printer, is that once selected the current subdevice remains selected indefinitely. There is no concept of closing a subdevice in QAB. This means that a print procedure may be affected by procedures to the left of it in the procedure tree, not just the procedures above it.
Although Subdevice output is generally used in conjunction with an OSDI it is possible to use it with regular printers as well, assuming you have set them up correctly. For example you might use it to select different trays to print from on a laser printer - perhaps switching between printing on pre-printed stationery and blank paper at some point in your program.
For more information on setting up devices and using refer to Device Definition Hierarchy and Accssing an OSDI from QA Build in the OSDI Developer's Guide.
Your program must already have initialised printing using one of the techniques described in Printing.