LABEL Example
The LABEL example shows a report that prints mailing labels three across the page. The base table, subscriber, is a mailing list containing the name, post office box, address, city, state and zip code for each label. If there is no post office box for the label, the field is left blank.
Additional details on the base table layout are provided in the following tables:
Subscriber Table Definition
Subscriber Data for the Sample Report
The report formatting statements are described here:
• Report-Writer sorts the data by zip code.
• The report first begins a block so that the labels can be printed across the page.
• The labels are assumed to be $lbl_width wide and $lbl_length number of lines long. The value of $lbl_width must be greater than the actual number of characters printed and less than the page width, $pg_columns. The number of lines actually printed depends on the number of .newline statements in the report. Because $lbl_length is used to determine page breaks, it must be less than the number of lines per page, $pg_lines.
• Report-Writer creates a label by printing all fields of the table across four lines. If the field for the post office box is blank, the corresponding line cannot be printed.
• Some labels are best printed one set per page. This is useful if FF is used and the lines per page on the printer is set to the number of lines on the label. To print one set per page, adjust the value of $pg_lines to be equal to the $lbl_lines + 1.
• Report-Writer moves the left margin for the next label one label's width to the right of the previous left margin, if doing so does not cause the label to move beyond the right margin (for example, if only 1 or 2 labels have been formatted for a line which can fit three). When no more room exists on the line, the block of labels ends, the .endblock statement moves the report to the top of the next block of labels, the left margin is reset to 0 and a new block of labels begins. When the report runs out of data the block automatically ends, whether or not there is space left in the block buffer.
• This report uses declared variables without prompts. This means that the values of the variables must be passed in from the command line. The following report was run using these commands typed on a single line:
Windows:
report rwsqldb labels (pg_lines=11, pg_columns=79,lbl_width=25, lbl_length=5)
UNIX:
report rwsqldb labels "(pg_lines=11, pg_columns=79, lbl_width=25, lbl_length=5)"
/*
** LABEL. Write out three across mailing labels
** with suppression of blank PO boxes.
*/
.NAME labels
.OUTPUT labels.out
.SHORTREMARK Prints data in mailing label format:
.LONGREMARK
Requires parameters pg_columns, pg_lines, lbl_width, and lbl_length
passed in on the command line. They will not be prompted for. The
following values will result in three labels across and two down:
(pg_lines=11,pg_columns=79,lbl_width=25,lbl_length=5) By varying the
values you can vary the layout of the labels.
.ENDREMARK
.QUERY select name, po_box, address, city, state, zip
from subscriber
.SORT zip
.DECLARE
pg_columns = int, /* number of characters across the page */
pg_lines = int, /* number of lines per page */
lbl_width = int, /* the number of characters across one label*/
lbl_length = int /* the number of lines in one label */
.PL $pg_lines
.PW $pg_columns
.RM $pg_columns
.LM 0
.HEADER report
.NEED $lbl_length
.BLOCK
.HEADER page
.NEED $lbl_length
.BLOCK
.DETAIL
.TOP
.LINESTART
.PRINTLN name
.IF po_box != ' ' .THEN
.PRINTLN 'PO Box ', po_box
.ENDIF
.PRINTLN address(cf0.30)
.PRINTLN city (c0),',',state(c0),' ',zip('nnnnn')
.IF left_margin + ($lbl_width * 2) < right_margin .THEN
.LM + $lbl_width
.ELSE
.ENDBLOCK
.NL
.NEED $lbl_length
.BLOCK
.LM 0
.ENDIF
.FOOTER page
.ENDBLOCK
.FOOTER report
.ENDBLOCK
Completed Report
Betty Clark Pat McTigue Ming Ho
2556 Carey Rd. Route 146 1020 The Parkway
Boston, MA 01002 Trumbell, CT 04239 Mamaroneck, NY 10012
T. Shigio Marvin Blumbert Carlos Ramos
PO Box 1234 17 Saville Row 2459 39th Ave
201 Emperor Lane Carmel, CA 93001 San Francisco, CA 94121
Rye, NY 10101
Anastassios Vasos Mario Verducci
722 Fourth St. PO Box X‑207
Gualala, CA 95035 General Delivery
Middletown, WA 98112