Product:  R:BASE                   Version :  3.1 or Higher
     Area   :  GENERAL INFORMATION      Category:  OTHER                 
     Here are workarounds for verified problems.  The version number listed 
     is the version in which the problem was found.  It may also occur in 
     other versions.  A Microrim reference number is included at the end of 
     each description.  Those marked Fixed have been corrected in a recent 
     release of Upgrade Express which you can purchase by calling 
     R:BASE 4.0
     Reserved Words as Names
     Some of the reserved words in the reserved word list do not return 
     errors when used in RBDEFINE (Info Create/modify) as table or column 
     names.  For example,  BACKGROUND, FILES and BEGIN are  allowed.   Using 
     reserved words as names may cause errors depending on the context of 
     where the name is then used.   3673
     Workaround:  Verify all names against the reserved word listing in the 
     Command Dictionary section of  the Reference Manual.
     Using ARRANGE BY
     When you misspell the word ARRANGE to ARANGE in the EDIT USING command 
     the command still executes; the optional ARRANGE BY is ignored.  An 
     error message should be returned.   3741
     Workaround:  If it appears that an ARRANGE BY clause is being ignored, 
     double check the spelling of ARRANGE.
     Lookups in Forms 
     A change between 3.1 and 4.0 in Forms is that 4.0 now uses the 
     regular R:BASE query handler instead of  a special forms query handler.   
     The special forms query handler  had many special case situations 
     written into it.  By switching to the regular R:BASE query handler, 
     some expressions, such as lookups, may operate differently in 4.0 
     than they did in previous versions.   For example, lookups that are 
     comparing NULL values no longer find a match.  A common situation 
     is an enter form with a lookup with 2 conditions in the WHERE clause, 
     empid = empid in Employee where empfname=empfname and emplname=
     emplname. This lookup won't work in 4.0 if  a value is entered for 
     only one of the conditions, i.e. only lastname is entered,  empfname 
     is NULL.   The error message "-ERROR- Syntax is incorrect for the 
     command."  is displayed.   3789
     Workaround:  Always enter values for all the columns specified in 
     lookup WHERE clauses.   The lookup works fine if you enter both values.
     Passing DATE and TIME Parameters
     In 4.0, passing parameters using .#DATE or .#TIME as the value will 
     make the %var a datatype of TEXT not DATE or TIME.  For example, RUN 
     filename USING .#TIME and then SHOW VAR will show %1 has a datatype of 
     TEXT not TIME.  In 3.1C, it was the correct datatype.  This can cause 
     problems if, in your program, you then use the %var in an expression, 
     for example, SET VAR vbegtime TIME =(.%1), since the expression 
     processor looks at the datatype of the variable.    3771
     Workaround:  Remove the parentheses, SET VAR vbegtime TIME=.%1, to set 
     the variable to a TIME datatype variable.  
     Gateway and EXTENDED databases
     It is possible to damage your database when importing data into an 
     extended database (> 80 tables or > 800 columns).  If you get the 
     message "Unable to connect database -- it is open with EXTENDED set 
     ON.", Gateway will have overwritten your database files.   3820 
     Workaround: In order to open an extended database with Gateway, you 
     MUST set EXTENDED ON and COMPATIB OFF in the RBASE.CFG file.  Gateway 
     will not read the database settings, it will read the .CFG settings 
     only.   If Gateway cannot find the RBASE.CFG file on your path it will 
     create one with the default settings (EXTENDED OFF, COMPATIB ON) and 
     will overwrite your database.  If importing with Gateway into an 
     extended database, place an RBASE.CFG file containing the correct 
     settings in the directory with the database.
     Delete Rules and Forms
     The message from a delete restriction rule does not display in a form 
     with ERROR MESSAGES OFF when you violate the rule. Other rules do 
     display the  rule error message with SET ERROR MESSAGES OFF.    3786
     Workaround:   When using delete rules, before bringing the form up on 
     the screen SET ERROR MESSAGES ON.
     Forms on Views with an ORDER BY
     On a form with a table as table1 and a view as table2, a region, if 
     the view has an ORDER BY clause saved with it,  EDIT USING formname, 
     displays data for both table and the view. But as soon as you do an 
     F8 to move to the next row in table1, data no longer displays for the 
     view (table2).  The data for the view only displays for the first row 
     in table1.  Remove the ORDER BY from the view definition and the view 
     data displays as expected for every row that matches.  3792
     Workaround:  Remove the ORDER BY clause from the view and use the 
     ARRANGE BY option to order the rows in the view.
     Removing Breakpoints in Reports 
     When editing a report definition, if you have more than one break 
     defined and you delete the lower breakpoint (using Shift-F9 on the 
     Create Breakpoints screen), the locations from the break footer are 
     not deleted, they are moved either to the DETAIL section or to the 
     last BREAK HEADER section.  Note that the fields and text have not 
     been deleted before deleting the breakpoint.  The text is deleted 
     when you delete the breakpoint, the locations are moved to another 
     section.    3797
     Workaround:  Delete all the locations first and then delete the 
     sections in edit mode (F9 to delete the lines) and then delete the 
     breakpoints from the Create Breakpoints screen. 
     Copying Tables
     From Info Create/modify choose to copy a table.  If the table has a 
     long name (> 8 characters) and you copy it to a short name (< 8 
     characters), SYSINFO thinks the new table has a long name and that 
     it is the same long name as the original table.   Everything looks 
     okay until you DISCONNECT and then CONNECT the database.  At that 
     time you see two tables with the same name  They aren't really the 
     same,  there is an extra entry in the SYSINFO table.  RBCHECK and 
     RSCOPE won't report any errors.   3811
     Workaround:   Delete the  row from the SYSINFO table where SYSSNAME 
     has the new, short table name and SYSLONG has the old, long table name.
     Invalid Names with RBCHECK
     RBCHECK does not always indicate that a table or column name is 
     invalid.  For example, names beginning with numbers are not identified 
     as invalid table (RNAME) or column (ANAME) names by RBCHECK.  Also, a 
     backslash (\) in a column name is not flagged as invalid.   3668
     Workaround:   Become familiar with the R:BASE 3.1x and 4.0 rules for 
     names.  Don't rely on RBCHECK to check for illegal names.
     SOUNDEX UDF and Forms
     The SOUNDEX UDF prints extraneous numbers  to the screen when it 
     executes and the value it has been passed is a NULL value.  In a 
     form it will also scroll the screen when it prints the numbers and 
     rewrite the status line and screen locations but not the text.  Thus 
     the form is now out of alignment and two copies of the status line 
     display  The SOUNDEX UDF is normally used in a computed column on a 
     column such as lastname.  As the form prepares to enter a new row, 
     the computed column (and thus the UDF) is evaluated with a null value 
     causing the screen to scroll.   3808
     Workaround: In 4.0, use the undocumented _SOUNDEX  function.  
     Passing Values to a UDF
     A UDF returns incorrect values from the R>  when a literal value is 
     passed.  The UDF is written to return a text string of the form 
     "0x0y0z,z" when passed three numbers "x.y.z".  For example, 
     SET VAR x TEXT = (UDF('udfname','1.2.3')). The  expected result is 
     010203,3, but the variable x actually contains 01/02/03, a date.  
     The UDF returns an incorrect value on any literal sequence of numbers 
     that can be interpreted as either date or time values.   When the 
     expression handler sees the string 1.2.3 it needs to determine if it 
     is a date (literal dates in expressions need quotes so they aren't 
     divided), it decides it is and sends it off to the UDF as a date rather 
     than a text string.   3739
     Workaround:  Set a TEXT variable to the literal value and pass the 
     value to the UDF using the variables.  SET VAR v_value TEXT='1.2.3' ; 
     SET VAR x TEXT = (UDF('udfname',.v_value))
     Format Masks in Forms
     Page 6-35 of the 4.0 User's Manual states " Format masks are usually 
     used on text fields but can also be used on DATE, TIME, and INTEGER 
     fields"   This is not correct.  The Guide to New Features is correct 
     when it says format masks can only be used on TEXT fields.   3788
     EXTENDED and Multi-User
     On page 5-6 of the Reference Manual, in the last paragraph on the page, 
     the third sentence reads "When EXTENDED is set to NO...."  This should 
     read "When EXTENDED is set to OFF....", not NO.   3794
     R:SCOPE Contiguity Symbols
     The new R:SCOPE manual, on page 40, under contiguity heading, reads "A 
     square(n) indicates a contiguous row, a triangle (t) indicates a 
     noncontiguous row."  The (n) should be a char(221), rectangle, and the 
     (t) a char(31), upside down triangle.  3802
     UDF String Length
     The documentation that comes with the UDF packs says "( be safe, 
     the maximum length of the string containing the UDF parameters should 
     exceed 90 characters.)".  It should read "... NOT exceed 90 
     characters.".  3740