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

                           I -->  Installation 
                           D -->  Description  
                           U -->  Use          
                           A -->    Add        
                           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 field.  An express search for last name or zipcode 
uses an in-RAM index of pointers for blazing speed.  As of release 1.1 the 
sorting routines are those done by Joe Wright for the updated version of 
SYSLIB.  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, envelope, and directory printing, 
and the writing of a comma-delimited format ASCII file for use with 
WordStar's MergePrint.  Label printing, directory, and CDF options, allow 
the selection of any one of four keys for the output.

 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 requires a 
16K buffer above the index and order table.  A system with 45K or more of 
TPA should handle a ZDB file of 1200 records without overwriting the CCP.
: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 menu of ZDB commands is displayed in a single 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.  ^X, TAB or RETURN moves to the next field.  ^E moves to the 
previous one.  ^S/^D move cursor left/right.  ^A/^F move cursor one word 
left/right.  U/D/L/R terminal arrow keys are intercepted and interpreted 
properly.

^G deletes the character at the cursor and moves the remainder of the line 
one character left.  ^Y deletes from character at the cursor 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.

 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.  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.
: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 10 characters of the last name 
and the first 4 characters of the first name.  When the index is sorted by 
ZIP Code, each record contains the 10 characters in the ZIP Code field and 
the first 4 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, envelopes, and a 
directory, or producing a comma-delimited format ASCII datafile.  The label 
option gives the further choice of printing a single label, those which 
match a key, multiple copies, or the entire file.  When you select 'Key', 
you will be asked to select the city, state, zip code or comments2 fields 
for matching the specified key.  If you want to make labels for your 
Christmas card list, you could use 'CL' in the Comments2 field as your 
code.  There's room for lots of imagination in the use of this feature.  
25 characters are searched in the Comments2 field so many two-letter codes 
can be specified.  Both the label and envelope option allow you to use 
Find, Xfind, or Next before issuing the print command.

The Directory options also allows a choice of printing the entire file or 
only those records which match one of the four keys.

 Output -2/2 

The CDF option offers 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 (and writing of the CDF file) 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 file routine uses a large output buffer and does its job very 
quickly.  The resulting file is in the currently logged directory.  It is 
an ASCII file and can be edited with 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.  ZCNFG17.COM 
and the configuration file ZDB11.CFG may also be used to change some of 
ZDB.COM's more common user-configurable settings.  See ZDB.PAT for further 
information.
: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 
10 characters of the last name and the first 4 characters of the first 
name.  The ZIP Code index key produces index records consisting of the 10 
ZIP Code field characters and the first 4 characters of the last name.  
Since you always have at least the initial 4 last name characters, Express 
Finds using up to the first 4 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.

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