
Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[1]--------------------------------------------------------------------

PROBLEM:  If you activate the Filter panel, click the "Filter on" check
box, and then press "OK" without specifying a filter expression, the
application crashes.

COMMENT:  This problem was corrected in Release B.

FIX:  Insert the indicated line of code in the template files
GENMNT.GTL, GENINQ.GTL, GENREP.GTL, and GENLABEL.GTL:

* DEFINE FILTER PANEL
  define panel Filter from 7,15 to 14,61 ;
         explode shadow right palette array pal_dialog title " Filter "
  define pushbutton Quick of Filter at 0, 1 prompt "Quick" pick "Q"
  define pushbutton Edit  of Filter at 0,11 prompt "Edit"  pick "E"
  define pushbutton List  of Filter at 0,20 prompt "List"  pick "L"
  define pushbutton Store of Filter at 0,29 prompt "Store" pick "S" ;
         when .not. empty(filter_str)
  define checkbox filt_on of Filter at 4,2 prompt "Filter On" pick "F"
  ... valid type(filter_str) = "L" .or. .not. filt_on                <===
  define pushbutton Okay of Filter at 3,38 prompt "OK" pick "O"

--------------------------------------------------------------------------


Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[2]--------------------------------------------------------------------

PROBLEM:  When you compile and link the application with Arago
Quicksilver 2.0, but you don't use the -r switch, pressing F4 in the
application dumps you unceremoniously to DOS.

COMMENT:  This is evidently an Arago bug, because the same behavior
does not occur using Arago Quicksilver 2.1.

FIX:  Contact Wordtech and request the 2.1 update.  In the meantime,
link with the -r switch.  (The -r switch is used by default in the
Genifer templates.)

--------------------------------------------------------------------------


Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[3]--------------------------------------------------------------------

PROBLEM:  If your primary database is empty, the maintenance, inquiry,
and report programs crash in various exciting ways if you try to exit
without adding records.

COMMENT:  This problem was corrected in Release B.

FIX:  You'll need to make two different changes; one for the maintenance
template and another for the remaining templates.

In GENMNT.GTL, immediately before the procedure Main, insert the
indicated code:

  if eof()                                              <===
    if Confirm("Database empty; add records?", .Y.)     <===
      Main{[program identifier]}("add")                 <===
    endif                                               <===
  endif                                                 <===
  if .not. eof()                                        <===
    do Main{[program identifier]} with "begin"
    activate panel Menubar noescape
  endif                                                 <===


In the files GENINQ.GTL, GENREP.GTL, and GENLABEL.GTL, add:

  if eof()                                       <===
    Warning("Database empty")                    <===
  else                                           <===
    do Main{[program identifier]} with "begin"
    activate panel Menubar noescape
  endif                                          <===

--------------------------------------------------------------------------


Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[4]--------------------------------------------------------------------

PROBLEM:  If you have more than nine options on a menu, all options
after the ninth one behave as if you'd selected the first one.

COMMENT:  This problem was corrected in Release B.

FIX:  In the procedure Execute, in the file GENMNU.GTL, change:

    case panel() = "OPTION{j}"    && {[option prompt]}

to:

    case "OPTION{j}" = panel()    && {[option prompt]}


--------------------------------------------------------------------------


Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[5]--------------------------------------------------------------------

PROBLEM:  The "Quick" option on the Filter panel doesn't work in report
programs.

COMMENT:  This problem was corrected in Release B.

FIX:  In the files GENREP.GTL and GENLABEL.GTL, change:

* DEFINE FILTER PANEL
  define panel Filter from 7,15 to 14,61 ;
         explode shadow right palette array pal_dialog title " Filter "
  define pushbutton Quick of Filter at 0, 1 prompt "Quick" pick "Q"
<< if _HasScreen >>     <===
         ... when .F.
<< endif >>

to:

* DEFINE FILTER PANEL
  define panel Filter from 7,15 to 14,61 ;
         explode shadow right palette array pal_dialog title " Filter "
  define pushbutton Quick of Filter at 0, 1 prompt "Quick" pick "Q"
<< if .not. _HasScreen >>
         ... when .F.
<< endif >>

--------------------------------------------------------------------------


Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[6]--------------------------------------------------------------------

PROBLEM:  In a Report program, if you change the Order, the report does
not contain exactly the right records unless you manually reset the
Scope.

COMMENT:  This problem was corrected in Release B.

FIX:  Add the indicated lines to the function Order, in GENREP.GTL and
GENLABEL.GTL:

  do case
<< for all indexes >>
    case ndx_desc = "{[index description]}"
      set order to tag {[index name]}
      ndx_expr = "{[index expression]}"
<< endfor >>
  endcase
  deactivate panel
  first_rec = BeginRec()      <===
  last_rec  = EndRec()        <===

--------------------------------------------------------------------------


Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[7]--------------------------------------------------------------------

PROBLEM:  In a Maintenance or Inquiry program, when you do a Quick
Filter from a scrolling window, the colors in the scrolling window get
messed up.

FIX:  In the function Filter, in GENMNT.GTL and GENINQ.GTL, change:

  FiltStat()                          <=== just move this line of code
  LoadRec{[program identifier]}()
<< if _Scrolling >>
  win_redraw[window] = .T.
<< endif >>
  PaintR{[program identififer]}()

to:

  LoadRec{[program identifier]}()
<< if _Scrolling >>
  win_redraw[window] = .T.
<< endif >>
  PaintR{[program identififer]}()
  FiltStat()

