





     
                           Enhancements from version 1.21
     
     
     
     Improvements to the final dBASE programs and in DPSORTP.PRG.
     
     
     1. Vertical and Horizontal Menu Bars now about 3-4 times faster.
     
     2. Bug which caused Vertical Menu to display an "one-too-far" choice
        relative to the Menu letter pressed, now fixed; in particular, when the
        last option letter was pressed, this off-by-one caused a program crash
        since there was no existing prompt line to land on.
     
     3. All Selection criteria and Filter expressions now undergo validity
        checks upon user-entry
     
     4. Update mode is now flagged and prohibited whenever the file in question
        is empty (at file creation, or after a PACK of a totally DELEted file,
        for example)
     
     5. Sort Def. Field Selection
     
        A. The Fields on DPSORT.DBF had inconsistent spelling (SORTF07 instead
           of SORTFO7); this led to program crash when more than 2 Sort Fields
           were specified. Fixed in program and on DPSORT.DBF. Use dBASE program
           included in this update SORTFIX.PRG to convert your current
           DPSORT.DBF to compatibility with the new system while retaining your
           Sort Definition data
        
        B. All Sort Fields in Sort/Selection screen are now checked for
           existence in the host database. Also, the entry of these Sort Fields
           is further assisted by an automatic "scan mode" which allows user-
           selection from the Fields in the host database
        
        C. The Sort Fields are also validated prior to usage of any Sort
           Definition for Report, Label, or MailMerge purposes. This heads off
           the problem of the host .DBF structure being changed after the Sort
           Def. was created, thus possibly invalidating the contents of said
           Sort Def.
     
     6. Duplicate Sort Definition-names are now flagged and not permitted.
     
     7. Message was added to announce proper Word Processor formats in case of
        user-entry-error ("WORDSTAR", "MSWORD")
     
     8. In Find mode, both in host databases and Sort Def. mode, had slight flaw
        in "not found" messages.
     
     9. READS used as WAITs in final dBASE code are ineffective for this purpose
        when in CLIPPER mode; they were replaced by a "WAI" waiting and message
        module.
     












     10.At this time, (to be changed soon) the CLIPPER and "old" DB3 modes must
        and do use special @ SAY,GET screens for menus and user screens.
     
     
     
     Improvements/changes to dPROG:
     
     
     1. Insert/Delete had bug which caused the screen to not show effects of
        Ins/Del on Fields right of the Lock Col; these Fields should not have
        been thusly affected. This caused difference between these Fields'
        screen location and their internal coordinates. Bug fixed.
     
     2. RULER Line shielded from any contact with cursor; cursor movement jumps
        over the RULER, and no chars may be typed over it.
     
     3. RULER now "blinks" at Lock Col. location. This is updated automatically
        if the RULER is on and you happen to reset the Lock Col.
     
     4. Line Insert/Delete only when RULER OFF
     
     5. Insert/Delete of characters or whole lines which would result in losing
        any Field, now requires user-confirmation
     
     6. Insert/Delete now works on either side of the Lock Col., thus providing
        a form of vertical "split-screen" capability
     
     7. Chars/Fields on Lock Col protected from Del/Ins; formerly, the
        protection began 1 to the right of the Lock Col. This was done so that
        Col 80 could be effectively protected without having to Lock 79.
     
     8. Special chars now cannot be placed on a Field
     
     9. Lock Col cannot be declared on any character of a Field (except the 1st)
        on any given line; when you move to another line, if the Lock Col is
        presently on a Field, Ins/Del may require changing the Lock Col.
     
     10.PAINT Color Selection had bug which did not flag nunbers out of 0 - 255
        range; also, the retention of the current COLOR setting upon hitting
        <RETURN> was sporadic. Bug fixed.
     
Comments on Version 1.31

USER DOCUMENTATION:

New "%REPLACE()" function added for use in "Calculation" part of dPROG
Field Definition. The syntax is:

   %REPLACE(<lookup field>, <alt. DBF>, <alt. NDX>, <data source field>)

where:

   <lookup field> is the field in the host screen containing the
   lookup data;

   <alternate DBF> is the external database containing the field
   holding the data we want to retrieve;

   <alternate NDX> is the index file to be used for the alternate
   database during the lookup;

   <data source field> is the field in the alternate database
   which contains the replacement data.

Example:

   Assume we are in dPROG, editing a screen called MAILEM using a
   database called MAILEM. One of our MAILEM Fields is STATE,
   and another is STNAME (State abbreviation and State name,
   respectively). We want the user to be able to enter a State
   abbreviation, and then have the abbreviation used to lookup, in
   a database named STATE, this abbreviation, and then pull out the
   corresponding State name (STNAME) and place this State name into
   the MAILEM Field STNAME automatically. To accomplish this in
   dPROG, use F6 to edit Field Definition for our MAILEM Field STNAME.
   Go down to the Calculation box and enter the following expression:

   %REPLACE(STATE,STATE,STATE,STNAME)

   which would cause MAILEM Field STATE to be used in a search
   of STATE.DBF using index STATE.NDX (or NTX), and accessing STATE.DBF
   Field STNAME, returning the data to our host Field STNAME in
   screen MAILEM.

   This replacement only occurs if the lookup is successful; if
   the lookup Field is not found in the alternate database, no
   replacement is made, and if the Field is defined as either "File"
   or "0" thru "9" (index Field), then upon lookup failure the user is
   prompted to manually enter the data for the host Field.

   NOTE!!! The search is conducted on the TRIM of the lookup field.
           The result is returned for the length of the receiving
           field.
