       Perfect Address Software Developer's Kit Demo Notes

Thanks for downloading and trying the Perfect Address Software 
Developer's Kit. If you have any questions or comments, please 
send them to:

    support@zipinfo.com 
    
    or call us at 866-256-2042


FAST START

The SDK automatically installs itself on the machine where you run
the self-extractor program. For a quick test of the program look
for the sample program addr32.exe in the samples folder. Run addr32
and try a few addresses in Orlando, FL.


A FEW SAMPLE ADDRESSES OF ORLANDO, FL

490 E South
Orlando, FL

4800 Dacey Ct
Orlando, FL


3298 Galaxy Way
Orlando, FL


2100 Fairmont Circle
32837


1329 40th St Apt A
Orlando, FL


1707 Orlando Central Pkwy Ste 100
Orlando, FL


PO Box 2769
Orlando FL


14301 Peacock Springs Trl
Orlando FL


OVERVIEW

The Perfect Address Software Developer's Kit is a commercial
program developed by CD Light which provides Windows programmers
the tools they need to verify and correct street addresses and find
the correct ZIP+4, county, and congressional district for address
to which the US Postal Services delivers mail. 

We license the Perfect Address national address database from the
US Postal Service. This database contains mailing address
information covering more than 125 million addresses in the USA
and its territories. Please note: this is a MAILING ADDRESS
database; it DOES NOT contain the names or phone numbers of
individuals. It does, however, contain more than 750,000 business
names and addresses.

The production SDK consists of a 750 MB address database plus a 
search engine implemented as standard Windows Dynamic Link Library 
(DLL) module. The search engine works with 32-bit or 64-bit applications 
running under Windows. The SDK is available only for Windows-compatible
platforms. 

The full SDK (available directly from CD Light) contains:

-  Perfect Address 32-bit and 64-bit DLLs for address verification and correction 
   from custom programs written in C/C# or from commercial database 
   programs such as Access, dBase, Visual Foxpro, or Visual Basic, etc. 
-  Programmer documentation
-  Sample programs with source code written in Microsoft C++ and
   Visual Basic 
-  A header file for use with C compilers
-  A 750 MB address database from the USPS
-  Perfect Address Interactive (single-user license, for development use only)

This demo version of the SDK contains:

-  Perfect Address DLLs 32-bit and 64-bit
-  Programmer documentation
-  Sample programs with source code written in Microsoft C++ and
   Visual Basic 
-  A header file for use with C compilers
-  A sample address database for the city of Orlando, Florida 

The only real difference between this demo version of the SDK and
the production version of the SDK is the size and scope of the
address database. The demo database was intentionally restricted
to permit reasonable downloading times via the Internet.

Note: The DLL provided with the demo version of the SDK works
only with the demo database provided, and processes only addresses
and ZIP codes of Orlando, Florida. However, the DLL is not crippled 
in any way. Please read the full programmer documentation provided 
with this demo for a complete discussion of the functions provided 
by the DLL. All documented DLL functions are supported in this demo 
version. 


INSTALLATION

The only installation necessary is handled by DMOSETUP.EXE, a
Windows program which creates the file UNZDLL.INI in your Windows
folder, and copies the DLL file UNZDLL32.DLL to your Windows 
folder. The eight demo address database files, Z1.DAT through Z8.DAT, 
can be located wherever you wish on your hard disk. 

In general, the Perfect Address DLL file UNZDLL32.DLL should reside in 
your Windows folder. Alternatively, you can place the DLL in the same
folder with your calling program.

To uninstall the Perfect Address SDK, simply delete all Perfect
Address SDK files and subfolders from the folder where you originally 
installed the SDK. Also delete files UNZDLL32.DLL and UNZDLL.INI 
from your Windows folder. The SDK makes no entries in your Windows 
registry.


SAMPLE PROGRAMS - Try this one: Addr32.exe

Several sample programs demonstrate how to call the Perfect
Address DLL from a Windows program. ADDR32.EXE finds mailing
addresses in the city of Orlando, Florida, and ZIPDEMO.EXE finds
the city-state for a 5-digit ZIP code (limited to ZIP code 33040
for the demo). These two programs are also available in samples
folder.

The sample address database included with this demo version of
the SDK covers only Orlando, Florida. 


ADDRESS DATABASE AND CASS CERTIFICATION

We license the Perfect Address national address database from the
US Postal Service. Please note, however, that we have chosen NOT
to qualify this product for postal discounts. The DLL and the
database are NOT CASS-certified, and CANNOT be used to obtain
postal bulk mail discounts. For that reason, our address database
is not limited to a US Postal Service-mandated 60-day life (as 
are the CASS-certified products available from other vendors), 
but can be used as long as you choose to use them.

