5.5    Retrieval - Search, Get, and Replace

       You have two basic methods of retrieval, GET and SEARCH.
       Neither is case-sensitive: capitals and lower case can be
       freely mixed.  These commands can be accessed from the
       Main screen via their own individual buttons, or from the
       List screen via the 'Find recs' button.

       FIND also includes a search-and-replace command which can
       be used to locate and update, or simply locate, ANY text
       string - not just keywords.      (NOT IN FREEWARE VERSION)

5.5.2  Get

       Overview
       --------

       GET allows much more defined queries than Search.
       It retrieves specific records or sets of records by
       matching text precisely, or by date, or by absolute record
       number (particular records in the physical database
       files).

       Like Search, the set of "hits" (if any) creates a new
       List, and the List screen is automatically brought up to
       show them.  If there are no hits, you are informed by a
       beep and (on the Main screen) a "No matching entries
       located" message at lower left of the screen.  In that
       case, the previous List remains unchanged.


       Click Get.  A panel or window like the Search panel
       appears, but showing a calendar (for point and click date
       selection) and three input fields: Topic (unlabelled by
       default), Key line, and "RecNo" (for entering specific
       record numbers).

       There is also a group of buttons allowing Gets by -

       (1) Topic,
       (2) Key,
       (3) Date or range of Dates,
       (4) Record number or range of Record numbers, and
       (5) "All" (which puts the entire database on the List)

       plus a Help button.

       In other words, there are four kinds of Get, all started
       from the same panel:

         - text-based ('Topic' and 'Key' buttons)
         - date-based ('Date' and 'datE range' buttons)
         - numeric    ('Record' and 'recd raNge' buttons)
         - global     ('All' button)


       Text-based Gets
       ---------------

       These try to match a string of characters entered by you
       against all Key or Topic lines in the database as
       appropriate, STARTING FROM THE FIRST POSITION in the line.

       They look, in other words, for an EXACT match from
       position 1 of the line, up to the point at which you
       stopped typing (disregarding case - Get is not case
       sensitive).

       If you organise databases in the right way, this can be
       very handy.  (It is here that the unlabelled-by-default
       Topic field comes into its own.)


       Date-based Gets
       ---------------

       These allow you to retrieve all records for a particular
       date (or all undated records), and all those between a
       specified pair of dates (inclusively).

       ----------------------------------------------------------
       These two query types have slightly different input
       requirements, which can be a bit confusing at first, so
       sit up and pay attention boys and girls.  :-)
       ----------------------------------------------------------

       When you click either 'Date' or 'datE range' buttons, the
       button set changes.  Now you have:

         - Undated
         - pick Day
         - all dAys
         - pick Mth (month)
         - all mThs (months)
         - set Year
         - Ok

       plus Cancel and Help.


       SETTING UP A DATE:
       -----------------
       Day/Month (or Month/Day) are entered as a pair, separately
       from Year.

       (UK or US format depending on the option selected in your
       BLUEBOOK.INI file.)

       ----------------------------------------------------------
       Note: All years are leap years as far as BlueBook is
       concerned - it's up to you to get that right.

       Note also: Undated records are defined here as records
       with no day or month; they may or may not have a Year
       specified.
       ----------------------------------------------------------

       First, click the day and month you want on the calendar.

       (If "keyboarding", the arrowhead in the centre indicates
       which part of the calendar, day or month, is active.
       Tab to switch, then use the arrow keys to pick a value.
       DON'T hit <Enter>: that's the same as clicking "Ok" and it
       starts the Get.)

       Next enter a year.  Click 'set Year' or type Y, then
       enter the desired year manually.  Or enter an "*" wildcard
       for ALL YEARS.  (You WILL need to hit <Enter> here - you
       are in editing mode at this point.)


       'GETTING' ON A SINGLE DATE:
       --------------------------
       If you clicked 'Date', you are Getting all records for a
       single date, and you will now see a single date field at
       bottom left of the panel, initially set to

           [ 01 - 01 - *    ]


       If you click 'Undated' or type U at this point, the
       01/01 (dd/mm or mm/dd fields) go blank.  You are now
       asking for all UNDATED records (no month or day) for ALL
       years.

       You can leave it like that, or you can click 'set Year'
       and ask instead for all undated records for a specific
       year.

       ----------------------------------------------------------
       NB: You don't have to click 'set Year' - you can also
       click the year input field directly.

       Clicking 'Undated' or typing U again switches back to
       showing the day and month values.
       ----------------------------------------------------------

       If you click 'all dAys', the day field changes to an "*".
       Likewise, If you click 'all mThs', the month field changes
       to an "*".

       This allows queries on (for example):

         "all records for the 10th of any month"
         "all records for any day in June"
         "all records in 1995", etc.

       ----------------------------------------------------------
       To switch the *'s off and return to showing the currently
       selected day and month values, click 'pick Day' or type D,
       or 'pick Mth'/M, as appropriate.
       ----------------------------------------------------------

       Year must be entered manually, or left as an "*" wildcard
       (meaning "all years").  Click 'set Year' or type Y to do
       this.  When done, hit <Enter> to leave edit mode.

       ----------------------------------------------------------
       When your date or "date pattern" is set up, that's it.
       Click OK, type O or hit <Enter> to begin retrieval.
       ----------------------------------------------------------


       'GETTING' ON A RANGE OF DATES:
       -----------------------------
       If you clicked 'datE range', you are Getting all records
       between two specified dates (inclusively), and you will
       see two date "set up" fields at bottom left of the panel,
       initially showing as

           [ 01 - 01 -      ] to [               ]

       ----------------------------------------------------------
       The two dates must be fully specified, ie. no * wildcards.
       So although the same set of buttons appears (as for a
       single date), the top five ('Undated' thru 'all mThs') are
       disabled here.
       ----------------------------------------------------------

       Set up first date as above ("'GETTING' ON A SINGLE DATE"),
       with the proviso that you MUST enter a valid year.

       Then click Ok, type O, or hit <Enter>.  The second "to"
       date set up field will activate itself.  Enter the second
       half of the range in the same way as the first.  (Reverse
       chronological order is okay, if you must.)

       This time when you click Ok, type O, or hit <Enter>, the
       Get will begin (assuming the dates have been set up
       correctly).

       ----------------------------------------------------------
       If either date is not set up correctly, "OK" will beep and
       refuse to proceed - either to inputting the second part of
       the range or to starting retrieval, depending on the date
       in error.
       ----------------------------------------------------------


       As stated, all this can be a bit confusing, so internal
       Help is provided.


       Numeric Gets by Record Number
       -----------------------------

       Much simpler.  Just click 'Record' or type R, and enter
       into the "RecNo" field the absolute record number that you
       wish to retrieve.  Assuming it is within the size of the
       file, and has not been 'deleted' (ie, flagged by the Del
       command as space available for reuse by Add), it will be
       retrieved.

       To get a RANGE of record numbers (inclusively), click
       'recd raNge' or type N, and enter the two figures one
       after another.

       After typing a number, hit <Enter> to leave edit mode on
       that field.  The cursor skips over the second field entry,
       or not, depending on which button you clicked.  When the
       number has been entered, or both numbers have been
       entered, the relevant record(s) are retrieved, placed on
       the List, and the new List is displayed.  If the record is
       deleted or the range is invalid, a beep sounds and (on the
       Main screen) a "No matching entries located" message is
       shown at lower left of screen.  In that case, the old List
       is retained.

       ----------------------------------------------------------
       Records are stored in the files in the same order as they
       first appear on the List, ie. when it hasn't been sorted
       (or the other way around to be precise).  Technically,
       the first record is actually Record 0; but we've started
       at 1 to keep things simple.

       The number of UNDELETED records in the database is shown
       on the information line at bottom left of the screen,
       after "[NAME- ".  The absolute record number (position in
       file) of the current record is shown at bottom right of
       screen, after "DD-MM-YYYY/" (or "MM-DD-YYYY/").

       To find the highest absolute record number either "Get
       All" and make the last record on the List current (which
       gives the highest VALID record number), or calculate it:
       find the size of the database's ".BBI" file in bytes and
       divide by 58, or the size of the ".BBD" file and divide by
       454, or add both together and divide by 512.
       ----------------------------------------------------------


       Global  (Get/All)
       -----------------

       Simpler still.  Click Get or type G.  Then click All or
       type A.  All records in the database will be placed on the
       List (unless there are no records in the database), and
       the List screen automatically displayed.

       If there ARE no records to be Listed, a beep sounds and a
       "No matching entries located" message is displayed at
       lower left of screen.  


