==================================================================
     MAY/JUNE 1992 PROBLEMS & WORKAROUNDS
     ==================================================================
     PRODUCT :  R:BASE                  VERSION    :  3.1 AND UP
     CATEGORY:                          SUBCATEGORY:
     ==================================================================
 
 
     Export and Embedded Quotes
     ==========================
 
     When exporting an ASCII DELIMITED file, embedded quotes in text strings
     are not handled correctly. Gateway will always use double quotes (")
     around the text fields, but embedded quotes are not doubled. If the data
     is imported back into R:BASE, the embedded quote is assumed to be the
     ending quote for the text string and the data will not load correctly.
     3638, Fixed in 3.1C
 
     WORKAROUND:
     Use UNLOAD DATA...AS ASCII to export the data from R:BASE intead of
     using the Import/Export utility. The embedded quotes will be properly
     doubled.
 
 
     Exporting data as dBASE
     =======================
 
     When exporting data to a dBASE file and the data contains note datatypes,
     if one of the note fields has data with a length of exactly 511 bytes (or
     a multiple of 512 - 1 [512*n-1] ), the data will be exported incorrectly.
     The .DBT file will have an extra block. All the records following the one
     with the length of 511 bytes will be offset and the data will appear in
     the wrong columns.
     367, Fixed in 3.1C
 
     WORKAROUND:
     Edit the data to either add or subtract characters so it is not exactly
     511 bytes long.
 
 
     Editing Exceptions in Gateway
     =============================
 
     The Exception Editor in the Import/Export utility (Gateway) does not work
     correctly if you edit and load exceptions one-by-one. When you edit and
     load them one-by-one the exception editor copies the row you edited and
     loaded over the row that is immediately below in the exception file, i.e.
     it duplicates the row that was loaded and loses the next row. Depending
     on the number of rows in the exception file, you may get "Unable to open
     exception file" when trying to edit and load subsequent rows. Once you
     get that message you may get garbage displayed on your screen if you try
     to continue editing or loading.
     3635
 
     WORKAROUND:
     Edit all the exception rows and then choose to load them all as a group.
     Don't edit and load exceptions one-by-one.
 
 
     Checkbox Menus in Applications
     ==============================
 
     Choosing from a block in a procedure file using the CHKBOX feature, as
     the PRT$$$ menu does in an Application Express application, takes 7 file
     handles. They are not released when the menu is exited.  If you choose
     to print in your application between 30 and 40 times you will get the
     errors "Out of dynamic memory handles.  Check application complexity,"
     and then "Insufficient memory to continue this function." You must exit
     R:BASE to clear the memory handles.
     3643, Fixed in 3.1C
 
     WORKAROUND:
     None.
 
 
     Editing RBASE.CFG
     =================
 
     When you edit your RBASE.CFG file and make changes to the folding table,
     for example, and then later make other changes, such as color or name or
     printer and choose Save Settings from the Configuration menu under
     Settings, the changes made to your folding table will be overwritten by
     the default folding table.
     3646
 
     WORKAROUND:
     After customizing the RBASE.CFG by changing features not available
     through the Settings menu, you need to always make changes to RBASE.CFG
     using RBEDIT or another editor; do not use the Save Settings menu option.
 
 
     Keyboard Buffer and EEP's
     =========================
 
     EEP's nullify the keyboard buffer. The user must wait until the EEP has
     finished executing before pressing a key to move to another field. You
     cannot "type ahead" in a form. Multiple [Enter]'s are lost as soon as
     you reach a field with an EEP.
     3562, Fixed in 3.1C
 
     WORKAROUND:
     None, other than waiting for the EEP to complete.
 
 
     Required Lookups in Forms
     =========================
     In 3.1C, lookups that are customized to must succeed will always execute
     and return an error message as you enter a new row. This is different
     from 3.1B and earlier versions; they executed but did not return a
     message.  Now, when entering data using a form you will get a red bar
     error message and must press a key for each required lookup as you enter
     each table.
     3659, Fixed in 3.1C build 60J3.
 
     WORKAROUND:
     Don't require the lookups to succeed and use a Verify a value rule to
     require that the value exists before the data can be loaded.
 
 
     Insufficient Expression Space in Forms
     ======================================
 
     If you have computed columns in a table, and a same-table lookup defined
     on a form using that table, every time you call up a row with the same-
     table lookup the computed columns are evaluated and counted as
     expressions.  R:BASE has a limit of 100 expressions.  After calling up
     20 or so rows you run out of expression space for the form and get the
     error message "Insufficient space to process expressions."
     3652
 
     WORKAROUND:
     Exiting the form clears the expression space. When you get the error,
     just exit and then restart the form to enter the next set of data.
 
 
     Printer Control Codes in Labels
     ===============================
     If a printer control code is the only item located on a given line for a
     label, the line will not print. The User's Manual explains in Chapter 4,
     "Creating Reports and Labels," in a section titled "Adding a Blank Line,"
     that R:BASE automatically removes blank lines from labels. It tells you
     that if you want a blank line, you have to put text or locate a field on
     that line, otherwise it will be compressed out.
     3541
 
     WORKAROUND:
     Define a variable equal to (CHAR(255)) and locate that variable on the
     line you want to be blank.
 
 
     Labels and the Error Variable
     =============================
 
     LBLPRINT, the command to print labels from the R>, does not set the error
     variable to a non-zero value when no rows satisfy the where clause. It
     doesn't display the error message: "No rows exist or satisfy the
     specified clause" even though both messages and error messages are set
     on.
     366
 
     WORKAROUND:
     SELECT from the table/view the label is based on using the same WHERE
     clause to be used for printing the labels to check the error variable
     before printing.
 
 
     Locked columns in Browse/Edit
     =============================
     Locked columns or using the NOSCROLL option in Browse/edit does not
     always let you edit or view all the data when the last column partially
     fits on the screen. For example, using CONCOMP, EDIT empid=3 =noscroll,
     custid=noscroll, transid, transdate, netamount, tax, freight,
     invoicetotal FROM transmaster. Do a CTRL Right Arrow to get out of the
     locked region and try to tab over to the last column (invoicetotal). Only
     part of the column displays on the screen.  The cursor then wraps around
     into the non-scrolling region as you arrow through the field. You cannot
     get all the data to display even though chevrons display on the right
     side of the screen indicating more. TAB just takes you back to the
     leftmost non-scrolling column.
     3636, Fixed in 3.1C
 
     WORKAROUND:
     Reorder and/or resize the columns so that you don't have columns that
     only display partially on the screen. Or, remove the lock while viewing
     the data off the screen.
 
 
     Replacing Data in Browse/Edit
     =============================
     From the Browse/edit menu, choosing Edit and then choosing Replace all
     with..., and replacing all the values in a NOTE column, may cause your
     machine to hang i.e. the keyboard will stop responding.
     3653
 
     WORKAROUND:
     Use the UPDATE command from the R> to change all values in a NOTE column
     in a table.
 
 
     Views with Saved ORDER BY Clause
     ================================
 
     If you have a 3.1B or earlier view that was saved with a multi-column
     ORDER BY by clause (i.e. the view definition includes order by) you can
     pull it up in Browse/edit in 3.1C and view the data and go over to QBE,
     but as soon as you do anything in QBE, even check and uncheck columns,
     when you try to return to browse/edit you'll get the error "Correlation
     #T1 not found." If you do a Shift-F3 to look at the query, you'll see
     that QBE has translated the query to use T_1 as correlation names (the
     3.1C default) everywhere in the query except for the ORDER BY clause.
     That still uses #T1.  The original view definition is not changed, it
     still will show #T1 when you look at the view. If you try to save the
     view without first clearing the sort you'll get "Query expression error"
     and lose the view definition. If you first go into QBE and modify the
     view, you won't be able to get to the Browse/edit screen, you'll get
     "Correlation #T1 not found."
     3662, Fixed in 3.1C build 60J3
 
     WORKAROUND:
     Using 3.1C, Clear the sort in Browse/Edit and then replace it. You can
     then look at the data from the view and change the query.
 
 
     Network Name in RBASE.CFG
     =========================
 
     If there is more than one space between the keyword NAME and the user's
     network name in the RBASE.CFG file then that user is entered into the
     SERVER.SY5 file as NONE even though SHOW NAME will show the user's
     network name.
     3644
 
     WORKAROUND:
     Edit the RBASE.CFG file and be sure there is only one space between the
     keyword NAME and the users' name.
 
 
     CHOOSE from #VALUES
     ===================
 
     In version 3.1B or higher, CHOOSE FROM #VALUES if there are more than
     about 4000 values in the list to be displayed will hang your machine
     instead of giving you an out of memory error. In 3.1A, you would get an
     insufficient memory error message and then the menu would display as
     much data as it was able to process.
     3651
 
     WORKAROUND:
     Choose the data in smaller groups or SET RTVMCONV=640,128 (3.1A default).
     You will then get an insufficient memory error and some of the data
     selected will display.
 
 
     WHERE ... IN (list)
     ===================
 
     If you are comparing a column to a list of values using IN (list) and
     the column is text, and the list uses dotted variables for the values
     (e.g. colname IN (.v1,.v2,.v3) ), when the variable contains text longer
     than 4 characters, you'll get "No rows exists or satisfy the specified
     clause" even though there are rows that match one of the values.
     3649
 
     WORKAROUND:
     Use literal values instead of variables. When you use variables, R:BASE
     is only using the first 4 characters for comparison.
 
 
     DECLARE CURSOR and INSERT
     =========================
 
     Using INSERT INTO tbl2 (colx,coly, colz) SELECT colx,coly,colz FROM tbl1
     WHERE current of cursorname inside a DECLARE CURSOR loop will return
     "Internal error - Out of dynamic space."
     3631
 
     WORKAROUND:
     Since the SELECT ... WHERE CURRENT OF returns only the current row and
     only the columns you have included in the DECLARE CURSOR and these
     values have already been FETCHed, use INSERT INTO tbl2 (colx,coly,colz)
     VALUES .v1,.v2,.v3 using the variables from the FETCH command.
 
 
     Multi-user and Indexed Searches
     ===============================
 
     You will get the error "Disk problems.  Check disk and files" after
     about 4700 rows when using a WHERE clause to do a walkable indexed
     search to find 5000 or more rows and the database is on a network server
     with multi-user set on. For example, you are using BETWEEN on an integer
     column and specifying a range that would find more than 5000 rows.
     3642, Fixed in 3.1c
 
     WORKAROUND:
     SET MULTI OFF, use a smaller range for the search, or don't use indexes
     (put the values in the WHERE clause in parentheses).
 
 
     Date Sequence of YYYYMMDD
     =========================
 
     If your date sequence and format are set to YYYYMMDD you cannot load an
     ascii delimited file using LOAD tblname FROM filename; it returns COLUMN
      MUST BE A VALID DATE.
     3663
 
     WORKAROUND:
     Use the Import/ export utility to load the data or use a different date
     format and sequence, such as MMDDYYYY.
 
 
     Searching for Blanks in Data
     ============================
 
     WHERE colname CONTAINS ' ' doesn't work to find where a string contains
     a blank. It won't work even if you set a variable to a blank or to
     CHAR(32) and use that variable in place of the literal blank.  You can't
     compare a value to a blank (' ') using the CONTAINS operator, you'll
     always get 'No rows exist or satisfy the specified clause' even if the
     value does contain a blank. You can compare to a blank, however, with the
     equals operator, WHERE colname = ' '.
     3609
 
     WORKAROUND:
     Use the equals operator if the value is equal to blank.   Use the SLOC
     function to find out if the field contains a blank. For example, WHERE
     (SLOC(colname,' ')) >  0.  SLOC returns 0 if it does not find the
     specified character(s) in the string.
 
 
     Bogus Data when Printing
     ========================
 
     It is possible to see bogus data when you print a report or select from
     a view. It must be the second time you access the view, and you usually
     have a different sort condition on the second query. The bogus data
     displays because of the combination of the row width, number of rows
     selected by the view and how the data is placed in the pages of the
     scratch files. Sometimes high order ascii characters will display on
     the report, but when you look at the data in the tables it is fine.
     3650
 
     WORKAROUND:
     Disconnect and connect the database between commands to remove the old
     scratch files.
 
 
     Autonumbering NUMERIC Columns
     =============================
 
     From the menus, when you initially autonumber a NUMERIC datatype column
     with a scale of 0, the first row is numbered correctly but all succeeding
     rows have the number left justified. The rows are numbered from 1 through
     9 then -0 then start over with 1. This pattern is repeated for all the
     rows in the table.
     3641
 
     WORKAROUND:
     Modify the autonumber definition from the menus, choose to renumber the
     rows and it will correct itself for all rows. Or, use the AUTONUM command
     from the R> and it will be correctly defined. Alternatively, redefine
     the column to INTEGER.
 
 
     Page Number not Incrementing in Reports
     =======================================
 
     The page number in reports, #PAGE, does not increment in a report unless
     a page header line is marked. The page number prints as 1 on each page.
     3623
 
     WORKAROUND:
     Add a PH line (it can be blank) to the report definition, the page
     number, #PAGE, then increments correctly on each page.
 
 
     Correlation Names in Views
     ==========================
 
     If you save a view in 3.1C it is saved with T_ as a correlation name
     instead of #T.  If you had a report based on the view the report will
     now have errors because it referenced the columns as #T in the Layout
     and as breakpoints.
     3660
 
     WORKAROUND:
     Run the command file REPFIX.RMD that is included with R:BASE 3.1C build
     60J3.  It will modify the report structure to reference T_ instead of
     #T. Alternatively, you can manually edit either the view or report
     structure so that they continue to match with respect to correlation
     names.
 
 
     Reports on Views with an ORDER BY
     =================================
 
     In 3.1C, if your report is based on a view and you print it using an
     explicit ORDER BY clause, and your ORDER BY clause does not reference
     the column names exactly as they are in the view (with correlation names,
     #T or T_), R:BASE does not allocate a correct row length for the scratch
     buffer.  Then when rows are accessed you'll get errors. You may get "Out
     of dynamic space" or the report may just print incorrect data or your
     machine may hang. Application Express does not use correlation names
     when you choose to sort a report based on a view, neither does Quick sort
     from the menu.
     3661, Fixed in 3.1c Build 60J3.
 
     WORKAROUND:
     Include the correlation names in the ORDER BY clause, or add a dummy
     note column to the view.
 
 
     Sub-Select and Disk Problems
     ============================
 
     When you are using a sub-select and the column in the sub-select that
     creates the list is text, and the column contains a blank value (a row
     is blank, not null), you will get the error "Disk problems. Check disk
     and files" from the sub-select when it reaches that blank value.
     3654
 
     WORKAROUND:
     Replace the blank value with a null or an actual data value. Do not leave
     the column in the sub-select blank.
 
 
     Copying Tables
     ==============
 
     In a multi user situation, MULTI ON and the database is on the network
     server, choosing to copy a table through the menu can damage your SYSINFO
     table. If the original table has a description defined or has columns
     with long names (names > 8 characters) and the original table name is 8
     characters or less, and you copy it to a name with more than 8 characters
     you may get 'Invalid or missing SYSINFO table' when you try to modify the
     new table. When you leave Info Create/modify you may get "Insufficient
     memory to continue this function" and you'll be returned to the R>, not
     the menus. If you look at the data in the SYSINFO table for the new table,
 
     you'll see a row has been added for the new table name but not for any of
     the columns.
     3626
 
     WORKAROUND:
     SET MULTI OFF before performing any database structure modifications on
     a network database. You can PACK the database and the new table name is
     okay and you'll no longer get errors about the SYSINFO table, but all
     the column names in the new table have been truncated to 8 characters.
     Rename the columns to the desired long name.
 
 
     GRANT/REVOKE and Views
     ======================
 
     When you DROP a view or a table, the permissions GRANTed on that table
     or view are removed. This can have unexpected repercussions when
     modifying views. When you modify a view, the existing view is 'dropped'
     and the new definition added under the same name. Thus, any GRANTed
     permission on a view is removed after modifying the view.
     3605
 
     WORKAROUND:
     GRANT permissions again on views after modifying them.
 
 
     UNNAMED Columns from PROJECT
     ============================
 
     The PROJECT command allows you to use SELECT functions in the USING
     clause. For example, PROJECT table2 FROM table1 USING col1,col2,SUM(col3)
     GROUP BY col1,col2. But the resulting table is created with column(s)
     named UNNAMED wherever a function is used. Using more than one function
     in the PROJECT will result in multiple UNNAMED columns in the result
     table, a violation of the data dictionary rules.
     3633
 
     WORKAROUND:
     Modify the table through the menus to give the UNNAMED columns names so
     the table can be used in reports and the columns used in WHERE clauses.
     You cannot use the RENAME or REDEFINE commands to change the column names.
 
 
 
     Renaming Tables
     ===============
 
     In a multi-user situation, MULTI ON and the database is on the network
     server, if you rename a table from lower case letters to upper case
     letters or vice-versa (customer to CUSTOMER or CUSTOMER to customer)
     and there are rows in the SYSINFO table for that specific table (i.e.
     autonumber, long column names, etc) , the system seems to get stuck in
     a loop and will run until it uses all the available disk space. You end
     up with errors in your database in the SYSINFO table.
     3620, Fixed in 3.1C
 
     WORKAROUND:
     SET MULTI OFF before performing any database structure modifications on
     a network database.
 
 
     Quick Select and Dates
     ======================
 
     When choosing Quick Select, or using CHOOSE...#WHERE you cannot use
     #DATE as a comparison value for a column. You'll get the error message
     " must be compared to date values."
     3581
 
     WORKAROUND:
     Enter today's date as a literal value.