===============================================================================
                        R:BASE 4.5++ README.TXT
===============================================================================
Contents:

    1. Installation
    2. General Usage
    3. Environment, Performance, and Integrity
    4. Programming Notes
    5. Converting From R:BASE Versions
    6. Copyright Acknowledgments

This file contains important information which supplements the materials 
in your R:BASE documentation.

Please note the following:

o   Unless otherwise specified, this information in this file does not apply 
    to R:BASE versions prior to the 4.5++ version.

o   The following ASCII text files provide additional information:

    MEMORY.TXT     Memory usage and suggested configurations
    DOCS.TXT       Corrections to R:BASE documentation
    WINDOWS.TXT    Running R:BASE 4.5++ under Microsoft Windows 3.1

o   Remember to have current backup copies of your system configuration
    files such as CONFIG.SYS and AUTOEXEC.BAT

===============================================================================
1. INSTALLATION

CD ROM Drives------------------------------------------------------------------

If your computer has an attached CD ROM drive, R:BASE installation cannot 
proceed unless there is CD inserted in the drive with the door closed.

===============================================================================
2. GENERAL USAGE

LJS Function-------------------------------------------------------------------

The LJS function handles NULL values differently in the 4.5++ version of 
R:BASE. In prior versions, the function would not preserve spaces when the 
value in the LJS function was NULL. Spaces are preserved in 4.5++ version of 
R:BASE. For example, see the different results returned by the following 
function when column1 contains a NULL:

       (LJS(column1,30) + column2)

     4.5 result                           4.5++ result
     -----------------                    --------------------
     one               aaa                one                  aaa
     two               bbb                two                  bbb
     ccc                                                       ccc
     four              ddd                four                 ddd