Address information does naturally change with time, and you
will, most likely, wish to update the address database to the
latest information at some time in the future. But we place no
arbitrary usage or time restrictions on your access to the
address database. 


NO NETWORK RESTRICTIONS

We place no network restrictions on your use of the DLL or the
address database. You can install the software and the database
on a server, if you wish, and access it from multiple work
stations with no additional license fees. You may copy the
Perfect Address national address database files to a single hard 
drive. Note, however, that you'll need about 750MB of free space 
for the production version of the address database.

Please understand and respect this usage limitation for the
production version of the Perfect Address national address
database:

YOU ARE PROHIBITED FROM REPRODUCING THE PERFECT ADDRESS NATIONAL
ADDRESS DATABASE FILES OTHER THAN TO COPY THEM TO A SINGLE
COMPUTER OR SERVER. 

Our license prohibits your concurrent use of the address database
on more than one computer or network server. If you wish to do
so, you must acquire additional licenses. Contact CD Light for
more details.


ADDRESS RANGES

The Perfect Address national address database usually specifies
an address range for a particular street or block face,
especially in residential areas. For that reason the database
usually does not list each house or apartment which may exist on
a given block. In these cases the DLL verifies that a particular
street number falls within a valid range for the specified street
and return the correct ZIP+4 and carrier route for that address,
as well as calculating the Delivery Point Bar Code (DPBC) digits
which should be used for mailing to that address.


ADDRESS VERIFICATION

The DLL search engine accepts an address as two to four separate
text strings, in this form:

    CD Light
    230 N Tranquil Path Dr
    The Woodlands TX 77380

Superfluous embedded spaces and punctuation characters are
ignored and deleted by the DLL as part of the address
standardization process. 

The first line, if used, is reserved for a company name. The
second line is reserved for Puerto Rican urbanization names. The
city-state-ZIP line (always the last line) need not be complete,
and will be corrected, as necessary, to a USPS-approved city
name. Either the ZIP code or the city-state can be omitted. The
DLL also corrects street name spelling, street prefix and suffix
abbreviations, and standardizes addresses to USPS addressing
standards. 

After it processes an address, the DLL returns an error code
describing the "correctness" of the address and any actions which
were necessary to verify the address. Note that at this point the
original input address remains unchanged. Your calling program
can then retrieve the corrected address, if necessary, and can
also retrieve additional information about the corrected address,
such as ZIP+4, carrier route, Delivery Point Bar Code digits,
county name, county FIPS code, timezone or daylight savings time
flag. Note that the county name and county FIPS code are matched
to the input street address, while the timezone and areacode are
matched to the 5-digit ZIP code.

If an address cannot be verified or corrected, the DLL may return
an error code indicating the existence of possible alternate
address matches. The calling program can then retrieve these
addresses, one at a time, from the DLL for display to an operator
who can make the final address selection. 


HOW DO YOU CALL A DLL FROM YOUR PROGRAM?

The SDK DLL follows the Windows standard calling sequence for Windows 
DLLs. If your application can successfully call functions in the
standard Windows DLLs, such as KERNEL, USER, etc., then your
application should be able to call the Perfect Address DLL in
the same way. We suggest you read carefully the documentation
regarding calling Windows DLLs which should have come with your
commercial application.

Calling the DLL's functions is really not difficult. Microsoft
products such as Microsoft Word and Access use Visual Basic as a
script language which provides the declarations and other
commands necessary to load and call third-party DLLs. The SDK
demo package and the production SDK both include a simple Visual
Basic example to follow. Source code in C/C++ is also provided.


Address Matching Rules

The SDK DLL follows US Postal Service address matching rules to find
a correct address match. The fundamental rule is called the "one
component failure rule". In simple terms, this rule permits an
address match if and only if no more than a single delivery
address component mismatch exists, where a "component" is defined
as a pre-directional, street name, street suffix, or a
post-directional. 

This address:

  250 E CENTER ST N

has all four address components. If one component can be added,
changed, or deleted to achieve a unique match, the DLL is allowed
to correct the address and return the ZIP+4. Under USPS rules, if
more than one component is incorrect, no match is allowed. If
adding, changing or deleting a single component results in
multiple matches, no match can be returned. The algorithm calls
for adding a suffix first, before adding a directional. If there
is no match, change or delete the suffix. Finally, change or
delete a directional. Swapped directionals are NOT considered to
be a component failure.

