               POSTNET BARCODE PRINTING FOR CLIPPER V5.2
                              VERSION 2.2

This shareware version allows you to print zip+4 barcodes from within a clipper
5.x program.

This is an unregisterd version, but produces complete barcodes including
delivery point and CRC bars.  This program will only produce bars for laserjet
compatible printers.

A VERSION IS ALSO AVAILABLE FOR SUMMER '87.

The remaider of this manual explains how to use the function module and what
zip+4 postnet is all about.

THIS ROUTINE IS COMPLETELY SELF CONTAINED AND DOES NOT RELY ON A PRINTER FONT
OR CARTRAGE TO OPERATE.  THE ACTUAL BARS ARE CALCULATED AND PRINTED BY THE
FUNCTION.

If you find this routine useful and would like to register it, please fill
out the form that follows the manual and return it to:

         Computer Images
         P.O. Box 502
         Marion, CT 06444-0502

         Compuserve ID: 76455,1536

Along with a check for:  $10 - registered library only (personal use only)
                         $25 - registered library(no royalty inclusion in
                               software that will be sold or for business use)
                         $75 - registered source, .obj's, .lib (no royalty
                               inclusion in software that will be sold or for
                               business use.)

upon receipt, a diskette will be mailed containing a full working version,
Sorry, we can not accept credit cards.



DISCLAIMER

Computer Images distributes PSTNET52 solely on an "as is"
basis and offers no warranties.

Computer Images shall not bear any liability or responsibility to any user or
entity with respect to any liability, loss or damage caused, or alleged to
be caused directly, or indirectly by the functions contained in
PSTNET52, including but not limited to interruption of services, loss
of business or anticipatory profits or consequential damages resulting
from the use or operation of any of the features of the functions
contained in PSTNET52.

Computer Images makes no warranties, either expressed or implied regarding
PSTNET52's fitness for a particular purpose. The user agrees that
Computer Images shall not be held liable for any consequential damages,
even if Computer Images has been advised of the possibility of such damages.

By using any of the functions contained in PSTNET52 you acknowledge
your agreement with all of the above terms and conditions.

Copyrights

PSTNET52.LIB, PSTNET52.OBJ AND PSTNET52.PRG copyright 1994,1995 Computer Images.
HEWLETT PACKARD, HP, and PCL ARE COPYRIGHTED BY HEWLETT PACKARD, Inc.
Funcky is copyright by Dlesko, Inc.
RTLINK is copyright Pocket Soft, Inc.
POSTNET is a registered trademark of the United States Post Office Postnet bar
code format is copyrighted by the United States Post Office.

                           TABLE OF CONTENTS

How to use the function                                         1

Linking with PSTNET52                                           1

Source Considerations                                           2

Changing Printers                                               3

What is Postnet bar coding                                      4

How do you get plus four codes                                  4

Determining the Delivery Point                                  4

Using the DELIVPNT function in PSTNET52.LIB                     4

Speeding postal delivery - addressing do's and don'ts           5

Contacting the writter                                          6

Registration Form                                               7


HOW TO USE THE FUNCTION

The function is called like any other clipper function.  The format for the
passed parameters are as follows:

 @ <row>,<col> SAY POSTNET(<zip code>,<plusfour>,<deliv_pnt>)


    <zip code>  - the five position zip code (string)
    <plusfour>  - the plus four code or all zero's, if unknown (string)
    <deliv_pnt> - the 2 digit postal delivery point (see: Determining the
                  Delivery Point)

    EXAMPLE:

         POSTNET("06444","0502","02")

NOTE: To keep the PSTNET52 library small, no zip code, state code, +4, or
      delivery point verification is included as part of the library.  Some of
      these functions are available from other sources like dLESKO's Funky
      library.  If you pass the program an improper zipcode, an invalid bar
      will be produced that may delay the delivery of the letter.

If the delivery point or plus four codes are not known, they can be
passed as zeroes.  However, creating bars with zero plus four data will
only have a marginal effect on the delivery of the mailed item.

We have included number detection in the latest version of the library, which
will detect a numeric parameter and convert it automatically.  This will add
a slight amount of time to bar creation because zero leader digits do not
convert to string and must be added to the front of the parameter.


