


This operation code allows you to select a specific printer and set properties.
Usage
CALL "WIN$PRINTER"
USING WINPRINT-SET-PRINTER, WINPRINT-SELECTION
GIVING RESULT
Parameters
WINPRINT-SELECTION Group item defined in "winprint.def" as follows:
01 WINPRINT-SELECTION.
03 WINPRINT-NAME PIC X(80).
03 WINPRINT-PORT PIC X(80).
03 WINPRINT-DRIVER PIC X(80).
03 WINPRINT-DRV-VERSION SIGNED-INT.
03 WINPRINT-NO-OF-PRINTERS SIGNED-SHORT.
88 WPRTERR-NO-PRINTERS VALUE -1.
03 WINPRINT-IS-DEFAULT SIGNED-SHORT.
88 WPRT-IS-NOT-DEFAULT VALUE 0.
88 WPRT-IS-DEFAULT VALUE 1.
03 WINPRINT-COPIES SIGNED-SHORT.
88 WPRT-HAS-NO-COPY VALUE 1.
03 WINPRINT-ORIENTATION SIGNED-SHORT.
88 WPRT-HAS-NO-LANDSCAPE VALUE 0.
88 WPRT-HAS-LANDSCAPE VALUE 1.
03 WINPRINT-QUALITY SIGNED-SHORT.
03 WINPRINT-CURR-ORIENTATION SIGNED-SHORT.
03 WINPRINT-CURR-COPIES SIGNED-SHORT.
Description
WINPRINT-NAME must hold the name of the printer as received by WINPRINT-GET-PRINTER-INFO. If WINPRINT-COPIES is set to a positive value greater than one, you may use WINPRINT-CURR-COPIES to set the number of copies to print. If WINPRINT-CURR-COPIES is set to zero, the printer driver default is used. If WINPRINT-ORIENTATION is set to a positive value, then WINPRINT-CURR-ORIENTATION may be set to any of the following values:
WPRTSEL-ORIENT-DEFAULT - For printer default.
WPRTSEL-ORIENT-PORTRAIT - For portrait orientation.
WPRTSEL-ORIENT-LANDSCAPE - For landscape orientation.
WINPRINT-QUALITY may be used to select varying grades of print quality. One may use the predefined constants for this purpose:
WPRTSEL-QUALITY-DEFAULT - For printer default.
WPRTSEL-QUALITY-HIGH - For high quality.
WPRTSEL-QUALITY-MEDIUM - For medium quality.
WPRTSEL-QUALITY-LOW - For low quality.
WPRTSEL-QUALITY-DRAFT - For draft quality.
The steps for actually specifying a printer differ depending on whether or not you know the name of the printer.
If you know the name of the printer, set WINPRINT-NO-OF-PRINTERS to 0, and set WINPRINT-NAME to the name of the printer. Specify any settings you desire and call "WIN$PRINTER" using WINPRINT-SET-PRINTER.
If you don't know the name of the printer, start by calling "WIN$PRINTER using WINPRINT-GET-NO-OF-PRINTERS and storing the result in an appropriate variable. Next, enumerate the printers by iterating through the available printers starting with 1, ending with the value obtained from WINPRINT-NO-OF-PRINTERS. Stop when you have found the printer you want. Specify the settings you desire and call "WIN$PRINTER" again, this time using WINPRINT-SET-PRINTER. An example of this scenario can be found in the sample program "prndemo.cbl."
The WINPRINT-SET-PRINTER operation also allows you to change some printer settings while the printer is open, or spooling. For example, if you are printing a portrait-oriented report that contains a single-page table in landscape format, you would need to change the page orientation during printing. When you are using this feature, the only properties you can alter for this op-code are those controlling the number of copies, the page orientation and the print quality. All other properties for this op-code use the defaults.
Comments
A call to WINPRINT-SET-PRINTER has an implicit form feed. WINPRINT-SET-PRINTER must be called before you begin to print the page with the different setting, and after all printing is done on the page immediately preceding the page with the different setting. When the current page is finished, the print cursor is positioned at the top leftmost point on the new page. The new page accepts the current values specified for number of copies, page orientation and print quality, provided they are within legal parameters for the particular setting.
Here is an example of how to specify a printer, assuming that you want to print to "Gutenberg":
INITIALIZE WINPRINT-NO-OF-PRINTERS.
MOVE "Gutenberg" TO WINPRINT-NAME.
CALL "WIN$PRINTER"
USING WINPRINT-GET-PRINTER-INFO WINPRINT-SELECTION.
*we want to set landscape orientation
MOVE WPRTSEL-ORIENT-LANDSCAPE TO WINPRINT-CURR-ORIENTATION.
*with this call, subsequent print jobs will print in landscape
*orientation from Gutenberg
CALL "WIN$PRINTER"
USING WINPRINT-SET-PRINTER WINPRINT-SELECTION.