If there is no exact address match within the normal city, the
DLL applies the "one component failure rule" within the input ZIP
code. If there is still no match, the DLL applies the "one
component failure rule" to all addresses within the postal
finance number. If there is still no match, the address is
rejected. 

The DLL uses an advanced matching algorithm to match city and
street names. 


Multiple Address Matches

In applying the "one component failure rule" the DLL often finds
multiple addresses which satisfy the address matching criteria.
However, the USPS address matching rules (logically) prohibit the
DLL from making a "guess" as to which address is correct. 

For example, given this address:

  250 FOREST

and applying the "one component failure rule", the DLL might find
these potential matches:

  250 FOREST AVE

and

  250 FOREST DR

Either address could be correct, but the DLL has no way to
resolve the conflict. USPS rules call for the address to be
rejected. In general, any time the DLL applies the "one component
failure rule" and finds multiple potential matches, the input
address is rejected. In this case the DLL returns the error code
EC32 (multiple matching records).

To help you resolve address conflicts such as the example above,
the DLL provides two functions which permit your program to
examine the matching records and take some appropriate action.

UNZ_GETMATCHCOUNT() returns an integer count of the number of
matching addresses found by the DLL on the previous
UNZ_CHECKADDRESS() call. This function can be used only when the
return code from UNZ_CHECKADDRESS() is EC32 (multiple matching
records).

UNZ_GETMATCHADDR() returns one selected address from the group of
matching addresses. You must specify the address by number, in
the range of 1 to n, where n is the number of matching addresses
returned by UNZ_GETMATCHCOUNT(). 


ADDRESS MATCHING SPEED

Under varying, but real office conditions, we have measured the
performance of our DLL to be from 12,500 addresses per hour to
over 75,000 addresses per hour. Some competing products claim to
process "hundreds of thousands of addresses per hour". Be wary of
such unsubstantiated claims. Your results will certain be far
lower than such exaggerated performance claims. 

The most critical performance factor is the hard drive. For
best results, use a fast gard drive. At today's hard drive
prices, this is the best investment you can make. And for better
speed, presort your address list into ZIP code order. Does a
faster processor or more RAM help? Sure, at least a little, but 
you'll get more bang for the buck with a large hard disk drive.


New DLL Versions

CD Light normally provides a new SDK, including a new DLL with 
each delivery of the Perfect Address national address database. 
There are several reasons for this: we add new features to the 
SDK from time to time and we often change the format of the address 
database files. This means that you (and, potentially, your 
customers) must install a new DLL with each new address database. 
The old DLL will not be able to search the new database, and vice 
versa. However, we do maintain the existing DLL function names 
and calling parameters, such that no programming changes are 
normally required to maintain compatibility. However, CD Light 
does reserve the right to change the function names and their 
parameters at any time.


LICENSE FEES

The Perfect Address SDK is available directly from CD Light from
$299. Additional licenses are priced at $99.00 each.


ROYALTIES

You may incorporate the Perfect Address DLL search engine into your
application and distribute it, as part of your product, royalty-free. 
However, the Perfect Address DLL works only with the address database 
from CD Light. You are prohibited from reproducing the address database 
or the any of the eight data files, Z1.DAT through Z8.DAT, which make 
up the address database. You can purchase additional licenses from 
CD Light. We offer substantial discounts, based on quantity, and encourage 
VARs to resell the the database at an appropriate price to their customers.


REDISTRIBUTION

You may freely redistribute this demo version of the Perfect
Address SDK, including the sample address database, in its
entirety. 


DISCLAIMER

THIS DEMONSTRATION PRODUCT IS PROVIDED "AS-IS" AND IS INTENDED
FOR EVALUATION PURPOSES ONLY. CD LIGHT ASSUMES NO LIABILITY FOR
THE USE OF THIS DEMONSTRATION PROGRAM. CD LIGHT RESERVES THE
RIGHT TO REVISE THE Perfect Address SDK AND OR ANY OF ITS
COMPONENT PARTS AT ANY TIME WITHOUT OBLIGATION TO NOTIFY ANY
PERSON OR ORGANIZATION OF SUCH REVISIONS.


DEMONSTRATION VERSION LIMITATIONS

The demo address database is limited to Orlando, Florida. 


FOR MORE INFORMATION

We see this project as a partnership between you and us. If you
have questions, comments, or suggestions about this or any other
CD Light product, please contact us by:

voice:    866-256-2042 
email:    sales@zipinfo.com
Internet: www.zipinfo.com

CD Light
230 N Tranquil Path Dr
The Woodlands, TX 77380