LINKING WITH PSTNET52.LIB

Link as you normally would, however, you must include the pstnet52 obj or lib.

    Including pstnet52 using rtlink:

        rtlink fi <PROGRAM> lib clipper,pstnet52


The function is included as a .LIB file, however, if you decide to change the
source and recompile, the result will be a .obj and it must be linked as a file,
not a library. (Source supplied to registered users only)


If you are not using rtlink, please follow the instructions supplied with
the linker.  Follow the instructions for including a library.
Since PSTNET52 is completely standard Clipper 5.x code it can be linked in
using any linker that supports clipper 5.x.


                                   1

SOURCE CONSIDERATIONS

POSTNET() requires little extra coding and should not conflict with fields or
variables already defined prior to calling the function.

Generating a postnet bar code (clipper 5.x source):

         SET DEVICE TO PRINT
         @ <row>,<col> say POSTNET(ZIP_CODE,PLUS_FOUR,DELIV_PNT)

              - or -

         SET PRINT ON
         ? POSTNET(ZIP_CODE,PLUS_FOUR,DELIV_PNT)

POSTNET() assumes the printer to receive the postnet bar code has been assigned
prior to calling the function.  If you do not <set print on> or <set device to
print> prior to calling this function, the bar <esc> codes will be sent to the
screen.

This function creates PCL escape codes that allow for POSTNET printing in any
orientation. The routine will default to the orientation selected via the
menu or set by software. PCL orientation may be changed by sending the
following escape codes to the printer:

PORTRAIT PRINTING
   ?? CHR(27)+"&l0O"

LANDSCAPE PRINTING
   ?? CHR(27)+"&l1O"

Font selection and character spacing will not effect this function or the
generated bar (other than x/y location on page, which will be based on the
font).

All print commands are sent to the Laser in the form of HEWLETT PACKARD'S PCL
escape codes. No fancy codes are used so this routine will work with all
current Hewlett Packard PCL printers and most compatible laser printers set for
PCL emulation.

If you want to capture the bars and print them later, you can do that be using
the set alternate to <file> and set alternate on prior to executing the
function.

PSTNET52 is 100% clipper 5.d code, which was converted from Summer '87 and
enhanced to take advantage of 5.x code reduction features.  Version 2 is
must faster than version 1 and has also passed USPS bar tests.


                                   2


CHANGING PRINTERS

If you plan on sending the output postnet bar to a printer other than LPT1, you
will have to set the printer using the "set printer to" command prior to
calling the function.

    Example of sending the output to LPT2:

         SET PRINTER TO LPT2
         SET PRINTER ON
         ? POSTNET(ZIP_CODE,PLUS_FOUR,DELIV_PNT)
         SET PRINTER OFF

You can also add the bars to other programs or word processors by sending the
resulting bar to a file (mail merge) instead of the printer.

Using the alternate command, you can redirect the output to a file.  Since the
function creates 100% PCL compatible escape codes, the file can be merged with
programs or word processors that do not create zip+4 postnet barcodes.


    Example of sending the output to an alternate file:

         SET ALTERNATE TO TESTBAR.TXT
         SET ALTERNATE ON
         ? POSTNET(ZIP_CODE,PLUS_FOUR,DELIV_PNT)
         SET ALTERNATE OFF



                                   3


WHAT IS POSTNET BAR CODING

Postnet is a barcoding standard that allows the post office to scan the mail
and direct the letter to the city, street, and even the mail person who will
deliver it.  With as little personal handling as possible.  Most of the sorting
is done by the computer that scans the letter.  This drastically reduces the
handling of the letter, and reduces delivery time, sometimes by several days.

The bar code consists of a start bar and end bar and 5 bars for each digit in
the zipcode plus a check digit, which is calculated by the function.
Each bar is is fixed in width and is either long or short.  The code for each
bar is provided at no cost by the Post office if you are interested in getting
into the detail of what makes up each code and how to read it.  My post office
even provided me with a postnet decoder card.

The U.S. Post office is very interested in getting as much mail as possible
coded, because it drastically reduces their expenses related to handling
and delivering the mail.


HOW DO YOU GET PLUS FOUR CODES

