.fill
.justify
.rm 60
.m1 2
.m2 1
.m3 1
.m4 2
.in 5
.ls 1
.ul all
.nr a 0
.autoparagraph
.define chapter
.bp
.nr a +1
.nr b  0
.bd 1
.fo  /User's Manual/Chapter @na/Page #/
.ce
$1 $2 $3 $4 $5 $6 $7 $8 $9
.cl 0 Chapter @na $1 $2 $3 $4 $5 $6 $7 $8 $9
.sp
.en
.define section
.sp
.nr b +1
.bd 1
.sp
.ti -@nb
Section @na.@nb $1 $2 $3 $4 $5 $6 $7 $8 $9
.cl 1 Section @na.@nb $1 $2 $3 $4 $5 $6 $7 $8 $9
.sp
.en
.bd 2
.he  /Custom Services/DataBase Manager/Version 2.0/
.fo  /User's Manual/ /Page #/
.chapter General Information
.section Warranty Policy
 Registered users will recieve free of charge a corrected version of
the program.  To do so you must send a SASE along with a disk containing
enough information to show the problem.  A sample database and a note
explaining the problem.  The disk will be returned as soon as the problem
is fixed.  
 Our warranty is simple.  If you pay the registration fee, you will recieve
a new version of the program with the problem fixed.  We support our programs.
 This software and manual are copyrighted work.  You may distribute this 
program by any desired means so long as the program and all files included in
with it remain intact.  You may not sell this program without the expressed
written consent of Custom Services.  No fee other than a simple fee for making
copies may be charged for this copying.
 Since Murphy was an optimist it is with a keen sense of the obvious that we
state that while every attempt has been made to free the program and programmer
from the embarrassment of failure, and since the registration fee is small, we
shall only be made to suffer to the extent of the registration fee no matter
what you lawyer may have lead you to believe.  Usage of this program signifies
your acceptance of these terms.
.section Registration and Reward
 This program is "No-Frills Software" and is available with
documentation for the  registration fee.  Our policy is to supply
at least one free update to all registered users.  To register please
send the requested fee along with your name and address.  When you 
register please also include information as to where you obtained the
product.  Custom Services has a policy of rewarding users who refer other
users to our products.  A percentage of the registration fee will be credited
to REGISTERED users.  Once you are registered and someone mentions your
name when they send in their registration fee you will get a credit.  The
credit will be available for you to spend on other hardware or software 
available from Custom Services.  Registered Users with a non zero balance 
will be notified once per year(or upon request) of their balance.

 Please direct all questions and comments to:
.nf
.in +5
.sp
Custom Services
P. O. Box 254
Moorestown, NJ., 08057
.fi
.in -5
.sp
 This program is a CLI only product.  You must run it from CLI.
 This program is a shareware program supplied to you with documentation
and executable program.  A sample database is also inclosed.  You are
allowed to distribute these files in any manner you choose provided the
charges for distribution do not exceed normal coping costs.   You may only
distribute these files together.  All materials included here are the
copyrighted property of Custom Services.  No commercial use of this product
may be made without the expressed written consent of the Author.  This
product may be used on any number of computer systems without fear or fee.
It is up to you to judge the usefulness of this program.  If you use it
please feel free to send the shareware fee to the above address.  
.section Limitations
 This program will allow you to have up to 1024 byte per
record, each record may have up to 36 keys and 255 fields.  The data file
is packed binary to minimize the disk usage.  Keys are kept on RAM: for
fast access.  Field names may be
up to 7 characters in size.  The maximun length for a database is 35.  The
maximum length of a field description is 39 characters.
Interger and Floating point data is represented as 32 bit values taking four
bytes per field.  Logical flags are treated the same as character data except
that you may only store a "Y" or "N" in the field.  Character fields may be
any size from 1 to 80 characters in length.
.chapter Program Operation
.section General 
 This program will use the first CLI argument as the filename.  It will
create the file if it does not exist.  The filename may be up to 30
characters in length.  The default name is "MASTER".  the program will
create MASTER.DIC, which is the dictionary for your file, and MASTER.DAT,
which is the actual data.  The program is invoked by the command:
.nf
   1> CSDBMS
      or
   1> CSDBMS <database>

.fi
 The default(first example) is the same as the command "CSDBMS MASTER".
You may only specify the name of the database, You may not specify the
pathname.  In other words, the database must reside in the current default
directory.  If it is not there it will be created.
.section Functions
 You have the following functions available:
