                Welcome to dBASE 5.0 for DOS
            -------------------------------------

This file contains important, late-breaking information about
dBASE 5.0 for DOS, including revisions to the documentation.

TABLE OF CONTENTS
-----------------
1. HOW TO CONTACT BORLAND
2. RELEASE NOTES
3. DOCUMENTATION UPDATE


1. HOW TO CONTACT BORLAND
-------------------------
The Borland Assist program offers a range of technical support
plans to fit the different needs of individuals, consultants,
large corporations, and developers. To receive help with this
product, send in the registration card and select the Borland
Assist plan which best suits your needs. North American customers
can register by phone 24 hours a day by calling 1-800-845-0147.
For additional details on these and other Borland services, see
the Borland Assist Support and Services Guide included with this
product.

2. RELEASE NOTES
----------------

Disk space requirements (in megabytes)
--------------------------------------
12.5 to install all options:
dBASE               8.5
Samples             1
CUA samples         1.5
Template language   1
Utilities            .5

An additional 5MB is required during installation only.


ADDUSER4.EXE
------------
Beginning with this version of dBASE, serialization is no longer
used to track user counts. For this reason, ADDUSER4.EXE is no
longer distributed with the product. To increase user counts,
order additional licenses (available in 1 and 10 user versions).
Be sure to read the  No-Nonsense (TM) License Statement.

Installing dBASE for DOS on a network
-------------------------------------
Chapter 1 of "Getting Started" suggests the following settings in
the CONFIG.SYS file:

FILES=255
BUFFERS=15

