The hardcopy phase of JES2 processing takes place after output
processing. The job's $JQE is placed on the hardcopy queue where
it waits until all output is processed.
To be processed, HELD data sets must be either released, canceled,
or transmitted (SPOOL Offload or NJE). All data sets are grouped into
$JOEs. However, held data sets are not eligible for hardcopy processing
even though they are represented by $JOEs. Since $JOEs are always
resident in memory, the performance of held data sets is improved.
A common misconception with JES2 users is that output is assigned
to a printer or output device. Output is only assigned to an output
class and has other output characteristics. Output devices, printers,
punches, external writers, and so forth, select job output from the
output queues ($JOT or Job Output Table) by class and other output
characteristics. Output has no affinity to an output device, for example,
a printer. Output must be selected by the device based on the output
data set characteristics matching the device work selection (WS=)
criteria. Route code is the most common characteristic used to match
job output with an output device.
This section discusses two types of hardcopy processing, JES2 controlled
devices and Print Services Facility™ (PSF) controlled devices. The JES2 Print/Punch Processor
module contains the necessary functional routines for controlling and writing
to JES2 output devices, both local and remote.
Only line mode printing is supported for JES2 devices. Page mode
output data must be processed by PSF. Printing to coax connected printers
(printers attached through 3174 and so on.), such as 3270 type printers
(3276, ....), is not controlled by JES2. Applications, such as JES/328X,
are required to support these types of printers.
The following describes the Hardcopy Phase processing.
Table 1. Hardcopy Phase ProcessingStep |
Processing |
Exit Used |
---|
1 |
HASPPRPU initialization consists
of assigning an available output device and initializing control blocks
and buffers as a result of a Start command (e.g., $S PRT(5)). |
|
2 |
When an output device (either remote
or local) has been started a call is made to scan the output queues
$JOT using the $#GET macro. This is the work selection service which
scans the $JOT to search for output as specified in the work selection
parameter list. When an output group ($JOE) has been selected the
job's $JCT is read from spool and Exit 7 is taken.
|
7 |
3 |
If the image subtask has not already
been attached, it is done now. A call is made for Exit 1 to allow installations
to provide their own separator routine. After Exit 1 (and based on
Exit 1 if it exists) the standard JES2 supplied separator page may
be produced. The jobs $IOTs are read from spool and the $PDDBs
(contained within the $IOTs) are obtained. Setup is called to check
if device and data set characteristics match. Operator intervention
may occur here.
|
1 |
4 |
A call is made ($SEAS) to verify
that the data set userid (owner) is allowed to print on this device.
Exits 36 and 37 are taken. |
36 37
|
5 |
Exit 15 (R0=0) is called for data
set select. This exit point could be used to control copy count, print
translate table, or the CCW translate tables. |
15 |
6 |
Exit 15 (R0=4) is again called to
allow user produced data set separators. The $#CHK macro is used to
produce a checkpoint at this time. A checkpoint produces
a checkpoint $JOE that allows for recovery in case of a system or
device failure. |
15 |
7 |
The main print/punch loop is where
SPOOL buffers are read, channel programs are constructed for the output
device, and $EXCPs are issued to print or punch lines of output. This
process continues until the entire data set is read and written to
the output device. The data set is repeated if copy count is greater
than one and a return to step 3 is made if there
are additional data sets in the output group to be processed. |
There are no exits available during
this process. |
8 |
Exit 1 is called (R0=8) to allow
for installation separator routines to replace the JES2 routine.
The $JOE is placed on the free queue. When there are no more output
data sets to be processed for the job, the $JQE is placed on the Purge
queue. Exit 51 is invoked when the job moves to the purge queue. |
1 51
|