
                                 bBaseII

                               Version 5.5


                                    by


                              Robert Bromley


                              July 20,  1992



     If you would like to make a print-out of this documentation,
     I would recommend that you print out the file "bBaseII_printme.doc".
     It will make a neater print job.  This file is the same, except it
     has all of those messy ANSI codes removed.


                             TABLE OF CONTENTS

      1   INTRODUCTION     ............................................   1
          1.1   What is bBaseII?     ..................................   1
          1.2   Feature Summary      ..................................   1
          1.3   Hardware Requirements     .............................   1
          1.4   Software Requirements     .............................   2
          1.5   Restrictions     ......................................   2
          1.6   Copyright     .........................................   2
          1.7   Starting bBaseII     ..................................   2

      2   THE REQUESTERS     ..........................................   3
          2.1   The ARP File Requester     ............................   3
          2.2   The String Requester     ..............................   3
  
      3   THE CURSOR KEYS     .........................................   3
          3.1   If the String Requester is NOT Open     ...............   3
          3.2   If the String Requester IS Open     ...................   3

      4   THE SCREEN GADGETS     ......................................   3

      5   THE PROGRESS BAR     ........................................   4

      6   THE MENUS     ...............................................   4
          6.1   Project Menu     ......................................   4
             6.1.1   Create a New Database      (F1)     ..............   4
             6.1.2   Open an Existing Database  (F2)     ..............   5
             6.1.3   Display Entire Database     ......................   5
             6.1.4   Display Matching Records    ......................   5
             6.1.5   Save the Current Database  (F3)     ..............   5
             6.1.6   Save As     ......................................   5
             6.1.7   About     ........................................   6
             6.1.8   Quit  <Esc>     ..................................   6
          6.2   Sort Menu     .........................................   6
             6.2.1   Incremental Sort  (F4)     .......................   6
             6.2.2   Decremental Sort  (F5)     .......................   6
          6.3   Search Menu     .......................................   6
             6.3.1   Select Search Criteria  (F6)     .................   6
          6.4   Change Menu     .......................................   7
             6.4.1   Field Titles     .................................   7
             6.4.2   Swap Position of 2 Fields     ....................   7
             6.4.3   Blank a Field     ................................   7
          6.5   Print Menu     ........................................   7
             6.5.1   Displayed Record (to Printer) (F8)     ...........   7
             6.5.2   Displayed Record (to a File)     .................   7
             6.5.3   Select Print Options  (F9)     ...................   7
          6.6   Add Menu      .........................................   8
             6.6.1   A Field     ......................................   8
             6.6.2   A Record  (F10)     ..............................   8
          6.7   Delete Menu     .......................................   8
             6.7.1   A Field     ......................................   8
             6.7.2   Displayed Record  <Del>     ......................   8
          6.8   Notes Menu     ........................................   8
             6.8.1   View/Edit Notes  (N)     .........................   8

      7   OTHER FEATURES     ..........................................   8
          7.1   The "Disable Save" Option     .........................   8
          7.2   The Low Memory Warning     ............................   9
          7.3   The Print Options Window     ..........................   9
             7.3.1   Hardcopy Print-outs     ..........................  10
             7.3.2   Mailing Labels     ...............................  10

      8   EXAMPLE DATABASE     ........................................  10

      9   CREDITS     .................................................  11


     1   INTRODUCTION 
     
     1.1   What is bBaseII?

     bBaseII is a full-featured, graphically interfaced, reasonably fast
     and, I think you will agree, quite an easy-to-use database program.
     What it does is store, sort, sift, and search for information,
     (but it won't dial your telephone).

     Once a database has been loaded from disk, all modifications are done
     in RAM:, and will NOT be permanently saved until the database is Saved
     to disk.  This can be done using the Menu, the Function Keys,
     or upon Quiting.

     Almost all functions of bBase may be accessed from Menus, and most
     also have keyboard equivalents.  It multi-tasks extremely well, as it
     does not burn up CPU time while not actually performing operations.

     bBaseII was written in HiSoft BASIC Version 1.05, and compiled using
     the HiSoft BASIC Professional compiler.

     
     1.2   Feature Summary

     Some of the features of bBaseII are:

     - Complete graphical interface.
     - Very straightforward and easy to use.
     - Incremental or decremental sort, on any field.
     - Uses a fast (for a BASIC program) shell-sort algorithm.
     - Search in any (or all) field(s).
     - Range Search, (less than or greater than) in any (or all) field(s).
     - Add, delete or blank a field at any time.
     - Copy a record to a "clip", ie. a text file, that may be imported
       into another program.
     - Optionally display entire database, or a filtered list, a screenful
       at a time.
     - Print out a record, a filtered list, or the whole database,
       in many different formats.
     - Prints mailing labels.
     - A "Note" area attached to each record, independant of the sorting
       and searching fields, which will store over 1K of data.
     - Optionally disable the "Save to Disk" option to prevent accidental
       alteration of the database.
     - Well-behaved in a multi-tasking environment.

     
     1.3   Hardware Requirements

     Database programs tend to gobble up large amounts of memory.  bBaseII
     is no exception.  Since bBaseII opens on it's own screen, and reserves
     memory to hold a database in RAM:, it requires about 500K of available
     memory to run properly with a 125K database.  This could be reduced if
     the database size was reduced, but it was necessary to hard-code in
     something, and that's what I picked.

     Therefore, bBaseII will not run on a basic 512 Kb machine.

     
     1.4   Software Requirements

     The "arp.library" will have to be in your libs: directory, because
     bBase uses the ARP file requester - but everyone should have that
     there by now, right?

     
     1.5   Restrictions

     - 9 fields per record, plus a 1K+ area for "Notes".
     - 600 records, or a database of approximately 125K, whichever
       comes first.
          
          NOTE 
          Be careful when the database size exceeds 125K - it will exit
          ungraciously if it runs out of memory.  This is the main reason
          I limited the maximum number of records.
          Refer to Section 7.2 - "The Low Memory Warning".

     If anyone should need a database of more than 600 records, or more
     than 125K, and have the memory to support it, no problem - just let
     me know!  Please refer to the Note at the end of this document.

     
     1.6   Copyright

     bBaseII is Copyright (1991) by Robert Bromley.
     All rights are retained by the author.

     Use of this program is at your own risk and discretion.

     bBaseII is freeware, and may be distributed free of charge.
     Nominal charges for copy media only, are permitted.

     bBaseII may not be used for any commercial purposes without the
     express written consent of the author.

     
     1.7   Starting bBaseII

     From the Workbench; just click on the icon.

     From the CLI; usage is:      Run bBaseII [-s] [-fFilename!] 

     Including the -s switch will start bBase with Saves Disabled.

     Including the -f switch will automatically load the requested database
     file.  If using this switch, do not leave a space between "-f" and the
     filename, and be sure to add an exclamation point (!) immediately after
     the filename.  Also, do not include the ".bbase" extension.   IE. :

                      Run bBaseII -s -fDF0:Files/Recipes! 
          
          NOTE 
          Naturally, when using the -f switch, no exclamation points
          should be used in the filename path.



     2   THE REQUESTERS 
     
     2.1   The ARP File Requester

     The requester used when asking for a file to Load or Save is the
     standard ARP file requester.

     
     2.2   The String Requester

     This requester is used for general input.  It has full editing
     capabilities.  It may be blanked at any time by pressing <Alt-X>.
     Any time this requester is open, pressing <Esc> will close it.



     3   THE CURSOR KEYS 
     
     3.1   If the String Requester is NOT Open:

     Pressing the Cursor Up key will take you directly to the First Record.
     The Cursor Down key displays the Last Record.
     The Cursor Left key shows the Previous numerical Record, and
     the Cursor Right key will show the Next numerical Record.  
 
     You can also move through the records using the mouse (Refer to
     Section 4 - "THE SCREEN GADGETS").  The VERY last record is always
     blank, which is where additional records may be entered.  This blank
     record is accessed through the "Add" Menu item, or by pressing F10.

     
     3.2   If the String Requester IS Open:

     Whenever you are in Edit Mode (ie. the string requester is open, so
     that you may Enter or Change data), Cursor Left/Right moves the cursor
     within the gadget, while Cursor Up/Down moves through the fields.



     4   THE SCREEN GADGETS 

     The Information Box at the bottom of the screen contains a      / \
     gadget that looks something like that shown at the right.       | |
     This gadget represents the Cursor Keys, and you can move     <== G ==>
     about the database using these gadgets and the mouse            | |
     instead of the Cursor Keys, if you so desire.                   \ / 

     Clicking on the Up Arrow will take you directly to the First Record.
     Clicking on the Down Arrow will take you to the Last Record.
     The Left Arrow will show the Previous numerical Record to the one
     currently displayed, and the Right Arrow will show the Next Record.
     If the Last Record is currently displayed, this will take you to the
     blank record, where a new record may be entered, although this is more
     easily accomplished by using the "Add" Menu item, or by pressing F10.

     Clicking on the "G" in the center of the arrows (or pressing "G" on
     the keyboard) will bring up the string requester, asking for the
     number of a record to "Go to".  After entering a legal number,
     the requested record will be displayed.



     5   The PROGRESS BAR 

     When time consuming actions are being performed, ie. Loading,
     Searching, Saving, Sorting, etc., a "progress" bar will appear to
     assure you that "something is happening", and visually display
     to you just how the job is progressing.



     6   THE MENUS 

     bBase operation is best described by the operation of the Menus.
     The keyboard equivalents, where applicable, are shown along with the
     Menu Titles.

     
     6.1   Project Menu
     
     6.1.1   Create a New Database  (F1) 

     This will bring up the ARP file requester, asking for a name for your
     new database.  Any filename of 20 characters or less will do.
     The requester will then ask how many fields the new database will
     require.  There may be up to 9 fields in each database.  Fields may be
     added, deleted or blanked at any time.

     You are then asked for the TITLES of each field of the database.
     Each field title may be a maximum of 19 characters long.  A "(1)" will
     appear, along with the string requester.  Enter the title of your
     first field, ie. Last Name, First Name, Company, Address, or anything
     else.  When it is correct, hit <Return>, and a "(2)" will appear on
     the next line with the requester.  Enter the title of the second
     field.  Enter all the field titles in this manner.

     The screen will now show all the field titles, an Instruction Box, the
     File Name as first entered, a blank data area, and the Record Number,
     which at this point will be "1".

     The data requester will now appear in the first field of the first
     record, ready for you to enter data.  Enter the data.
          
          NOTE 
          Double quotes are not accepted in any data field, as that would
          mess up the alignment of all the following fields.
          Single quotes are OK.

     A data entry may be a maximum of 46 characters long.  When it is
     correct, hit <Return> again, and the requester will move to the second
     field.  When all fields are complete, the Record Number will indicate
     "2", and the data area will go blank, (because there is not yet a
     Record Number 2).  Hitting <Return> again will start the process of
     entering data into the second record.  Complete all records in this
     manner.  In this version there is a limitation of 600 records.

     If you had been working on an existing database, and it had been
     altered, you would have been asked if you wanted to Save it before
     creating a new one.
     
     6.1.2   Open an Existing Database  (F2) 

     If you have previously created a database, and the
     "Database_name.bbase" file is stored on a disk, then use this item to
     access that database.  If you are working on an existing database, and
     it has been altered, you will be asked if you want to Save it before
     loading another.  Enter the path to the database file in the requester,
     and that database will be retrieved and shown on screen.  Only files
     having the extension ".bbase" will be initially displayed.  Use the 
     Cursor keys or mouse to move about the database.  Refer to Section 3 -
     "THE CURSOR KEYS", and Section 4 - "THE SCREEN GADGETS".

     While a record is displayed, the Information Box will instruct you to
     press "<Return> to Change Data".  Do so, and the requester will appear
     in the first field, with that field's data. <Return> or Cursor Up/Down
     to the field you want to change, and make the changes.  At this point,
     you may either <Return> through all fields, or press F10 to exit the
     Editing Mode.  The altered record will be displayed.
          
          NOTE 
          ANY time you are in Edit Mode, whether Entering, Changing or
          Searching for data, pressing F10 will exit the Edit Mode, and use
          the data shown when you exited.
     
     6.1.3   Display Entire Database 

     If you want to quickly glance at more than one record at a time,
     this will open a full-sized window, and display the first 70 or so
     characters of ALL records, one record to a line.

     The display will pause after each 23 records - click on "Next Page" or
     press any key to see the next screenful, or click on "Prev Page" to
     see the preceding page.  Click on "Cancel", or Press <Esc> to leave
     this function.  If you see a record you want to examine in detail,
     just click on it.  You will then exit the Display window, and return
     to the Main Screen, with the requested record displayed.
     
     6.1.4   Display Matching Records 

     This works the same as the previous item, except that ONLY those
     records that matched the most recent Search pattern, at the time
     the search was made, are displayed.  
     (Refer to Section 6.3 - "Search Menu").
     
     6.1.5   Save the Current Database  (F3) 

     If the database has been altered since last saved, it will be Saved
     to disk under the current filename, after confirmation.  The file
     will have the extension ".bbase" automatically appended.

     If it has NOT been altered, you will be so informed, and given
     the oportunity to abort the Save.
     
     6.1.6   Save As 

     You will be prompted for a name to Save the database.
          
          NOTE 
          Do NOT include the ".bbase" extension at this time.
          It will be appended automatically.

     6.1.7   About 

     The usual stuff.
     
     6.1.8   Quit  <Esc> 

     If the database has been altered, you will be asked if you want to
     Save it before Quiting.

     
     6.2   Sort Menu

     You may sort the records in the database based on the data in any
     field.  The Sort routine is very efficient for a BASIC program.
     
     It will sort 200 records in less than 10 seconds on a standard A2000.
     As the database size increases, naturally it tends to slow down.
     
     6.2.1   Incremental Sort  (F4) 

     The requester will ask which field you want to sort on.  The records
     will be incrementally sorted on that field, and Record Number 1 of
     the new list will be shown.
     
     6.2.2   Decremental Sort  (F5) 

     Same as above, but records are sorted and displayed from Z-A, or 9-0.

     
     6.3   Search Menu
     
     6.3.1   Select Search Criteria  (F6) 

     The requester will appear in the first field of a blank record.  
     <Return> or Cursor Up/Down down to the field that contains the data
     you want to search for, and enter it.  A search string may be entered
     in more than one field.  When all the criteria has been entered,
     <Return> through all the fields, or press F10.  All records that match
     ALL the search criteria will be displayed, one by one.  When a record
     is found, you may Print it, Cancel the search, Continue searching, or
     Review all the records that match that Search pattern.  (Refer to
     Section 6.1.4 - "Display Matching Records").
     The Search is NOT case dependent.

     Range search is also available.  If you want to search an address
     database for all names before Jones, or after Smith, simply add
     a "<" or a ">" immediately before the name, with no intervening space.
     Or, if you had a field containing birth years, you could find all
     those born before (or after), for example, 1965, by entering "<1965".
     You could also combine the two, and find all those entries before
     (alphabetically) "Jones", and who were born after 1965.

     Equal-or-less-than and equal-or-greater-than may also be used by
     preceeding the search string with "=<" or "=>" respectively.
     Note that the equals sign must come first;  "<=" will not work.

     Bear in mind that a search for entries "<p", (which will be treated as
     "<P", because search is case independent), bBase will find all entries
     up to and including all of the "O" entries, as you would expect.  But,
     if you search for ">p", the found entries will not start with the Qs,
     as you might expect, but will show the Ps as well.  This is because,
     to a computer, "pa", or "pill", or "pasquale" are all greater than
     just "p".  So, if you want to search for Qs and above, you should
     enter ">pzz", or something similar.  This will skip all of the Ps,
     except if you have an entry starting with "pzza", or greater.

     
     6.4   Change Menu
     
     6.4.1   Field Titles 

     Use this item to change the Titles of your fields.
     The data itself is unaffected by this procedure.
     
     6.4.2   Swap Position of 2 Fields 

     Exchanges the position of two fields and their titles in the database.
     IE, move field 3 to where field 7 was, and visa versa.
     
     6.4.3   Blank a Field 

     The requester will ask the number of the field you want to blank.
     After confirmation, the Field Title, and the contents of that field
     in ALL records of the database will be Deleted.  Esthetically, this
     will leave a "hole" in the database.  See Section 6.7.1 - "Delete -
     A Field", for information on Deleting a field entirely.

     
     6.5   Print Menu
     
     6.5.1   Displayed Record (to Printer) (F8) 

     This item will first ask how many fields are to be printed, and then
     in which column position, from 1 to 80, to start printing (in case you
     want to print a mailing label, or directly onto an envelope).  It will
     then send all characters of the requested number of fields of the
     currently displayed record to the PRT: device.
     
     6.5.2   Displayed Record (to a File) 

     The File Requester will appear, asking for the name of the file you
     want to create, holding all of the data in this record.  The default
     is "RAM:bBase_clip".  Once the data, ie. an address, has been copied
     to a "clip", it may then be imported into another program,
     ie. a word processor, if desired.
     
     6.5.3   Select Print Options  (F9) 

     Opens the Print Options Window from which various formats of hardcopy
     print-outs and mailing labels may be chosen.
     Refer to Section 7.3 - "The Print Options Window".

     
     6.6   Add Menu
     
     6.6.1   A Field 

     If you do not already have the full complement of 9 fields, this item
     will add a blank field, in a designated location, with a title
     consisting of 20 dots.  The title may be modified at any time.
     (Refer to Section 6.4.1 - "Field Titles) above.
     
     6.6.2   A Record  (F10) 

     Positions you at the empty record, with the input requester open,
     ready for you to enter data into the first field.  Use the <Esc> key
     to abort if you arrived here by mistake.

     
     6.7   Delete Menu
     
     6.7.1   A Field 

     You will be asked which field you want to delete.  As usual, press
     <Esc> to abort.  The requested field will be deleted.
     
     6.7.2   Displayed Record  <Del> 

     After confirmation, the record currently displayed is Deleted.

     
     6.8   Notes Menu
     
     6.8.1   View/Edit Notes  (N) 

     Each record has attached to it a note area, which is independant
     of the main fields, where miscellaneous data pertaining to that record
     may be stored.  To view the Note Window, just press the "N" key.  The
     Note Window consists of 16 lines of data, each of which may hold a
     maximum of 70 characters, for a total storage of 1.12K of data per
     record.  To edit the data in the Note Window, just press <Return>
     while the window is open.  From there, it works identically to the
     data area of the Main Screen.  Press <Del> to delete the entire note
     attached to that record, and <Esc> to return to the Main Screen.

     If there is a note attached to a record, even as much as 1 blank
     space, the word "Note" (how original) will appear on the Main Screen,
     at the bottom-right corner of the data area.  If there is no note,
     the word will not appear.



     7   OTHER FEATURES 
     
     7.1   The "Disable Save" Option

     As a simple security device, mainly as a guard against someone
     accidentally altering or erasing data, I have added an option which
     will disable the ability to save database changes to disk.  

     To disable Saves, simply press "Alt - S" simultaneously.  The titlebar
     will briefly inform you that Saves are disabled, and now any attempt
     to Save the database to disk will be circumvented.  In this case, upon
     Quiting, a requester will ask if you want to Save the database
     (as usual).  If you select "Save", a second requester will inform you
     that the Save option has been disabled.  To Save the database, at the
     next requester, "Do you Really want to Quit?", select "Cancel",
     re-enable Saves, and Quit again.

     If you are running bBase from the CLI, using the "-s" switch on the
     command line will start bBase with the Saves already disabled.

     The "Alt - S" combination will toggle between Save Enabled and Save
     Disabled.  A message will appear briefly in the titlebar to keep you
     informed of the current status as it changes.

     
     7.2   The Low Memory Warning

     When bBaseII is run, it reserves about 300K of memory to use for
     database storage in RAM, arrays, etc.  No matter how much RAM your
     computer has, this is all that is available to bBase!
     When a database is first loaded (and only then), bBase will check
     the available memory left in the program pool.  If the memory
     available to bBase is less than 2K, this means that you have a
     humungous database of over 125K, and very few more records may be
     added before the program will terminate with an error message.
     You will be advised if this Low Memory situation exists.  Press any
     key to cancel the warning.  The recommended action is: 

        1.  Delete some old records, or some of the record notes.
        2.  Give me a call.  We can get you a larger version of bBaseII.
        3.  Upgrade from bBase to dBase.
          
          NOTE 
          If you are loading a new database after having just finished
          work on another, it is possible get get a false warning here.
          If you know your database size is within limits, I think
          you can safely disregard the warning in this circumstance. 

     
     7.3   The Print Options Window

     Choosing "Select Print Options" (from either the Print Menu, or by
     pressing F9) opens the Print Options Window.  Select from this window
     using the mouse or keyboard.  At the top, there are toggle gadgets to
     select "Print All Records" or "Print Matching Records", "Bold On" or
     "Off", and "Print to PRT:" or "Print to File".  Print All Records will
     do just that.  Print Matching Records will print all records which
     matched the most recent Search pattern, at the time the Search was
     made.  Bold allows you to select either Bold or Normal print styles.
     PRT: or File determines whether the requested records will be Printed,
     or Copied to a File.  In the latter case, the File Requester will
     appear, and you may specify the filename to copy the records to.
     The default is "RAM:bBase_printout".  At the bottom are gadgets
     labeled "Cancel", "Help" and "Print!".  "Cancel" is self-explanatory.
     "Help" opens a Help Window which explains the terms used in the Print
     Options Window, so this information is not included here.  "Print!"
     will print (or copy) the selected records using the selected format.
     
     7.3.1   Hardcopy Print-outs 

     Database print-outs can be obtained in these formats:

     Adjacent Single Line  (Pica, Elite or Condensed).
          The "notes" attached to your records may also be printed out,
          but only in this format.  Follow the prompts.
     Aligned  Single Line  (Pica, Elite or Condensed).
     Block,  2 across          Block,  3 across          Super Space Saver

     These are explained in the Help Window, but try them all, and see
     which one (or more) best suits your needs.

     Along the top of the Data Area are 4 white pixels.  These pixels will
     align with the data entry cursor at the 24, 25, 38 and 43 character
     positions.  As some of the above print-outs are truncated to these
     number of characters (Refer to the Help Window), they are a guide to
     indicate that the data beyond will not be printed when some print
     options are selected.
     
     7.3.2   Mailing Labels 

     Mailing labels of 15/16 inch, and 1 7/16 inch, in 1-across roll type,
     and 2 or 3-across sheet type are all supported.

     If you have selected a mailing label option in the Print Options
     Window, when you click on "Print!" another window will open, asking
     whether your labels are 1, 2 or 3-across, and how many fields of your
     database you want printed on the label.  Once this information is
     received, the printing (or copying) operation will start.

     If you tell bBase you want, for example, 4 fields printed, then the
     first 4 fields will be printed, in numerical order.  Make sure that
     these are the ones you want printed.

     Due to the size constraints of the labels, there are limits on the
     number of characters of each field, and the number of fields, that
     this function will print.  This information is in the Help Window.

     This feature was requested by several individuals, and I have done my
     best to implement it, although doing so has increased the size of
     bBase considerably.  As always, I am open to any and all suggestions.



     8   EXAMPLE DATABASE 

     There is an example database included in this package.  Everyone uses
     the Name and Address example, so I opted for something different.
     The file "Recipes.bbase" is a sample database showing one way of
     keeping track of recipes, without having to re-type them all.
     It merely shows where they can be found when needed.  With this
     database you can Sort the recipes by Name, Catagory, or anything else.
     You can Search for all recipes containing a listed ingredient, recipes
     you have already served to given people, or just the location of the
     recipe if you have forgotten which of your 647 recipe books it is in.
     I have found this to be very useful.



     9   CREDITS 

     My thanks to Peter Keegan of Harvard, MA;  Donald Feldbruegge of
     Oregon, WI;  Warren Marton of Arlington, VA;  Edward Shaw of
     Lexington, KY;  Bobby Foreman of West Sacramento, CA;  James Withgott
     of Orland Park, IL;  David Prothero of Centralia, WA;  Reinhard
     Pfluger of Mannheim, Germany;  Brad Kane of Palmdale, CA, and Graham
     Scott of North Bersted, England, for their support of bBaseII.


     I know the program still far from perfect.  If anyone else out there
     is actually using this thing, I would appreciate some constructive
     criticism.  If writing, be sure to mention which version of bBase
     you are using.  Name and address in "About".
          
          NOTE 
          Suggestions for improving this program are always welcome, and,
          if feasable, will be implemented in the next release.  Due to the
          number of requests for "customized" copies, however, I find that
          these are taking up a large amount of my time.  I am afraid I
          must request a donation of at least $10 to cover the cost of
          disks, postage and time to compy with these requests.


     Hope someone finds this useful.

               __
              /_/  __   /_
          _  /_/  /_/  /_/ _

