User`s guide

4-144
Guide to Printers and Printing
19.%{1} – Pushes a 1 onto the stack.
20.%= – Pops the two 1s off the stack, compares them for equality, and pushes the
resultant 1 onto the stack.
21.%t – Pops the 1 off the stack and, since it is a TRUE (non–zero) values, calls for the
evaluation of %Gs1.
22.%Gs1 – Pushes a 1 onto the stack.
23.%d – Pops the 1 off the stack and returns it, in ASCII format, to the in–progress
calculation of wJ.
24.%Pq – Pops the 1 off the stack and stores it in the internal variable q.
25.%GWu – This value is already known, so a 1 is again pushed onto the stack.
26.%{3} – Pushes a 3 onto the stack.
27.%< – Pops the 3 and the 1 off the stack and, since 1 is less than 3, pushes a 1 onto the
stack.
28.%t – Pops the 1 off the stack and, since it is a TRUE (non–zero) values, calls for the
evaluation of %gq.
29.%gq – Pushes the value of the internal variable q, a 1, onto the stack.
30.%{1} – Pushes a 1 onto the stack.
31.%= – Pops the two 1s off the stack, compares them for equality, and pushes the
resultant 1 onto the stack.
32.%t – Pops the 1 off the stack and, since it is a TRUE (non–zero) values, calls for the
evaluation of %{2400}.
33.%{2400} – Pushes a 2400 onto the stack.
34.%d – Pops the 2400 off the stack and returns it, in ASCII format, to the in–porgress
calculation of _l.
35.%G_v – Pushes a 6 onto the stack.
36.%* – Pops the 6 and the 2400 off the stack, multiplies them together, and pushes the
resultant 14400 onto the stack.
37.%{300} – Pushes a 300 onto the stack.
38.%/ – Pops the 300 and the 14400 off the stack, divides 14400 by 300, and pushes the
resultant 48 onto the stack.
39.%d – Pops the 48 off the stack and returns it, in ASCII format, to the in–progress
determination of ia, the input data stream pipeline for ASCII jobs.
Why the Stack Language Describing Page Length Works
Going beyond the mechanical description of what happens when piobe resolves the
reference to %IwL, here is a description of why the printer colon file escape sequence logic
described above works.
The IBM LaserPrinter 4029 Series Technical Reference contains a figure and a table that
together describe the printable and unprintable areas on a page, and the paper and
envelope dimensions, in pels, for standard paper and envelope sizes. For instance, the
printable area on an 8.5 x 11 (width by length) inch page is 2400 x 3200 pels (width by
length). Note that if the page is rotated either 90 or 270 degrees for landscape printing, the
dimensions are swapped and become 3200 x 2400 pels (width by length).
The evaluation of %IwL begins by checking to see if the l flag was used on the command
line; if it was, then there are no calculations to perform. The requested value will be used.
(That is not a promise that it will work, just that it will be used.) If the l flag was not used on
the command line, then piobe has to figure out how long the page is under the current job
environment, as determined by other command line flags and by colon file defaults.