.in +5
   Create a Database
   Add records
   Change records
   Delete and Undelete records
   repack the file (really deletes the deleted records!)
   Select a set of record(by a range or list)
   Reselect from the current set of records( by a range or list)
   change the print options(what prints and order, where to print it)
   perform math on the selected records(add, subtract amount, total fields)
.in -5
.section Creating a Database
 A database is created when CSDBMS cannot find the database you specified
on the command line.  You may only specify a database name on the command
line not the path where it resides.  You must have your default directory
set to the directory which contains the database files.

 When CSDBMS does not find the database in the current directory it will ask
you if it should be created.  When you answer yes it will then prompt you for
the name, description, if it is to be a key and the type. 
The type of the data may be:
.in +5
  i - integer data
  f - real data(floating point number)
  l - logical flag(Y or N only values)
  c - character data( you will be asked the size)
.in -5
 You will be asked if the item should print by default.  It is recommended that
you always print items by default(or turn it on later) for adding data to the
file since only printed fields will be displayed.
 After each field is defined you will be asked if it is alright.  If you answer
yes the field will be added to the dictionary and the size of the record 
displayed.  A "no" answer will cause the field to be forgotten.
.section Key and their meaning
 When you wish to select records in your database it is the same as looking
in a file cabinet.  The drawers of the file cabinet are the different keys
in your database.  You must have at least one keyed item in the database so
you can select a set of data.  The selection of records is only allowed with
field that are keyed.

 If the database is found the dictionary will be read in and the key files
created.  
.section Operation
The Idea is to allow you to keep track of your data and
print it selecting the items and fields.  A simple sequence of using it
would be:
.nf
.sp
.in +5
   1) build the database(automatic if file doesnt exist)
   2) Add records
   3) Select on a Key field
   4) Reselect one or more times to reduce the Current Set to the
      records you want
   5) make changes to the selected records
   6) make proper print selection(what prints, to a file?)
   7) print reports
   8) do whatever else you want! then exit
.sp
.in -5
.fi
.section Selecting records
 Selecting records from the file can be done with lists of exact data
or ranges of data.  The type of character can be matched on a wildcard
character of "*" which matches all characters that follow.  The "*" will
end the check for a match causing a match.  Characters after the "*" are
ignored.  "abc*" is equivalent to "abcwdd" and  "abcdef".  This works best
on the list selection but will also work in ranges.
 The question mark can be used to replace any single character.  While the 
"*" will end the check for a match the question mark just skips a character
in the same position giving a match for that character.
Other than the "*" and "?" match all list matches are for exact matches. 
Upper and
Lower case do matter!   To select all records for a field which is character
wanting all that start with a "w" you can use the list option and select
using "W*" and "w*" to get both upper and lower case versions.  Note, the
quotes used are to highlight the examples only, you do not need the quotes
to talk to CSDBMS about strings!
.section Printing and Formatting
 You may select which items to print and the order they are to print.  This
option will override the defaults setup when the database is created.  All
set all items to print by default.  You select the order the data is printed
with the "Print Order Selection" menu item.  You may print your items
multiple times by just selecting the item more than once.

.section Hardcopy selection:
 You may select items not to print, you may also select where to print the
items.  CSDBMS will print to a file, your printer, or to the screen.  The
default is to the screen.  If you print to a file, ALL print output will
go to that file.  reselecting the option will allow you to turn it off.

.chapter Basic Operation:

 The default answer to a question is YES, if you hit return CSDBMS will
assume that is your answer.  Most destructive commands need a NO answer to
the prompting question "Do you wish to cancel this operation".  This
prevents you from accidently deleting your work!

all numbers are decimal.
.chapter Command References
.section A - Add records
 Adding records is simple.  You will be prompted by the field name
you just input the data.  The field size will be included in the
prompt in parentheses.  For example, a 40 character field with the
name of LOCATION will prompt: LOCATION(40).
.section H - Hard Copy Reports
 Hard copy reports will allow you to select the items you wish to print
along with the destination.  You can print to PRT:, a file, or the
screen.
There are several parts to this option.  The first is to select the items
you wish printed.  All items will appear on the menu with either a "y"
or  "n".  The above example for LOCATION would appear LOCATION(y) if
it was to print.  Selecting the item will toggle the y to an n and from
n to y.  When done just hit return to go to the next phase.
 The next phase will ask about the line size, the line spacing within a
