# Spooler overview

The spooler controls all output that is sent to a printer.
Spooler is an acronym derived from simultaneous peripheral output
online.

Any system that allows multiple users to generate printed
output and direct it to one or more logical or physical printers must
have a spooler. The spooler controls the creation of each print job
and sees that it is either sent to a printer or held in a storage
area. It also controls the relationship between physical hardware
and logical printers.

Depending on the printer assignments and the status of the printer, the output can be printed
 immediately, sent to tape, placed in a queue for later printing, or placed in a hold file.

There are three major divisions of interest in the
spooler:

- Form queues

- Logical printers

- Physical printers

Each user is assigned to a form queue, either by direction
or by default. When the user creates a report, it becomes an element
in a table of currently active reports for the assigned form queue.
There are status flags that indicate if the report is to be printed,
suppressed, held, sent to tape, or left open at the end of the job.

The relationship between the physical printers (hardware) and
the form queues is established when a logical printer is *started*. At that time, the user designates the name (number)
of a logical printer, the physical hardware device it will run on,
and the form queues that it will service.

The spooler directs
the items in the queue that are scheduled to one or more printers
as they becomes available. The spooler can be directed to output report
items to printers, tape, or to a specified file in output processor
format.

Note:
 For Windows: In certain instances, printers might not be available to D3
 until initialized by Windows, depending on the initialization string that is required by the
 printer driver.

---
Source: https://d3codex.com/tcl/spooler-overview/ - part of the D3Codex reference.
