;
                                                
                             ---  Z  D  B  ---  
                                                
       Version 1.8 -- A ZCPR3 Name and Address Database File Manager

                           I -->  Installation 
                           D -->  Description  
                           U -->  Use          
                           A -->    Add        
                           C -->    Call       
                           L -->    Delete     
                           E -->    Edit       
                           F -->    Find       
                           B -->    Browsing   
                           O -->    Output     
                           P -->  Patching     
                           X -->  Index        
                           S -->  Sorting      
                           Y -->  Miscellany   
:I

 Installation 

If you're running ZCPR3.3+, ZDB needs no ZCPR3 installation, but if you're 
running ZCPR3.0, you need to install ZDB in your usual way.

Before using ZDB you will need to patch it with your own return address.  
You may also need to change the standout video flags or printer codes to 
match your terminal or printer.  See ZDB.PAT for more information.
:D

 Description - 1/2 

ZDB is the Z-System Database, a name and address file manager.  What sets 
ZDB apart are its size (under 8K) and speed (written in Z80 assembler), its 
use of the Z-System extended TCAP and VLIB routines for screen graphics and 
cursor movement, its easy editing mode, and its use of the internal clock 
to date each entry automatically.  ZDB will also search for any string (or 
part thereof) in any record, any field.  An express search for last name or 
zipcode uses an in-RAM index of pointers for blazing speed.  You may also 
write the records to a new file in the sorted order of the current index, 
removing deleted records in the process.  The old file is renamed and 
retained as a backup.  The new file is automatically reopened after the 
sort is done and the first record displayed just as on startup.  Output 
options include label and envelope printing, and the writing of either a 
comma-delimited format ASCII file for use with WordStar's MergePrint or a 
WordStar compatible text file which can then be edited and formatted to the 
user's taste.  Label printing and CDF and WordStar file options allow the 
selection of any one of four keys for the output.  As of release 1.6 ZDB 
will dial the telephone number in the phone field of the displayed record.

 Description - 2/2 

ZDB is fully Z-System dependent.  If you lack a clock, ZDB allows for 
manual entry of the date.  ZDB does not require an RCP or FCP or IOP to 
work.  It does need the extended TCAP with the 13 graphics characters 
introduced in VLIB4D.

ZDB's data file uses a 256 byte record so that each one is on a page 
boundary.  There is no header to the file.  File size is limited to a mere 
64K 256 byte records -- due to the use of 16 bit counters for the number of 
records and the file pointer.  Disk capacity is the real world limiter on 
file size.  On a 390K floppy, ZDB itself will take 8K.  Divide the 
remaining 382K by 2 (you need twice the space in order to do a sort) to get 
maximum file size -- in this case 764 records of 256 bytes.  On a hard 
disk, of course, you hardly need to worry about file size.

The index requires 16 bytes per record plus an order table equal to the 
number of records in the data file.  Writing the CDF ASCII file or the 
WordStar file requires a 16K buffer above the index and order table.  A 
system with 45K or more of TPA should handle a ZDB file of 1400 records 
without overwriting the CCP.  ZDB has a built-in memory check to prevent 
crashes with very large files.
:U

 Use 