There are several services that will happily provide you with a CD-ROM or do
the conversion for you (for a fee of course).  However, the post office will
do the conversion for you for FREE.  Ask your local office for more details.
If they aren't cooperative go to a larger branch.  The post office publishes
this service and is happy to provide it since it allows them to add the
addresses to their database with no footwork.

All you need to do is supply them with the list of names and addresses and
they will return a set of adhesive labels precoded with the correct zip and
plus 4 code.


DETERMINING THE DELIVERY POINT

The delivery point is alway the last two digits of the address or post office
box.  This may seem very straight forward, however, most software doesn't
break out this field forcing you to write a routine to that will search for
the delivery point.  Included in the library is the DELIVPNT() function which
will seek out the delivery point from the address. It assumes that the person
entering the data knows a few rules. First, Postal boxes must be entered as
"P.O. Box " followed by the number and you can not use words like ONE HUNDERED
instead of 100 in the address. If you have control over the source code and
delivery speed is essential, you should create a field for the delivery point.


Using DELIVPNT()

 Deliv_pnt := DELIVPNT(<Address 1>,<Address 2>)

    <Address 1> - the first line of delivery address
    <Address 2> - the second line of delivery address

    Deliv_pnt - the delivery point returned by the function
                (If a delivery point can not be determined "00" is returned)

    Do not send a city, state, zip line to the function.
    If the second line of address is not required send the nil or " "
         Example:
              rtn := DELIVPNT("P.O. BOX 230","")


                                   4


SPEEDING POSTAL DELIVERY - ADDRESSING DO'S AND DON'TS

Many aspects of postal delivery have been computerized to the point that
they even have software that will read most hand addressed envelopes and
sort the mail automatically.  The computers can easily read laser printed
labels and determine the address and zip code even without the bar code.

Because of this innovation and the fact that a computer is making many of the
decisions on where to deliver your letter, it is important that you know how
the computer decides where to route your letter.

The post office guide lines are as follows:

 o  The order of the lines of address should be:  Contact, Company, Street with
    number, city state & zip

 o  If there are two lines of address the second line should be the place where
    the letter is to be delivered.  This is important if you have a street
    address for UPS deliveries and a seperate address or box for mail.
         Example:
              John Jones
              ABC Manufacturing, Inc.
              123 Warehouse Lane
              P.O. Box 456
              Anyville, CT 06123-1234

    If the street and box are reversed, the computer will attempt to deliver to
    the street first, may force it to be resorted at the local post office.

Of course when you have a large group of mail going out, any presorting that
is done before it goes to the post office will speed the handling by your local
office.

                                   5

Contacting the Author

    Please direct all inquiries, problems, and questions to:

         Mike Zimmer
         Computer Images
         P.O. Box 502
         Marion, CT 06444-0502

         Compuserve ID: 76455,1536



                                   6


                     POSTNET()/DELIVPNT() VERSION 2.2
                           Registration Form

Registering this version will allow us to continue creating programs like this
on a - try before you buy forum.  Upon receipt of your registration we will
send you a diskette with the current version of the library.  We will provide
royalty-free source code for a few dollars more.  You will receive free upgrades
for one year from the datet we receive this form

Please send me the latest version for ____ Clipper 5.2, ____Summer '87
                                       (each registered seperately)

     *This information is for our use in contacting you for upgrades
      it will not be sold or provided to any third party.

Name:________________________________________________________

Company:____________________________________________________

Address:____________________________________________________

Address:____________________________________________________

Phone:_(____)_____________________  FAX:_(____)_________________

I've enclosed a check for: ____ copies at $____ per copy

              $10 - registered library only (personal use only)
              $25 - registered library(no royalty inclusion in
                    software that will be sold or for business use)
              $75 - registered source, .obj's, .lib (no royalty
                    inclusion in software that will be sold or for
                    business use.)

Please check all that apply:
    ___ I can be notified by FAX of any future upgrades
    ___ I can be notified by FAX of any new related products

I am a:
    ____ Software developer
    ____ Consultant
    ____ Inhouse Programmer
    ____ Personal Programmer
    ____ Other___________________________________

I would like to have this routine developed for the following non PCL printers:

________________________  ____________________________ ______________________

________________________  ____________________________ ______________________
