End-of-file rules
Print data for a logical printer is received as a stream of VTAM® request units (RUs). The SNA
architecture defines two groupings of RUs that are of interest:
- A chain consists of one or more RUs.
- A bracket consists of all of the RUs in
one or more related chains.
From an SNA-theory point of view, the use of brackets is the most
logical way to determine data-set boundaries. Using this technique,
a request marked BB (Begin Bracket) indicates the start of a new data
set, and the end of a chain marked EB (End Bracket) marks the end
of the data set. This is the default end-of-file rule that NetSpool uses
unless you change it. It is called the end-of-bracket rule.
The end-of-bracket rule works with both CICS® and IMS™ LU
type 1 sessions, with CICS LU
type 3 sessions, and with other applications able to control the use
of the BB and EB bracket bits. However, for some applications, the
end-of-bracket rule does not work well, as indicated by these examples:
- In a CICS application with
an LU type 0 session:
- BB is sent on the session's first request.
- No EB is sent at the end of the transaction.
- Result: The output for the entire session is treated as one data
set, causing a potentially long delay in printing.
- In an IMS application with
a non-SNA 3270 printer:
- Each line of output is sent as a separate chain marked BB, EB.
- Result: Each line is treated as a separate data set, causing
unnecessary overhead and increasing the chances of data sets from
other applications intruding.
NetSpool lets you specify five
end-of-file rules. NetSpool uses
only one of these rules for any one session:
- End-of-bracket (default): NetSpool ends
the data set when the RU chain is marked EB (End Bracket) and starts
a new data set when a request unit (RU) is marked BB (Begin Bracket).
- End-of-session: NetSpool ends the data set at the
end of the VTAM session for
this printer definition.
- End-of-chain: NetSpool ends the data set at the
end of a chain.
- String: NetSpool ends the data set when the last RU
in a chain contains a specified string of data. You can also specify
whether NetSpool is
to keep or delete the specified string of data in the output data
set.
- Timer: NetSpool ends the data set when the time interval
specified in either the Timeout idle interval field
or the Busy interval field expires and NetSpool has
received the last RU in the chain.
The Timer
idle interval field specifies the amount of time NetSpool waits
for input data before printing the data already received. If NetSpool does
not receive any input data during this time and a reasonable stopping
point has been reached (end of an RU chain), NetSpool closes the output data
set so it can be printed.
The Busy interval field
specifies the amount of time for which NetSpool receives data without
printing it. After this time interval expires, NetSpool closes the output data
set when a reasonable stopping point is reached (end of an RU chain
and the top of a new page).
Use the timer method only when none
of the other end-of-file rules makes sense because:
- The use of timers to detect data-set boundaries is an inexact
method. Tuning is required to choose the best timer values, and even
then the results are inexact.
- Under each of the other end-of-file rules, exact data-set boundaries
can be determined directly from the received print data requests.
These rules apply when you select the Timer option:
- Specify this option only for LU types 0 and 3.
- Do not select this option when you select the None formatting
option or when you use the Embedded attributes prefix field
on the NetSpool Options
panel.
|