--------------------------------------------------------------------------


Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[8]--------------------------------------------------------------------

PROBLEM:  When you add code to the Posting() function in a maintenance
program, the application will not properly save new records.

COMMENT:  The Arago SET RELATION command contains an undocumented feature.
Record pointers in all target databases are moved whenever a REPLACE is
performed.  Traditionally, record pointers in target databases are moved
only when the record pointer in the driver database is moved.

FIX:  Insert the indicated code in the Posting() function, in
GENMNT.GTL:

  parameters input_mode
  private record_no             <===
  record_no = recno()           <===
  do case
  << for all zoom-databases in program >>
    case table = "{[database alias]}"
      do case
        case input_mode $ "Add, Copy"
          * use the the memory variable
        case input_mode = "Delete"
          * use the the database field
        case input_mode = "Modify"
          * use both the variable and the database field
      endcase
   << endfor all databases >>
  endcase
  go record_no                  <===

--------------------------------------------------------------------------


Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[9]--------------------------------------------------------------------

PROBLEM:  When you press [F1] to access help, the application crashes with
a message that G_HELP.STR is not an Arago database.

COMMENT:  The file G_HELP.STR was somehow damaged on many of the
template disks.  You may download a new G_HELP.STR from the Wordtech
directory of the Genifer Users Group BBS (see p. 337 of your manual) or
contact Bytel Corporation at 510/527-1157 and request a replacement
disk.

--------------------------------------------------------------------------


Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[10]-------------------------------------------------------------------

PROBLEM:  Your application runs fine under Arago dBXL, but if you
compile it with Arago Quicksilver, it crashes as soon as you try to run
it.

FIX:  In the file GENMAKE.GTL change:

<< for all programs >>
FILE {[program name]}.OBJ
<< endfor >>
FILE G_UDF.OBJ
FILE G_COLORS.OBJ
OUTPUT {_main_menu}.EXE

to:

FILE {_main_menu}.OBJ
<< for all programs >>
  << if .not. [program is-main-menu?] >>
FILE {[program name]}.OBJ
  << endif >>
<< endfor >>
FILE G_UDF.OBJ
FILE G_COLORS.OBJ
OUTPUT {_main_menu}.EXE

--------------------------------------------------------------------------


Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[11]-------------------------------------------------------------------

PROBLEM:  Running your application under Arago 2.5, the pick lists (for
fields validated against another file) don't work.  Specifically, the
selected value is never written back into the validated field.

COMMENT:  This code worked correctly in previous versions of Arago.  The
READ system was evidently changed in version 2.5.  It was enhanced
in such a way that the old algorithm no longer works, but a different
method (which didn't work in 2.0) now does.

FIX:  In the function Val_File(), in the file G_UDF.PRG, change:

    keyboard " " + iif(lastkey() = K_Esc, chr(K_Esc), chr(K_Enter))

to:

    is_valid = (lastkey() <> K_Esc)
    if .not. is_valid
      keyboard chr(K_Esc)
    endif

--------------------------------------------------------------------------


Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[12]-------------------------------------------------------------------

PROBLEM:  The color selector doesn't allow you to specify colors for the
menu bar(s).

FIX:  In the file G_COLORS.PRG, change:

  define pushbutton Quit   of Menubar at 0,47 prompt "Quit" ;
         noborder pick "Q"

to:

  define pushbutton Menu   of Menubar at 0,47 prompt "Menu" ;
         noborder pick "M"
  define pushbutton Quit   of Menubar at 0,53 prompt "Quit" ;
         noborder pick "Q"

--------------------------------------------------------------------------


Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[13]-------------------------------------------------------------------

PROBLEM:  If you filter on a logical field, and you enter "N" or "T" on
the filter screen, you get the opposite of the expected results.

COMMENT:  This bug was introduced in the Release B templates as part of
the fix for another bug.

FIX:  In the function FiltSet(), in GENMNT.GTL, GENINQ.GTL, GENLABEL.GTL
and GENREP.GTL, change:

          if m->{[field name]} $ 'YN'

to:

          if m->{[field name]} $ 'YT'

Also, change:

          if m->{[field name]} $ 'TF'

to:

          if m->{[field name]} $ 'NF'

--------------------------------------------------------------------------


Anomaly Report:  Genifer 3.0 Templates for Arago 2.0

---[14]-------------------------------------------------------------------

PROBLEM:  If you attempt to modify or zoom from a record, you get the
message "Unable to Lock Record" even though no other user on the network
has locked that particular record.

COMMENT:  Arago is actually attempting to lock a record in a related
lookup database.  If that lookup record is shared by multiple records in
the primary (or zoom) database, the lock fails.

FIX:  To prevent the unwanted cascading record lock, all lookup
databases must be opened in "read only" mode.  To accomplish this,
insert the indicated code in GENMNT.GTL:

* OPEN FILES
  private use_error
<< for all databases in program >>
  on error do ErrorTrap with error(), "{[database name]}", message()
  use {[database name]} in {j} order tag {[database ndx-name]} ;
    alias {[database alias]}
  << if .not. [database is-zoom?] >>      <===
  ... noupdate                            <===
  << endif >>                             <===
<< endfor >>
  on error
  if UseError()
    return
  endif

Note that if you wish to post new values to a lookup database via the
Posting() function, this change complicates the matter.  You must first
open the lookup database AGAIN in a new work area, without the NOUPDATE
option, and perform an explicit SEEK to find the appropriate record to
post to.

--------------------------------------------------------------------------