Column1 contains a NULL on row three; 4.5++ preserves the blanks from the 
LJS function. If you have an existing expression that used this feature and 
now displays differently, enclose the LJS function inside an IFEQ function to 
test for NULL. For example, replace the above expression with the following 
to return the same result as earlier versions of R:BASE:

   (IFEQ(column1,NULL,column2,(LJS(column1,30 + column2))

WRITE Command------------------------------------------------------------------

The WRITE command now operates differently when wrapping data that extends 
beyond column 80. When using the "AT row/column" option to display a string 
of text at a specific location, R:BASE 4.5++ does not automatically wrap the 
text to the next line if it extends beyond column 80. The part of the string 
that extends past column 80 is lost. This was changed to prevent the screen 
scrolling when writing strings on line 24 or 25.

If you need to write a string of text longer than 80 characters, change a 
single WRITE command to be two commands, or do not use the "AT 
row/column" option.
        
Autonumbering and Constraints--------------------------------------------------

If there is a column defined as NOT NULL UNIQUE using a constraint and if that 
column is AUTONUMBERed, then if the user attempts to renumber that column, 
R:BASE 4.5++ will detect a constraint violation and prevent the update.

Rule Violations ---------------------------------------------------------------

R:BASE now highlights the first field in a row of imported data if there was 
a rule violation, instead of highlighting the exception value that caused 
the violation.

The rule message displays at the bottom of the screen for your reference. 
To correct a rule violation exception, you must first move the cursor to the 
field that is referenced by the rule message. Then edit the data and load 
exceptions as normal. 

Printing Labels----------------------------------------------------------------

When adding printer control codes to labels, you must also locate a 
variable that is set to (CHAR(255)) on that line. 

Columns with Picture Format----------------------------------------------------

If a column contains numbers 1 through 99, and you want to setup a 
picture format of 00 that will pad numbers under 10 with a 0 (such as 01, 
02, 03 and so on), then you must locate 3 spaces for the column to 
accommodate any negative signs. If you only locate 2 spaces, numbers 
below 10 are not padded and numbers 10 and above display as "**".

===============================================================================
3. ENVIRONMENT, PERFORMANCE, AND INTEGRITY

Running R:BASE for DOS under OS/2 2.0 or Higher--------------------------------

Use the following DOS settings in the Workplace shell to run RBASE 4.5++ 
(32-bit) in a DOS box under OS/2 2.0 or higher:

1.  After selecting a DOS box icon, click the right mouse button on that icon 
    and choose SETTINGS.
2.  Click the SESSION tab using the left button, and then click on the DOS 
    SETTINGS button.
3.  Make sure that the DPMI_DOS_API setting is set either to AUTO or to 
    ENABLED.
4.  Make sure that the DPMI_MEMORY_LIMIT is set to at least 5 (MB), any 
    less may not work.
5.  If you elect to run R:BASE in a DOS Window box, then you must 
    deactivate the R:BASE sign-on screen. To do this, use the -R option on the 
    R:BASE command line when starting up the 4.5++ version of R:BASE.

Database File Protection Under DOS---------------------------------------------

The DOS file system does not have the ability to prevent two concurrent 
DOS programs from overwriting the same file at the same time, when that 
file exists on a non-network local drive such as the C: drive. R:BASE 4.5++ 
prevents this kind of file collision in the following manner (the 
following instructions assume you are running the 4.5++ version of 
R:BASE, DOS, and your database is on a local drive):

1.  If your database is CONNECTed, and if you ZIP to an external 
    application (like GATEWAY, CODELOCK, VIEWER, or one of your own 
    applications), R:BASE automatically sets the file attributes for the 3 
    database files to READ-ONLY. This prevents the ZIPped application from 
    concurrently writing over the database.
2.  When control returns to R:BASE (you return from the ZIPped 
    application), R:BASE 4.5++ automatically resets the file attributes to 
    READ-WRITE.
3.  If, for any reason, your application fails to return to R:BASE, then your 
    database files remain set as to READ-ONLY preventing you from 
    reconnecting to your database until you reset the file attributes.
4.  To reset the file attributes, type the following DOS command at the 
    DOS prompt (replacing 'dbname' with the name of your database):
   
                ATTRIB -R dbname.RB?

This problem does not occur if your database is located on a network 
drive and if you're not connected to a database when you invoke an external 
program. This problem can also be avoided by using ZIP RETURN or ZIP ROLLOUT 
instead of ZIP because R:BASE closes all database files.

Disk Caching in Expanded Memory------------------------------------------------

When running a disk cache program with Windows and R:BASE 4.5++, 
be sure to set the cache up in extended memory, not expanded memory.

Using a Read-Only Drive--------------------------------------------------------

If you attempt to start R:BASE from a read-only drive (such as a network 
drive which has read-only privileges), you must set a DOS environment 
variable, TMP, to a path on a drive with read/write access.  

For example, if drive F: on your computer is a read-only drive containing 
the R:BASE executables, and if you are currently logged on to drive F:, 
then you must first issue the following statement before typing RBASE at 
the DOS prompt.

     SET TMP=c:\ 

If your default drive is a drive with read/write privileges, then you do 
not have to use the TMP environment setting.

Stack Overflow errors and Math Co-processors-----------------------------------

On a computer with a math co-processor, if you receive a 'Stack Overflow' 
error message, add the following line to your AUTOEXEC.BAT file:

    SET NO87=1

===============================================================================
4. PROGRAMMING NOTES

TIMEOUT Setting----------------------------------------------------------------

A red bar "Press any key to contine" message will not timeout when TIMEOUT is
set. This includes messages from PAUSE, HELP and RULE violations. 

STATICDB Setting---------------------------------------------------------------

If you create any new Forms, Reports or Labels on temporary tables or views, 
when STATICDB is set ON, these objects remain in the database even though the 
tables and views go away when you disconnect from the database. You must 
remove them manually if you want them to be deleted from the database.

Also note that if you have STATICDB ON, Application Express deletes any 
temporary tables and views because it always performs a database 
disconnect when started.

Printer Fold Table in RBASE.CFG------------------------------------------------

The documentation for editing the printer fold table is wrong. The fold 
table tells the printer how to print every character; if the printer does not 
normally print the character, the fold table tells it what characters it should 
combine to create the desired character.

For example "FOLD   131 97 BS 94" tells the printer to create character 
131, " ," by using the string that follows. If your printer can actually print 
" " without combining characters, then edit that line to say "FOLD   131 
131 00 00".

Do NOT delete any lines in this table.


The Do's and Don'ts of WHILE LOOPS and Variables-------------------------------

1.  DON'T clear your WHILE variable(s).
2.  DON'T define variables within your WHILE loop. Define them only 
    outside of the loop because values can change within the loop.
3.  DO adhere to the syntax rules for the SWITCH statement by making 
    sure that the argument for the SWITCH statement is an expression. Prior 
    versions of R:BASE were lax on this requirement. R:BASE 4.5++ now 
    enforces this requirement.
4.  If you issue multiple SET VAR commands on a single command line, 
    then those variables will NOT be optimized. If you want to increase the 
    speed for that loop, you should put those SET VARs on separate lines.

User Defined Functions (UDFs) - Parameters-------------------------------------

When a parameter is passed to a User Defined Function (UDF) that 
contains a leading tab, a space character, or imbedded spaces, the 
parameters to the UDF need to be explicitly quoted with the double-quote 
character ("). 

===============================================================================
5. CONVERTING FROM EARLIER R:BASE VERSIONS

Transaction Processing---------------------------------------------------------

When processing transactions (TRANSACT setting is ON) with a column definition 
that includes a NOT NULL UNIQUE constraint, an UPDATE TABLE SET COLUMN = 
(COLUMN + 1) causes a temporary conflict and therefore a constraint violation.

In a change from R:BASE 4.0a, the ALTER TABLE command cannot be used when the 
TRANSACT setting is ON. If you attempt to do so, you will receive a message 
"Command not allowed in transaction mode." If you must alter a table structure, 
you must do it when the R:BASE TRANSACT mode is set to OFF.

In 4.0a, R:BASE used to temporarily set the rules off and allow an update. 
In the 4.5++ version of R:BASE, constraints are meant to enforce data 
integrity rules and updates are verified row by row. If there is a conflict, 
R:BASE 4.5++ stops the process and rollsback the transaction.

Correlation Names in VIEWS-----------------------------------------------------

When you save a view using QBE (Query By Example), R:BASE gives 
each table an alias, also called a correlation name. In version 3.1B and 
earlier, the alias used was #T. In version 3.1C the alias was changed to 
T_. It was changed to provide compatibility with other SQL-based systems.

Views that have been modified and saved in 3.1C or later may no longer work 
with reports created in earlier versions. When you print the report you may 
get the error message "-ERROR- Undefined break column or variable name." 
Modifying the report gives you the same error message because the table alias 
in the report no longer matches the table alias in the view.

To correct this, first CONNECT the database then run the R:BASE command file 
REPFIX.RMD which will update the table alias in the report. To run the command 
file, enter "RUN REPFIX.RMD" at the R> prompt and then enter the report to 
correct. You need to run the command file again to correct additional reports.

===============================================================================
6. COPYRIGHT ACKNOWLEDGMENTS

Microrim and R:BASE are registered trademarks of Microrim, Inc.
WEMU387.386 (c) 1991-1992, WATCOM Systems, Inc.
DOS4GW.EXE (c) 1991-1992, Rational Systems, Inc.
Novell and Netware are registered trademarks of Novell, Inc.
OS/2 2.0  and OS/2 2.1 are registered trademarks of IBM, Inc.
Instalit is a registered trademark of HPI, Inc.
Windows is a trademark, and Microsoft and MS-DOS are registered 
    trademarks of Microsoft Corporation.

END OF FILE ===================================== Thank You for Choosing R:BASE