record, and the line spacing between records. 
 The next phase will ask if you wish the hard copy option turned on or
off.  You will be asked for the destination.
Turning the option off will result in output to the screen.  This is the
default state.

.section C - Change records
  This command will allow you to change ALL the selected records.  If you
wish to change an item, select it from the menu.  You will be prompted
for the new value.  ALL selected records will have that field set to the
value input.

.section D - Delete records
This command will flag all selected records as deleted.  These records
may be undeleted with the "U" option.  These records will stay in the
data base until you repack the data.

.section S - Select records
This command will allow you to select records by either a list or a range
prompting you by field name for the values you have choosen.  This command
will only allow you to select via the KEY items.  You may not select
record by items that are unkeyed.  To select records for items which are
not keys, you must select all records(answer no to the select by list and
select by range questions) and then use the "F" option to make your
selection.  The records will always be in order by of the Selection key!

.section U - Undelete records
This command will undelete all selected records.

.section F - ReSelect records
This command is used to reduce the selected data set by reselecting on
either a list or range(as in the select command).  The difference is that
it requires that you select records first and then reselect on any field.

.section K - Dictionary Key items
This report will list all fields in the dictionary which are keys.

.section I - All Dictionary items
This report will list all fields in the dictionary.

.section R - Report   Active records
This command will list the current data set for records selected which
are not deleted.

.section N - Report Inactive records
This command will list the current data set for records selected which
are deleted.

.section W - Repack Database
This command will rebuild the database removing all deleted records.

.section M - Math Functions
This command will allow you to Add, Subtract, Multiply, Divide, or Total
up the values in an integer or floating point field.  It will operate on
the current data set.

.section G - Generate OverLays
This command will allow you to redefine the current data dictionary.
You can make a new item which overlays an existing item.  For example:
you may have LOCATION as a field which contains 40 characters.  It may
be made up of City for 20 characters, State for 2 and zipcode for 9.
you defined LOCATION when you created your database.  With this option
and the fact that LOCATION occured at byte 100 in your record you can
define City to be an overlay at location 100, State at location  122,
and zipcode at location 125.  The data will be entered using LOCATION
when you add records but you can reference it by City, State or zipcode
when you reselect records.  You can make your overlays permenent by using
the J option.

.section J - Update Dictionary file
This command will allow you to resave your dictionary after changes to
the print selection or the creation of overlays.  This will allow you to
setup defaults for print selection and save it for next time.

.section O - Optional Secondary Sort
This option is not included in this version.  It will allow the selection
of items by a key with an optional field being specified for sorting when
the key item is equal.  This will be included in a later version.

.section P - Print Order Selection
This command will override the default print selection turning off all
items.  The order you select the items will be the order printed.  Only
those items referenced by this command will be printed.

.section E - Exit or Q - Quit
This command will close all files and exit.  

.chapter Other items of interest
.section Mailing Labels Example
 CSDBMS will generate 1-up labels directly to your printer in a simple
manner.  Assume you have a database built with the name and address data
entered.  Each field(name, address-1, address-2, location, and zipcode)
is 35 characters in length(except zipcode).  You would print labels by
arranging the data into the form:
.nf
.sp
.in +5
 name
 address-1
 address-2
 location
 zipcode
 blank line
.sp
.in -5
.fill
 This would be print one label on your forms for a 3 1/2 wide by 15/16 inche
1-up label(35 character wide and 6 lines long for a printer set to 6 lpi and
10 cpi).  Using the P option select the five field and then use the H option
to set the line size to 1 character(that way every field will get a new line
), the spacing within a record to 1, and the spacing between records to 2. 
If your printer is ready with the labels turn the Hard copy option on and give
the device "PRT:" as the filename!  
 Now you have defined the output structure for the label.  Line up the labels
on your printer with the top line set so the first line of the label is the
first line to print.
 Since everything is set you now use the "Report Active Records" to print the
labels, but before you do that make sure you have selected the records you 
labels for!  When done printing the labels just reselect the Hard copy option
and turn off the printer output.  It is a good idea to display the records on
the screen before wasting labels.  The data is printed to the screen whenever
the hard copy option is off.
.section You own options!
 Other options may be included if requested by the users sending in the
registration fee.  If you want it just ask!


.page
.he / / / /
.pn roman
.fo / /-#-/ /
.nofill
.sp
.center
T a b l e   o f   C o n t e n t s
.sp
.printcont