If the workstation is running under a network shell, the number
of files specified in the "files=" parameter in the CONFIG.SYS
plus the number of files specified by the network (Novell "file
handles=" in NET.CFG) cannot exceed 255. This problem does not
occur when using the Novell .VLM drivers.

Using dBASE 5.0 with Novell NetWare 3.11
-----------------------------------------
Running dBASE 5.0 on a Novell 3.11 server may cause "Record in
use by another" when dBASE 5.0 attempts to place 500 or more
record locks on the server. The server default for MAXLOCKS is
500 and may return a message of "record lock threshold exceeded"
when this maximum is reached. If additional locks are requested
and network resources run low, the network may lock up. This
problem does not occur on a Novell 3.12 server.

IBM LAN Server 3.0
------------------
If problems arise while using this network configuration, modify
the DOSLAN.INI file as follows:
NBS: 4K
BBS: 5K

DEBUG
-----
If you debug a program containing event handlers for CUA objects,
and later want to run that program or any other program that
contains CUA objects, without invoking the debugger, SET TRAP OFF
(in the Command Window) before running the program.

Using Test mode in the Form Designer
------------------------------------
Selecting "Test mode" while in the Form Designer temporarily
resets event handlers for the form.  Selecting Save and exit
while still in "Test mode" will save the form without including
event handlers that may have been present when the form was in
Design mode.  Always return to "Design mode" before saving a
form.

Trapping Keys in UI objects
---------------------------
The ON KEY LABEL command is designed for dBASE IV style edit and
browse screens.  To capture keystrokes in a Form, Browse, Editor,
Entryfield, or Field object, use the KEY event handler.


Using dot syntax with @...GET/READ, ACCEPT, and INPUT commands
--------------------------------------------------------------
Properties associated with an object should not be used as memory
variable input for the @...GET/READ, ACCEPT, and INPUT commands.
These properties are evaluated and set using dBASE 5.0 dot
syntax. Use of object properties with the @...GET/READ, ACCEPT,
and INPUT commands will result in a syntax error. To change or
display the value of a property using these commands,
store/retrieve the value to/from a memory variable.

Example:
mVar = MyForm.Text
@ 2, 2 GET mVar
READ
MyForm.Text = mVar

Using the SAVE TO and RESTORE FROM commands
-------------------------------------------
The SAVE TO command used for saving memory variables to a file
does not include object properties in the .MEM file. If the value
of an object property needs to be saved to a memory file, store
the value into a memory variable which can then be saved to a
memory file. The object property can then be retrieved by
RESTORING the memory variable and replacing the object's property
with the value of the memory variable.

Example:
mVar = MyForm.Text
SAVE TO mVarFile ALL LIKE mVar
...
RESTORE FROM mVarFile ADDITIVE
MyForm.Text = mVar

Sample DOS Form files
---------------------
Many of the sample DOS Form files (DFM) located in the CUA
Samples directory may not be easily modified using the Form
Designer. These forms were created using memory variables and
database files that may not be active when attempting to edit the
form. You can easily run any of the sample form files from the
command window.

Example:
SET DIRE TO CUA_SAMPLES
DO ASCIIC

Selecting Program|Run with Arguments
------------------------------------
Entering values into Program|Arguments applies to all programs
executed with Program|Run. If you select Program|Run while
undeclared variables still exist in Program|Arguments, a
"variable not found" error will occur. Remove or initialize
undeclared variables entered in Program|Arguments before
selecting Program|Run.

Sorting Dates in a LISTBOX or COMBOBOX
--------------------------------------
When using an array to list dates in a LISTBOX or COMBOBOX, use
the ASORT() function rather than the SORTED property to display
these dates in chronological order.  The SORTED property, when
set to .T., will order the dates as character expressions.

Example:
The dates {04/20/68} and {02/15/94} appear as:
02/15/94
04/20/68
since the character string "02" comes before "04".

The ASORT() function will sort an array containing dates by
chronological order.

The dates {04/20/68} and {02/15/94} appear as:
04/20/68
02/15/94

Displaying a Pick Letter for a Text Object
------------------------------------------
When using either "&" or delimiting with "~" to designate a pick
letter for a Text object such as,
MyForm.Text0bj.Text = "&Lastname" or
MyForm.Text0bj.Text = "~L~astname"
the HEIGHT property for the Text object must be set to 1.

Form Designer, View|Order Objects menu item
-------------------------------------------
By default, RECTANGLE objects placed on a form are the first
objects defined when the code is generated. This is because
rectangles cover (hide) objects defined before them. If you
decide to use the menu option View|Order Objects in the form
designer to reorder objects on a form that contains rectangles,
be sure to leave the rectangles at the top of the list.
Otherwise, some objects on the form may not be visible. If this
happens, go to the Order Objects list and move rectangles back to
the top.

Distributing your dBASE applications
------------------------------------
In order to run an application at a client site, you must
either make FORMRUN.DBO available to the .EXE or link FORMRUN.DBO
into the .EXE using the Project Manager. FORMRUN.DBO can be
linked in by adding it to the list of files in the Project
Manager.

Creating an Executable Program
------------------------------
To associate the dBASEDOS.INI file with an executable,
the .INI file must have the same name as the executable file.

Example:

MyApp.EXE will read a MyApp.INI file

Extended memory
---------------
If you don't have 3 MB of extended memory allocated for dBASE,
you may encounter an error message. For example, if you are using
a RAM drive or if you have DOS loaded in high memory, not all of
the 3MB of extended memory will be available for dBASE.

If necessary, you can reduce the amount of extended memory that
dBASE requires by editing the PhysMin statement in the
DBASEDOS.INI file as follows:

change
;PhysMin=3M
to
PhysMin=2M

Doing this reduces the amount of extended memory available to
dBASE and will decrease performance.

Caution: Do not reduce PhysMin to less than 2MB.

SMARTDrive and VMM
------------------
If you are using dBASE with VMM, using SMARTDrive is not
recommended.

EMM386.EXE
----------
Don't allocate memory to VCPI.

Editing memos in multiple objects
---------------------------------
If you'd like to edit the same memo field via two different
objects on the same computer, load SHARE.EXE and use the database
in two different workareas using USE <filename> AGAIN.

Numeric keypad
--------------
On some enhanced 101 keyboards, the numeric value of the arrow
key (for example, 8 instead of up arrow) is interpreted by the
BIOS as input. If this occurs on your system, you can modify the
dBASE keystroke handler by setting an environment variable,
SET NOINT9=T
before starting dBASE.

Novell DOS 7.0
--------------
A problem has been reported with using Novell DOS 7.0
EMM386.SYS device. If you are loading this device and
setting the /DMPI parameter ON, attempting to load dBASE
will cause system reboot. To resolve this problem, please
follow one of the suggestions listed below:

- Run the Novell DOS 7.0 SETUP program and disable the
DPMI option. This approach will permanently disable the
DPMI option. For further information about using the SETUP
program, please consult the Novell DOS 7.0 manual.

- You can temporarily disable the DPMI option prior to
running dBASE, and enable that option after exiting dBASE.
To temporarily disable the option, enter the following
command in DOS prior to running dBASE:

DPMI OFF

To re-enable the option, enter the command DPMI ON after
exiting dBASE. Note that Novell documentation suggests
issuing the command DPMI=ON|OFF, but that will not work.

- You MAY be able to run dBASE with DPMI option enabled,
if you issue the following command prior to running dBASE:

SET DOS16M=VCPI

If this setting remedies the problem, include the command in your
AUTOEXEC.BAT file.


3. DOCUMENTATION UPDATE
-----------------------
"Getting Started"
- Page  7, Hardware and software requirements: amount of required
  disk space is incorrect. See "Disk space requirements" above.
- Page 30, FILES: the maximum number of files that can be opened
  at once is 250.

"Language Reference"
- SAVE TO doesn't save CUA objects
- ColorEntryScrollBar property removed.
- ColorListSelected property is a reserved word.
- RangeMax default is .F.
- ReadModal() always returns a logical value of true if the form
  is successfully opened, regardless of form.Submit().

- DEFINE RADIOBUTTON revised:
To determine which field of the current database the group
of radio buttons affect, use the DataLink property. When
establishing a radio button group, the DataLink property
must be declared after the Group property. The data type of
the DataLink property must be a character value, otherwise a
Datatype mismatch error will occur. Assigning a DataLink to
one button sets the value of all radio buttons in the group.
If more than one DataLink is assigned, the last DataLink
sets the value of all radio buttons.

When a group of radio buttons is defined without DataLink,
setting the Value property of a radio button to true makes
it the default selection. If the Value property is not set
and the group of radio buttons is defined without DataLink,
the value of the first radio button will default to true.
When the value of a radio button in a group is set to true,
the values of all other radio buttons are set to false. If
the DataLink field has a value that isn't represented by any
radio button in the group, the first radio button is
highlighted.

To determine which value the radio button inserts into the
field, use the Text property of RADIOBUTTON. The Text
property is case sensitive and that hot key characters (such
as ~ or &) are stripped out when written to the database.

In the following example, selecting the SALES radio button
and closing the form places the value "SALES" in the
"DEPARTMENT" field of the current record. Selecting the
EXECUTIVE radio button and closing the form places the value
"EXECUTIVE" in the "DEPARTMENT" field of the current record.

USE Employee
DEFINE FORM fDept
DEFINE TEXT txDept OF fDept AT 1, 5 ;
     PROPERTY ;
          Text            "Department"

DEFINE RADIOBUTTON rbSales OF fDept AT 2, 5 ;
     PROPERTY ;
          Text            "~S~ALES", ;
          Group           .T., ;
          Width           15

DEFINE RADIOBUTTON rbExec OF fDept AT 3, 5 ;
     PROPERTY ;
          Text            "~E~XECUTIVE", ;
          Group           .F., ;
          Width           15, ;
          DataLink        "DEPARTMENT" && Sets DataLink
                                       && for both radio
                                       && buttons in group

lVoid = fDept.ReadModal()   && Display form for current
                            && record
lVoid = fDept.Submit()      && Write the value for the radio
                            && button group

------------------------------//---------------------------------

- Save() method added. SaveFile property revised:

Save()

A method that saves an editor object file to disk.
Syntax
<object reference>.Save()

Property of Object
EDITOR

Usage
If the DataSource and SaveFile values are blank, then Save()
displays the "Save As" dialog box to prompt the user for a new
file name. If the user selects a new file, the DataSource is
changed to the new file name and the file is written to disk.
If the file already exists, the user is prompted to Overwrite
regardless of SET SAFETY. If Overwrite is selected, the
DataSource is changed and the file written. If Cancel is selected
from the Overwrite dialog or no file is selected from the Save As
dialog box, then the DataSource is untouched and the file is not
saved. The Modified flag is untouched.

Example
In the following example, the untitled editor in the form is
saved to a file named NOTES.TXT when the editor contents are
changed and the user clicks the Save pushbutton.

DEFINE FORM fName FROM 0,0 TO 15, 75
DEFINE EDITOR eEdit of fName FROM 1,1 TO 6, 50
DEFINE PUSHBUTTON pbSave OF fName AT 8, 20 ;
     PROPERTY ;
     Text  "&Save", ;
     Width  10, ;
     OnClick  SaveEdit, ;
     GrabFocus  .F.

? fName.READMODAL()
lVoid = fName.RELEASE()
RETURN

PROCEDURE SaveEdit
     IF Form.eEdit.Modified()
          Form.eEdit.SaveFile = "Notes.txt"
          lVoid = Form.eEdit.SAVE()
     ENDIF
RETURN

See also
SaveFile

------------------------------//---------------------------------
SaveFile
Instructs the Save() method to save the Editor buffer with a file
name different from the DataSource.

Syntax
<object reference>.SaveFile <expL | expC>

Default
The default for SaveFile is "".

Property of Object
EDITOR

Usage
If the Datasource file name is different from the SaveFile file
name, the Save() method saves the editor buffer with the SaveFile
name, resets the DataSource to the SaveFile name, and then sets
the value of SaveFile to "".
If the Datasource is set and SaveFile is "", the Save() method
saves using the DataSource value and leaves SaveFile as "".
If DataSource is not set (an Untitled editor) and SaveFile is set
to a file name, the Save() method saves the Untitled editor to
the SaveFile name value. Datasource is set to the SaveFile value
and then SaveFile is set to "" .
Attempting to set SaveFile for a MEMO datasource causes a
"Property not supported in this context" error message.
You can use the SaveFile property in the DEFINE statement. Use
dot reference notation to do the following:
- Set the value of the property.
- Query the property's value.
- Assign the property's return value to a variable.

See also
Close(), DEFINE EDITOR, Release(), Save()