Entering 'ZDB /<cr>' at the command line will produce a help message.  If 
you also enter a data file name, ZDB will look for it, create it if it does 
not exist, and display either a blank record (if it's a new file) or the 
first non-erased one in the file.  If no file name is specified, ZDB will 
use ZDB.DTA as the default data file name.

If you don't have an internal clock (or have a clock module loaded), ZDB 
will ask for the current date.  If you wish to quit at this point, enter ^C 
at any time while entering the date.

The ZDB commands are displayed in a single main menu line at the bottom of 
the screen.
:A

 Add - 1/2 

'A' for Add is the command used to enter new records.  The display is 
cleared and the cursor placed in the first field ready for your entry.  
Each field is marked off with angle brackets -- >           < -- so you 
know how much space you have.  If you try to enter more characters than 
allowed in any field, you will get beeped at, but you can back up and fix 
things.   The editing and cursor movement keys are:
     
     ^X, TAB, RETURN or down arrow moves to the next field.
     ^E or up arrow moves to the previous field.
     ^S/^D or left arrow/right arrow move cursor left/right.
     ^A/^F move cursor one word left/right.  
     ^G deletes the character at the cursor and moves the remainder of 
          the line one character left.  
     ^T deletes the word to the right of the cursor.
     ^Y deletes from cursor position to the end of line.  
     ^V toggles the character insert mode, allowing you to insert 
          characters at the current cursor position, shifting the 
          rest of the line to the right.
     ESC or ^W at any point to finish the entry.
     ^Q at any point aborts the editing.

 Add - 2/2 

If you go past the first or last field, you are given a choice of redoing 
the entry to correct any mistakes or omissions or saving.  Press ESC or ^W 
at any point to finish the entry.  Entering ^Q at any point will abort the 
entry without saving the results.  ZDB intercepts U/D/R/L terminal arrow 
keys and interprets them properly.  Boxes near the bottom of the screen 
display editing keys and give prompts.  On completion of a new entry you 
are given the option of continuing to add new records or quitting.  When 
you finish entering new records, the index will automatically be sorted.

If you wish to ensure that a header record that describes the data file is 
always displayed as the first record when the file is sorted on either 
index, enter several spaces as the initial first and last name characters 
and make sure the ZIP Code field has no entry.  See ZDB.DTA.
:C

 Call - 1/2 

The telephone dialer works with any Hayes-compatible modem.  To make a 
phone call press 'C' from the main menu.  ZDB then instructs you to lift 
the receiver, turn on your modem, and press RETURN.  If the phone field of 
the ZDB record is empty or the first byte in the field is a space char- 
acter, nothing happens.  The main menu is re-displayed.  The calling 
routine will dial any proper sequence as long as the numbers start with the 
first byte of the phone field.  Put any access prefixes and area codes in 
the field, e.g., 1-800-555-2345.  Do not separate portions of the number 
with spaces (1 800 555-2345) because ZDB regards either a space or a null 
as the termination of the dialing string.  Do not use letters of the 
alphabet in the dialing string.  You may use hyphens or not:  5551234 and 
555-1234 work equally well.

 Call 2/2 

Because ZDB's dialing routine handles the space character as a terminator, 
you may put another number or other text in the field:
          555-2345 Home Phone=555-5432
ZDB will dial only the first number.  You can put in the Hayes delay 
character (a comma) or several of them to use with credit card calls and 
the like.  Put the full dialing sequence in the ZDB phone field:
          0-999-555-1234,,,,123-456-7890-4321 -- a typical credit card call 
where the commas delay sending the credit card number several seconds.  You 
may need to experiment with the number of commas.  The example works well 
with an AT&T credit card.
:L

 Delete 

Pressing 'D' lets you delete a record from the file.  You are given a 
chance to say no if you mistakenly press the 'D'.  The record is filled 
with nulls except for the first byte which is 0FFH, marking it as a deleted 
record.  Deleted records are dropped from the new file when a new sorted 
file is written.  Deleting a record does not change the record count in the 
header line of the screen since the deleted record is still in the file 
until a new sorted file is written.  Deleted records are not displayed or 
printed.
:E

 Edit 

'E' for Edit works exactly like Add except that it is for updating existing 
information.  You cannot edit the date.  It is changed automatically.  As 
in Add, ESC or ^W exits the editing session and saves the edited record and 
^Q aborts the editing session and restores the unedited record.
:F

 Find - 1/2 

There are two search routines in ZDB.  'X' (Express) Find searches the 
index in memory for a match.  Because the index is in memory, the Express 
search is very fast.  When the index is sorted by last and first names, 
each index record is made up of the first 9 characters of the last name 
and the first 5 characters of the first name.  When the index is sorted by 
ZIP Code, each record contains 9 characters in the ZIP Code field and 
the first 5 characters in the last name.

The other search works on any field but is slower, as it must read each 
record and search it for a match.  Press 'F' for this one.

 Find - 2/2 

You may enter up to ten characters in the search string.  Find is not case 
sensitive and partial strings are fine.  Entering "jo" to search for 
"Jones" will get the job done.  You can enter more than one word, e.g., 
"St. Paul," as long as they are in the same field.  If the search string is 
found in any field of any record, that record will be displayed on the 
screen.  You may then opt to end the search or continue it.  If there's no 
match, ZDB tells you so.  Even in fairly large files, Find works quickly, 
but Express Find is much faster.  Express Search and Find are also 
available under the Output routine.
:B

 Browsing 

Previous and Next are for browsing through the file.  Pressing '<', or ',' 
both work for Previous and '>', or '.' both work for Next.  Records are 
displayed in sorted index order, so if the file is not in sorted order, the 
record numbers appearing in the header line may not be in sequential order.  
Records are displayed in a circular wrap-around manner.  If you are going 
backwards through the file and reach the first record, another Previous 
command will go to the end of the file.  "Next" acts in a similar fashion 
when it reaches the end of the file.  Two other commands, not on the menu, 
are 'T' (Top) and 'B' (Bottom).  They quickly take you to the first or last 
record in the file.
:O

 Output -1/2 

Output has submenus offering a choice of printing labels and envelopes, or 
producing either a comma-delimited format ASCII datafile or a WordStar 
compatible text file.  The label option gives the further choice of 
printing a single label, those which match a key, multiple copies, or the 
entire file.  Both the label and envelope option allow you to use Find, 
Xfind, or Next before issuing the print command.

When you select 'Key', you will be asked to select the city, state, zip 
code or comment fields for matching the specified key.  If you select 'X', 
the search for a match will cover both comment lines in their entirety.  If 
you want to make labels for your past due subscribers, put "past due" 
anywhere in either comment line.  There's room for lots of imagination in 
the use of this feature.  The other keys -- city, state, or zip -- are 
treated a little differently.  When you enter a city, state, or zip key, 
ZDB will only match fields that BEGIN with your key.  This avoids incorrect 
matches that would otherwise occur.  For example, if you enter a search key 
for city of "CH," ZDB will match "CHeyenne" or "CHicago" but not 
"MassaCHusetts" or "MiCHigan." If you enter "48" as a zip code key, ZDB 
will select only records which have zip code fields which start with 48.


 Output -2/2 

The CDF and WordStar options offer a choice of writing the entire file 
(choose 'All' at the menu) or selected records (choose 'K' at menu) and 
pick the key to use.

Printing of labels (and writing of the CDF or WordStar files) is done in 
sorted index order.  For bulk mailings, use the ZIP Code index feature to 
print labels in sorted ZIP Code order.  Printer escape codes (Epson FX-85 
compatible) are near the beginning of ZDB and may be patched as the user 
wishes.  A return address for the envelope is also hard coded in ZDB and 
should be changed for your use or eliminated.  See ZDB.PAT for more 
patching information.

The CDF and WordStar file routines use a large output buffer and do the job 
very quickly.  The resulting files are in the currently logged directory.  
Both files can be edited with WordStar, ZDE, or any other word processor.
:P

 Patching 

ZDB has a number of locations near the beginning of the program that can be 
patched using ZP, ZPATCH, DDT, etc, to alter the operation of the program 
to suit the user.  ZDB.PAT may also be renamed, assembled to an overlay 
file and overlaid on ZDB.COM to create a custom copy of ZDB.  ZCNFG.COM and 
the configuration file ZDB18.CFG may also be used to change some of 
ZDB.COM's more common user-configurable settings.  
:X

 Index 

The Index command allows you to specify the field to use to make up the 
index.  The index is automatically maintained in sorted order and 
determines the order in which the records are displayed or printed.  The 
index display informs you of the current index type.  The Last Name index 
key produces an index record for each file record consisting of the first 
9 characters of the last name and the first 5 characters of the first 
name.  The ZIP Code index key produces index records consisting of 9 ZIP 
Code field characters and the first 5 characters of the last name.  Since 
you always have at least the initial 5 last name characters, Express Finds 
using up to the first 5 last name characters will work no matter which 
index is currently in use.
:S

 Sort 

The Sort command (^S) writes a new file in the current directory with the 
original data file name having its records in the order of the current 
sorted index.  The old file is retained as a backup with the name 
BACKUP.DTA.  If a previous BACKUP.DTA file is present, it is deleted.  
Deleted records are purged when Sort writes a new file.
:Y

 Miscellaneous 

ZDB's data file uses a 256 byte record so that each one is on a page 
boundary.  Disk capacity is one limiter on file size.  On a 390K floppy, 
ZDB itself will take 8K.  Divide the remaining 382K by 2 (you need twice 
the space in order to do a sort) to get maximum file size -- in this case 
764 records of 256 bytes.  On a hard disk, of course, you hardly need to 
worry about file size.

The other limiter on file size is RAM.  The index requires 16 bytes per 
record plus 2 bytes per record for an order table.  Writing the CDF ASCII 
file requires a 16K buffer above the index and order table.  A system with 
50K or more of TPA can handle a ZDB file of 1400 records without over- 
writing the CCP.  If you never need a CDF file, you can handle a much 
larger file, as much as 2400 records, depending on your TPA.  Very large 
files take time for ZDB to read through, index, and sort on startup, a 
minute or longer.  Writing a new, sorted file takes about 1 minute per 100 
records on a hard disk drive system, longer on floppies.  If you have very 
large files, it may make sense to break them into smaller units for easier 
handling by ZDB.  ZDB does a check of available memory before adding a 
new record or writing a CDF file and aborts if there's not enough RAM.

 Miscellaneous 

Sometimes the screen display may get out of whack.  The main menu has an 
undisplayed command -- ^R (Control-R) -- which refreshes the screen 
display.
