   1| DOS

1. How to set PATH in AUTOEXEC.BAT:

         Incorrect configuration of the PATH results in problems
         when trying to run the editor and/or dBASE from the GENIFER
         subdirectory. Usually the error "Bad command or filename"
         will be given.

         The file AUTOEXEC.BAT should be located in the ROOT
         directory of the hard disk and contain the line:

         PATH=c:\;c:\dbase;c:\genifer; etc.

         The system needs to be rebooted for the change to take
         effect.

      2. File not found:

         This error message can occur under dBASE or at the DOS
         prompt.  It can refer either to the *.DBF files or the *.PRG
         files:

         A) *.DBF file not found --

            Initialize Database from the Data Dictionary with the menu
            choice 'Init'.  This is an unclear menu choice for many
            novice users.  The Data Dictionary must be REINITIALIZED
            every time a change is made to fields.

         B) *.PRG file not found --

            Check that the code has in fact been GENERATED, if it has
            then check that the code has been generated to the correct
            sub-directory.

         C) Check Environment paths --

            If the Customizer/Environment has incorrect PATH statements
            for the Output Directory then the generated code may be
            going to an 'inaccessible' area of the hard disk.

            I strongly suggest to the customer a recommended way to run
            GENIFER files on a hard disk for trouble-free operation that
            saves the chore of endlessly copying files from one
            directory into another:

            a. FIRST -- Copy the GENIFER program files to one directory
               named, for example:

               c:\genifer>gen.exe
                            *.skl
                          (4) Files total

            b. NEXT -- Create any number of SECOND-LEVEL subdirectories
               under this:

               c:\genifer\project1>
               c:\genifer\project2> etc.

               GENIFER can be accessed from any of these directories as
               needed.

               cd\genifer\project1

               Then enter GENIFER, which will default to the files on this
               directory, containing the GEN*.DBF files relevant to
               project1.

               Extra directories can be added.  Directories will contain
               ALL files for any one project, including all future *.PRG
               and *.DBF files that are created.  This makes back-up a
               snap!

            c. THEN -- For this to work leave the Environment/Customizer as
               follows:

               Output directory:   (blank=default)
               Data directory:     (blank=default)
               Skeleton directory: \genifer

            d. FINALLY -- Make sure that AUTOEXEC.BAT has a PATH that
               includes c:\GENIFER.

      3. Proc....DOS ERROR nn:

         DOS Errors are listed in the GENIFER manual on page 146.
         They come from Clipper.

         A) DOS Error 2 --

            copy COMMAND.COM onto the disk (usually a floppy disk
            problem).

         B) DOS Error 4 --

            Check CONFIG.SYS contains the lines:

            Files=20
            Buffers=15

            AND that the file is on the ROOT directory AND that the
            computer has been rebooted since the change was made.

            NOTE: Do not confuse CONFIG.SYS with CONFIG.DB.

      4. GENIFER files at the DOS level:

         A) GEN*.DBF for internal GENIFER work --

            Backing up these files will save all Data Dictionary,
            Definition and Generation information from WITHIN GENIFER.

            BACK UP THESE FILES OFTEN!!

            Ask to include these in all disks sent to Tech Support. for
            problem resolution.

         B) Del *.NTX to reindex GENIFER --

            Especially for any internal GENIFER problems such as missing
            screens or databases that were previously created, and any
            PROC: errors. GENIFER will re-create these *.NTX files.

            If the problem remains after this, back-up copies of
            GEN*.DBF will have to be used.

         C) *.DBF & *.PRG files --

            These are all that are needed by dBASE to run application.
            They are the ones that the developer will need to copy to
            transfer the finished application to the clients site.

            NOTE: Except GEN*.DBF.

         D) GEN.EXE full system vs. demo system --

            The full system of GEN.EXE is smaller than the Demo version:

            GEN.EXE (Full 1.01) 277,504 8-19-86 11:02am

            GEN.EXE (Demo 1.01) 278,672 8-01-86 2:00pm

            Check that they have copied Disk 3 of 3 over LAST.

   2| RUNNING GENIFER

      1. Data Dictionary:

         This contains the structure of the database that GENIFER
         uses.  It is NOT the same thing as a .DBF file (which needs
         to be initialized from the Data Dictionary).

      2. Definitions:

         A) Screen Painting --

            a. Screen hangs up when they exit editor:

               This is due to a BUG in GENIFER 1.01.  More than 89 fields
               on a Maintenance Screen or Report will cause it to freeze.
               Suggest they paint 85 fields and use 'xxx' or '***' to mark
               the position of the remainder and then modify the code.

            b. "No input point painted" error:

               This occurs when, for a variety of reasons, the editor has
               not 'connected' into GENIFER when the Zoom is chosen, or, if
               it has, there is not a valid field painting character
               onscreen.  Check:

               1> The editor loads correctly from the genifer subdirectory
                  (DOS PATH set OK?).

                  The error "Bad command or filename" signifies that the PATH
                  is not OK.

               2> The field painting character used matches that in the
                  Customizer.

                  A common error is to have replaced the underline "_" with a
                  hyphen "-" because on some monitors the underline "_" looks
                  like a blank in the Environment.

               3> In Customizer/Environment the editor name alone has been
                  entered.

                  It does not work if the drive and directory are entered to
                  compensate for a missing or incorrect PATH:

                  c:\word\ws

                  The editor name ALONE should be entered:

                  ws

            c. Garbled screen output:

               Usually need to check editor in standard ASCII mode.  This
               may require reinstallation (eg. for non-document mode in
               WordStar) or special configuration (eg. ALTL.MAC for
               WordPerfect as shown in TN#1).

            d. Specific Editors:

               1> Brief

                  In the AUTOEXEC.BAT file

                  set bflags = -r-u60

               2> WordStar

                  Install for non-document mode using the correct install:

                  WINSTALL ver 3.3
                  WSCHANGE ver 4.0

               3> WordStar 2000

                  Set up a ED.BAT file that contains:

                  echo off
                  WS2 GENEDIT.TXT UNFORM.FRM

               4> MicroSoft Word

                  Save the file with the UNFORMATTED option.

               5> WordPerfect

                  Send TN#1 for the automated load and unload macros.

               6> Sidekick

                  Follow page 8 in manual exactly -- it will work! ALWAYS
                  enter F3 to load a new file -- even if the screen has
                  already been edited.

               7> Bad Editors

                  These editors will not work with GENIFER:

                  Multimate
                  Saywhat?!

               8> Graphics Character Editors

                  These are able to paint "boxes" around titles like those
                  used in CALCRU:

                  Norton Editor
                  Sidekick
                  WordPerfect

                  The ALT key is held down and a number for the hi-order ASCII
                  character required is pressed on the numeric keypad.  eg:

                  ALT-218 = top right-hand corner for single line box.
                  ALT-201 = top right-hand corner for double line box.

                  Note that this is a little tricky in SideKick because if you
                  hold down ALT too long it brings up the Menu box.

            e. Copying a screen:

               To copy a screen WITHIN a category (eg. one maintenance
               screen to another) use the 'C' option.

               To copy a screen BETWEEN categories (eg. to have a menu
               screen with a fancy title section used as the starting point
               for a maintenance screen):

               1> Zoom into the screen to be copied and then Quit.

               2> Name the new screen and use the template file name
                  GENEDIT.TXT.

         B) Maintenance Screens --

            Maintenance/Inquiry Screen definition can result in problems
            even for sophisticated developers when complex screens are
            required:

            a. Parent-Child Screens:

               Customers are often unclear on the concept of 'parent-child'
               or 'one-to-many' screens.  They may be trying to link two
               screens for the same database (they need TN#2), or may need
               help understanding if their application requires a P-C type
               at all.

               If they do, then check:

               1> At least 1 field in common is available to link two
                  databases. The field must have the same name in both
                  databases.

               2> They have not made the key field in the child the same as
                  linking field

                  The error:

                  "At least one on-screen non-linking field must
                  be included in the key"

                  will result. Usually necessary to add a second field to the
                  key in the child.

            b. More than 1 Screen per database needed:

               If databases have more fields than will fit on one screen
               more than one "page" for input may be needed.  GENIFER 1.01
               can only generate one screen per database.  It is possible
               to "work around" this by following the outline in TN#2.

            c. Memo fields:

               GENIFER cannot handle memo fields in maintenance screens.
               For a work-around see TN#5.

         C) Reports --

            a. Line types not in order:

               The line types can only be used in the strict sequence:

               RH
               PH
               BH1       (most general)
               BH2      |
               .        |
               .        v
               BH9       (most particular)
               D
               BF9       (most particular)
               BF8      ^
               .        |
               .        |
               BF1       (most general)
               PF
               RF

               It will not work if lines are assigned in other than this
               sequence. Don't mix up line types! Also, more than 1 line at
               a time can be assigned per line type. eg:

               RH      ABC COMPANY ANNUAL REPORT
               RH           Western Region
               RH (blank line)
               PH                                Page: PPP
               PH (blank line)
               .
               .


            b. Blank lines in report:

               Blank lines in the report can be assigned as any of the line
               types.  Making one Detail line blank will result in double
               spaced report output.

            c. Computed fields:

               These can be used in many ways to improve the power of
               reports. See TN#3 & 4 for details.

            d. Related field or expression missing:

               The common field needed to link a Primary and Secondary file
               must have the same name in both .DBF files.  The field name
               alone is entered.  A common error is to enter

               CUST_ID = CUST_ID

               instead of just entering

               CUST_ID

            e. More than 2 files in reports:

               GENIFER 1.01 can only assign fields from a Primary and a
               Secondary file.  See TN#4 for a "work around" to include
               more than 2 files per report.

            f. Show goes into loop:

               This throws blank screen after blank screen up, or blank
               page after blank page out to printer:

               Report width >80 cols.  Do not use Show, go ahead and
               generate code and report will still run OK.

            g. Printer control characters needed in report:

               Even though GENIFER gives the option for Page Length,
               Characters per inch etc. many printers need additional
               information to trigger these functions.  A 1 character long
               field can be embedded at the start and end of the report
               that contains the correct character string expression
               listed in the printer manual.

               eg: PR1

               " "+CHR(27)

               Note the use of the " " at the start of the expression.

            h. Calculations on control break derived data:

               Fields that are derived from Totals or Averages on a control
               break cannot have further calculations performed on them
               (eg. taking 2 totals and finding the difference between
               them) without modifying the generated code per TN#4 page 3.

            i. Reports printed in columns:

               Suggest the use of the IIF() Immediate If expression in
               dBASE III+ to have reports print in columns.  See example in
               TN#3 page 11.

      3. Generation:

         A) Menus --

            Menus are unique in 1.01 -- they do not have an .SKL file.

         B) Maintenance/Inquiry --

            a. Other index files to maintain:

               Use this option if this screen should maintain other .NDX
               files (eg. if you have two or more screens maintaining the
               one database with different keys). Create the .NDX files at
               dot prompt first.

            b. Generation freezes:

               "The field xxx has not been defined.  Do you wish to change
               the expression?" error message occurs:

               Safely ignore this by answering 'N' as many times as is
               needed, especially if you have computed expressions such as
               COUNT FOR.  However, if the field is misspelled, best to redo
               & regenerate.

            c. Generation freezes, no error message:

               Check disk space or check for bad sectors.

            d. "Proc val_rec line 1035 undefined ref_filnn" error:

               Results when the maintenance program has >6 validation files
               opened.

         C) Reports --

            a. Filter required Y/N?:

               Must say 'Yes' to have any filter at run-time.  Strongly
               suggest you always do so, and leave the default filter blank
               -- otherwise the operator will never have access to the
               filter option.

            b. Generation freezes:

               "The field xxx has not been defined.  Do you wish to change
               the expression?" error message occurs:

               Safely ignore this by answering 'N' as many times as is
               needed, especially if you have computed expressions such as
               COUNT FOR.  However, if the field is misspelled, best to redo
               & regenerate.

   3| RUNNING DBASE

      1. Set-up:

         A) Screen scrolls --

            Screen scrolls up and throws off field positions after a
            List or any error message occurs.  Due to having the
            highlighted status bar on.

            Set status off at dot prompt OR (if you run GENIFER code a
            lot) status=off in file CONFIG.DB.

         B) Return to dot prompt/Loop back to menu --

            Loops are best verified at the dot prompt, to discover if
            the problem is in the menu or in the program the menu calls.

            a. ..do maintenance screen/report name:

               When entered alone will always return to the next dot. All
               programs can be successfully loaded and tested at the dot
               prompt with the following:

               .set talk off
               .set proc to xxx
               .do xxx

               If the program still loops it can be due to:

            b. illegal filenames:


               1> Files that begin with any number (1-9xxxx.prg) are not
                  allowed.


               2> Files with a hyphen in (xxx-xxx.prg) are not allowed.

            c. reserved words:

               Do not use as field names any


               1> Of the dBASE reserved words:

                  ACCEPT, APPEND, ASSIST, AVERAGE, BROWSE, CANCEL, CHANGE,
                  CLEAR, CLOSE, CONTINUE, COPY, COUNT, CREATE, DELETE, DIR,
                  DISPLAY, DO, EDIT, EJECT, ERASE, EXIT, FIND, GO, GOTO, HELP,
                  IF, ELSE, ENDIF, INDEX, INPUT, INSERT, JOIN, LABEL, LIST,
                  LOCATE, LOOP, MODIFY, NOTE, PACK, PARAMETERS, PRIVATE,
                  PROCEDURE, PUBLIC, QUIT, READ, RECALL, REINDEX, RELEASE,
                  RENAME, REPLACE, REPORT, RESTORE, RETURN, RUN, SAVE, SEEK,
                  SELECT, SET, SKIP, SORT, STORE, SUM, TEXT, ENDTEXT, TOTAL,
                  TYPE, UPDATE, USE, WAIT, ZAP.

               2> As well as a small number GENIFER reserves:

                  EMPTY, CHOICE, OPTION, NUM, RECORD_NO, VALUE, OTHER.

                  NOTE: 'NUM' will trigger if 'NUMBER' is used.

               3> In order to test for reserved words:

                  .set talk on
                  .set echo on
                  .set step on

                  then 'do' the file and press the spacebar repeatedly until
                  it freezes -- the last line of code onscreen contains the
                  reserved word.

            d. Menu not calling 'P' type file:

               If the file itself passes the above tests at the dot prompt,
               but loops back to a menu, then the menu itself is to blame.

               Check:

               1> The filename the menu calls is spelt correctly.

               2> Anything generated by GENIFER is either 'P' or 'M' option.

      2. Maintenance Screens:

         A) "Data Type Mismatch" error --

            a. Numeric field validated against other file:

               A BUG in 1.01 that needs to have the code modified:

               GENERATED CODE:

                 procedure val_rec
                 .
                 seek m->fld_name

               MODIFIED CODE:

                 procedure val_rev
                 .
                 seek str(m->fld_name,6)

               where 6 is the length of the numeric field.

            b. Logical field onscreen when filter set:

               If the screen contains a logical field then the code should
               be modified:

               procedure get_flds

                remove picture='L'

               proc init_fld

                  change

                  log_fld = "F"

                  to

                  log_fld = " "

         B) "Variable not found" error --

            a. Data Dictionary not reinitialized:

               A field name may have been added to the Data Dictionary and
               because no re-initialization was done the .DBF file does not
               have it.

            b. Used reserved word:

               eg:
                               ?
               @2,21 say OTHER picture '@!'

            c. Default value not in quotes:

               eg:
                                 ?
               city = Cirencester

         C) "String memory variable overflow" error --

            Caused by trying to Filter on too many fields and causing
            the filt_str variable to grow >254 characters.  Try shorter
            field names?

         D) Database empty...menu line loops --

            The operator cannot escape from the add mode because:

            a. filename is "add".

            b. Child database has numeric key (see below).

         E) P-C Multifile Zoom  --

            a. Stuck in Add mode in child:

               If the child is indexed on a numeric key then in some cases
               a BUG will occur and the code will need to be modified as
               follows:

               GENERATED CODE:

               * VARIABLES
               .
               .
               null_key2 = '<---longer than field length--->'

               MODIFIED CODE:

               * VARIABLES
               .
               .
               null_key2 = '<---same length as field--->'

            b. Duplicate key OK in child, not parent:

               Often required to have the parent NOT accept duplicate key
               fields (eg. CUST_ID) but HAVE the child accept them (eg.
               PART_NO).

               Modify the generated code:

               procedure chk_dupl
               *************
               ** Add new code at the start of the procedure.
                 if scr_num >1
                    return
                 endif
               *************

            c. Zoom too slow when more than 100 records are in child:

               GENIFER 1.01 sets a filter when locating records in the
               child that match the criteria in the parent.  This can take
               20 mins for a 5000 record child!  To fix:

               Send 'Fast-Zoom' disk that Cliff Krouse wrote that contains
               a new GENMNT.SKL file. The latest GEN-TO-CLIP ver 3.0
               incorporates this FAST-ZOOM skeleton.

            d. "File Already Open" error:

               Validated field in Child database against Parent.  Cannot
               validate because then database1 is the same as ref_fil1.

         F) File validation --

            a. Illegal values can be entered by the operator:

               Del *.NDX

            b. "Too many files open" error:

               When the maximum number of ref_fils that GENIFER allows (6)
               have been opened the code can give this error because the
               TOTAL number of files open exceeds the dBASE limit of 15
               open files:

                    1 menu.prg
                    1 maintenance.prg
                    1 main.dbf
                    1 main.ndx
                    6 reference.dbf's
                    6 reference.ndx's
                    -----------------
                   16 total files open.

               The generated code would have to be modified per the "Too
               many reference files" Note in the Tech Support Logbook.
                
         G) Retrieve --

            a. No records match:

               Del *.NDX

            b. Partial key retrieve:

               Finds all of key_fld#1 and a part of key_fld#2 OK
               Cannot find just part of key_fld#2

               'Partial keys' are read by dBASE from left to right, cannot
               skip a piece.

         H) Field 'gets' wrong length --

            a. Too short:

               Only 1 highlighted square may appear onscreen.

               Wrong picture statement (usually ! needs @!)

            b. Too long:

               Highlighted squares may overwrite sections of the screen to
               the right of the field:

               Numeric fields with blank picture statements default to 10
               spaces.

         I) Cursor sequence not same as screen field sequence --

            This is because GENIFER generated code 1st accesses the key
            field or fields, then the remainder. The code can be
            modified to fix this. Comment out the line 'do get_key' in
            the procedure add and insert it in the desired sequence in
            the procedure get_flds.

         J) Field 'gets' misaligned with 'says' --

            In an edited screen when the field titles are in the new
            position but the highlighted bars are in the old position a
            BUG in some early versions of 1.01 is the cause -- Send 1.01
            diamond version.

         K) 'List' option does not include preferred fields --

            GENIFER chooses fields alphabetically to include in the List
            up to a maximum width of 80 columns.  To include different
            fields modify the code:

            * VARIABLES
            .
            * Others
            .
            list1 = 'field1,field2,field3,etc.'

            Be sure not to exceed a combined field length of 80 columns.

      3. Reports:

         A) Break header on top of each page --

            To have a new break header field print at the top of a new
            page modify the code as in TN#4 page 3.

         B) Undefined Filter expression --

            Undefined filter expressions occur when the operator
            attempts to run a report with an invalid expression.  I
            strongly suggest that the developer reviews the
            modifications on page 63 of the manual that will save the
            operator learning how to enter index expressions.

            Some common errors with index expressions include:

            a. Omitting a field name:

               field1 >= "aaa" .and. field1 <="ccc"

            b. Omitting quotes around a character field:

               city = "Cirencester"

            c. Omitting ctod in date fields:

               today = ctod('09/22/87')

         C) "Variable Not Found" Error --

                                ?
            seek secondary trim(str->fieldname)

            Caused when the field painted onscreen in the report is
            longer than the actual field length.

         D) Only 1 record prints on detail line --

            If only one record prints under the header, and the database
            is known to contain more than one that match that break
            level, the developer has invariably reversed the order of
            the Primary & Secondary files.  The MOST DETAILED file is
            always the PRIMARY.  (Customers often confuse
            Primary/Secondary with Parent/Child...usually the Parent
            child is the LEAST detailed -- hence the error at Report
            time.)

         E) Records not grouped correctly in Control Breaks --

            If certain records print from one category, then a group
            from a second category, then it returns to print more from
            the first the data has not been sorted. Just say 'Yes' -- to
            'Special Sort Required' to fix.  The break level field names
            will be listed.

         F) Fields out of alignment --

            a. Calculated fields:

               Especially if calculated fields print out of alignment the
               developer may have omitted the picture statement from
               calculated fields assignment.

            b. Numeric fields:

               A BUG in 1.01 causes numeric fields to be misaligned because
               GENIFER has added some extra 9's to the picture statement.
               It is necessary to modify the generated code by hand and
               remove the excess 9's.

         G) Report Output to printer only --

            Reports >80 columns in width cannot be shown onscreen.  The
            prompt 'Printer Ready?' is all that is seen in this case.

         H) Empty numeric fields all display 0.00 --

            Report output appearance can be improved by using the @Z
            picture that suppresses the 0.00's.

         I) Last Page Footer prints under Report Footer --

            The grand total in the Report Footer should print under the
            last page Footer total.  As generated, the Page Footer will
            print last.  To fix modify generated code:

            GENERATED CODE:

            * REPORT FOOTER
            do page_ft
            do rpt_ft
            .

            MODIFIED CODE:

            * REPORT FOOTER
            do rpt_ft
            do page_ft
            .

      4. Modifying Generated code:

         Many advanced programmers, and anyone who has a copy of the
         Tech Notes, will often regard GENIFER as an assistant
         programmer.  They will often require that the generated code
         be modified. Problems can include:

         A) "Program too big to fit in memory" error --

            Trying a modi comm command at the dot prompt with the dBASE
            editor gives this error due to the size of GENIFER .PRG
            files.

            Configure dBASE for a more powerful editor by adding a line
            to the CONFIG.DB file:

            tedit = editor name

         B) Modified code does not run --

            Once the developer has modified the code all bets are off
            for guaranteed Tech Support.  They may repeatedly claim that
            the only changes they made were those outlined in the Tech
            Notes.  However, they are often mistaken.  Follow standard
            debugging practices checking into the cause of the error
            message. Look for:

            a. Misspelling of variable names and syntax errors.

            b. Accidental deletion of text, phrases or lines.

            c. Editing files in a non-ASCII mode in the wordprocessor that
               results in word-wrap, truncated text or other formatting
               features.

         C) Debugging methods (above) do not work --

            Always have the developer REGENERATE the code and start
            again. Encourage them to COPY the generated .PRG file to a
            .GEN file before they make modifications.  Different
            attempts at modification can be saved in .MOD, .MO1, .MO2
            etc. files for testing.

            As a last resort they can mail a disk to Tech Support, or
            refer them to a consultant listed in CONSULT.LST.

         D) Modifying code to run on a Network --

            Not supported by Bytel.  GEN-TO-CLIP (below) has Novell
            Network capability.  Consultants in Tech Support Log are
            available.

         E) Modifying code for color --

            Simply add a line to the beginning of the main menu. eg:

            set color to N/W, +W/B, W/W

            will give black on white headings with hi-lighted white on
            blue fields and remove the border.

   4| COMPILERS

      GENIFER generated code is available for further
      modification, including revisions that may be necessary to
      compile code. Changes can be made to the .PRG files that are
      produced, or to the .SKL files in order that all future code
      will be compiler compatible.

      1. CLIPPER -- NANTUCKET

         * Modifications that need to be made to GENIFER generated
         code are explained on page 138 of the GENIFER manual.

         Additional changes that we have heard of since the manual
         was printed are:

         A) If you create a report in GENIFER then any occurrences of
            TYPE(filt_str) in the code need to be changed to TYPE
            ("filt_str").

         B) PACK&NUM is generated by version 1.00 of GENIFER.  This
            needs to be changed  to PAC&NUM.  Version 1.01 does not have
            this problem.  Call for your update if you are still using
            1.00.

      2. dBIII -- WORDTECH

         Modifications that need to be made to GENIFER generated code
         are explained on page 137 of the GENIFER manual.

         Additional changes that we have heard of since the manual
         was printed are:

         A) The procedure list includes the line:

                           display off next 20 &list_items

            replace this with:

                           list next 20 fieldn1,fieldn2,fieldn3

         B) When linking dBIII returns error messages "Cannot find
            add.prg" and so on for each procedure named.  These can be
            safely ignored as the dBIII figures out at run-time that
            there is no need for a program for each procedure.

         C) If a report has a break header the procedure Brk1_head will
            be generated. This procedure name has 9 characters and
            should be renamed to brk1_hea.

      3. QUICKSILVER -- WORDTECH

         A) Macros with commas are not accepted by Quicksilver.  Comment
            out the macro line and spell out each field.

         B) Multiple files and indexes are not allowed -- replace each
            index.

         C) Procedure list -- replace macro with field names.

         D) In any parent-child databases replace the line:

                           if screen_num = 1 .or. screen_num = 2.and.

            with a line that has a space between "2" and ".and.".

         E) Make the changes listed on page 137 of our manual for dBIII.

         F) To improve the performance of the program change the
            procedure replace_rec to concantinate the separate lines
            into as few as possible within the maximum limit of 250
            characters per line:

                 replace fld_1 with m->fld_1, fld_2 with m->fld_2 etc.

         G) If a report has a break header the procedure Brk1_head will
            be generated.  This procedure name has 9 characters and
            should be renamed to brk1_hea.

         H) If filtering a maintenance screen on a null date the lines
            in the procedure filter that read:

            if .not. (m->date_fld <> m->date_fld .or. .not. (m->date_fld
            =;
            m->date_fld))
              date_fld = dtoc(m->date_fld)
              filt_str = filt_str + 'date_fld = ctod("&date_fld") .and.'

            endif

            needs to be changed to read:

            if .not. m->date_fld <> ctod('  /  /  ')
              date_fld = dtoc(m->date_fld)
              filt_str = filt_str + 'date_fld = ctod("&date_fld") .and.'

            endif

      4. FOXBASE -- FOX SOFTWARE

         A) In Maintenance & Inquiry Programs the case statement
            Quit has two lines that read:

                           close databases
                          return

            this needs to be changed to read:

                           close databases
                           clear program
                          return

            These changes should be made in Maintenance and Inquiry .SKL
            files if all generated applications will be run under
            Foxbase.

            Likewise, in Reports that same change needs to be made in
            the
            Report Footer.

         B) If filtering a maintenance screen on a null date the lines
            in the procedure filter that read:

            if .not. (m->date_fld <> m->date_fld .or. .not. (m->date_fld
            =;
            m->date_fld))
              date_fld = dtoc(m->date_fld)
              filt_str = filt_str + 'date_fld = ctod("&date_fld") .and.'

            endif

            needs to be changed to read:

            if .not. m->date_fld <> ctod('  /  /  ')
              date_fld = dtoc(m->date_fld)
              filt_str = filt_str + 'date_fld = ctod("&date_fld") .and.'

            endif

         C) The code in menu programs that reference other files needs
            to be changed so that the files no longer have a .PRG
            extension, but have a .FOX extension.

         D) The file CONFIG.FX should have this line added:

                           INDEX = NDX

      5. ** NOTE **

         ADDITIONAL PRODUCTS ARE NOW AVAILABLE TO SPEED COMPILING OF
         GENIFER CODE:

         If you compile with Clipper or Quicksilver and wish to
         circumvent these time consuming changes, then two
         independent companies have "add-on" products that customize
         the code for Clipper and Quicksilver:


         A)  Computer Crossroads
             201 South Main
             Lamar, CO 81052
             (303)336-9690

            GEN2CLIP customizes code for Clipper.
 
            Version 3.0 makes GENIFER code multiuser  (works on Novell 
            Networks) and produces GENIFER code with '1-2-3' type light-
            bar menus (in Clipper).
  
            GEN2QUICK customizes code for Quicksilver.

            Retail price $89.00 each.

         B)  SofSolutions
             205 Senisa
             San Antonio, TX  78228
             (512)735-0746

            GENICLIP for Clipper.
            GENIQUICK for Quicksilver.

            Adds color to generated applications.
            Uses GENIFER's original skeleton files. Does not require
            regeneration of the application.  

            Retail Price $59.00 each.
 