             WELCOME TO PARADOX 5.0 FOR WINDOWS
             ----------------------------------

Thank you for purchasing Paradox 5.0 for Windows.
This file contains important information that
supplements and supersedes information in the online
and print documentation.

If you encounter any problems installing,
configuring, or working with Paradox, refer to this
file for information.

TABLE OF CONTENTS
-----------------

1. Installation
   - Settings
   - Coaches System Requirements
2. If You Need Technical Support
3. Compatibility Issues: Moving Applications to 5.0
4. Tips and Troubleshooting
   - Workgroup Desktop
   - Table Repair Utility (TUTILITY)
   - SQL
   - International Issues
   - Import/Export
   - General
5. Documentation Corrections


1. INSTALLATION
---------------
- The Install program will not run correctly if your path
  statement meets any of the following conditions:

  - You have used SUBST to rename the drive your WINDOWS
    directory is on, and you give the path to your WINDOWS
    directory using the substituted drive letter.
  - You've mapped your WINDOWS directory to a network drive
    using MAP ROOT.
  - You have included a directory path that does not begin
    with a drive letter.

- When running Workstation Install, note the following
  points to ensure that the workstation can find all the
  executables it needs:

  - The installation of Paradox to the network that
    precedes the Workstation Install is responsible for
    placing all required executable files on the network.
    Workstation install confirms that the Paradox and IDAPI
    directory paths you enter contain copies of Paradox and
    IDAPI, but does not update older versions in those
    directories.

  - If a workstation has a local copy of IDAPI, you can
    over-ride the Workstation Install default to point to
    that directory, and Workstation Install will update
    that copy of IDAPI if necessary.

  - Workstation Install offers to install the Workgroup
    Desktop locally, whether you installed it on net or
    not.

  - If the workstation also gets Windows off the net, you
    must copy certain OLE 2.0 files and other files to the
    net Windows directory. These files include those listed
    in the "Microsoft Windows OLE 2.0" section of Appendix
    A of the User's Guide, plus
       NWCALLS.DLL
       BWCC.DLL
       BOLE16.DLL
       MULTIHLP.DLL

- If you install dBASE for Windows after Paradox for
  Windows, the associations for the .DB, .DBF, and .QBE
  extensions will be set in WIN.INI to open these files in
  dBASE for Windows. If you install Paradox last, they will
  be set to open the files in Paradox. You can edit your
  WIN.INI file to associate these files with either
  product.

SETTINGS
- The SHARE.EXE command (in either your AUTOEXEC.BAT
  file or your CONFIG.SYS file) should include these
  optional parameters:

  SHARE /F:4096 /L:400

  The /F parameter allocates file space for the DOS
  storage area used to record file-sharing
  information. The default value is 2048. The /L
  parameter sets the number of files that can be
  locked at one time. The default value is 20.

- The following note applies to Windows 3.1, Windows
  for Workgroups 3.1 and Windows for Workgroups 3.11:

  - With Novell NetWare the number of file handles is 40 by
    default. Microsoft recommends that this value be raised
    to 60. In your NET.CFG or SHELL.CFG file you should
    modify or add the following line:

      FILE HANDLES = 60

  - It is recommended that you modify your CONFIG.SYS file
    with the following:
  
      FILES = 60
  
    60 is the suggested minimum.

  - SHELL.CFG is used with NET3.COM, NET4.COM, and so on.
    NET.CFG is used with NETX.COM. If the appropriate .CFG
    file does not exist, it can be created in the root
    directory of the user's boot drive with any plain text
    editor or word processor used in non-document mode.

- Paradox 5.0 uses a database engine called IDAPI
  (called ODAPI in previous releases of Paradox) to
  access dBASE, Paradox, and SQL tables. The IDAPI
  configuration is stored in IDAPI.CFG. Paradox
  merges your ODAPI settings with IDAPI.CFG.

- In previous versions, the ODAPI directory needed to
  be added to the PATH. You do NOT need to add IDAPI
  to the PATH.

- If you will be running Quattro Pro for Windows
  version 5.0 or earlier (which uses ODAPI)
  concurrently with Paradox, set LOCAL SHARE to TRUE
  in the IDAPI Configuration Utility's System Manager
  (System page). If you won't be running these
  products concurrently, and you are not running on a
  peer-peer network requiring local share to be on,
  don't run with local share; it will slow down
  performance.

COACHES SYSTEM REQUIREMENTS
- The minimum system requirements for launching and
  using the Paradox Coaches are:
    Video Resolution: VGA (640 x 480) or higher
    Display:          Grayscale or at least 16 colors
    Mouse:            Required


2. IF YOU NEED TECHNICAL SUPPORT
--------------------------------
- If you purchased Paradox 5.0 for Windows as a stand-
  alone product, refer to the "Borland Assist Support
  and Services Guide" included in your package for
  information about contacting Borland Technical
  Support.

- If you purchased Paradox 5.0 for Windows as part of
  the PerfectOffice suite, you must get technical
  support from WordPerfect Technical Support at one
  of the following phone numbers:
  
    WP support classic support.....(800) 861-2725
    Priority credit card number....(800) 861-2722
    Priority 900 support...........(900) 555-5020


3. COMPATIBILITY ISSUES: MOVING APPLICATIONS TO 5.0
---------------------------------------------------

CREATING TABLES IN AN OPEN METHOD
- A Paradox 1.0 or 4.5 form that creates its own
  bound tables during the Open method will fail to
  run if the form includes calculated fields that
  refer to fields in the tables. The failure occurs
  as Paradox attempts to recompile the form, into the
  new Paradox version. The compile process requires
  knowledge of a table's structure, and the Open
  method can execute only after the compile process
  is complete. It is recommended that you create the
  tables interactively before opening the form. Once
  the form has been opened and saved in Paradox 5.0,
  the problem will not reoccur as long as the form is
  opened only in Paradox 5.0.

DATATYPE PROPERTY ON A NUMBER FIELD
- A Number field's Datatype property now returns a
  value of "NUMBER"; in versions 1.0 and 4.5 it
  returned "NUMERIC". The workaround is to change
  your source code to reflect the new returned value.

FIELD OBJECT NAMES IN A TABLE FRAME OR MULTI-RECORD
OBJECT
- In some circumstances, you must now refer to a
  Field object in a table frame or multi-record
  object by including the table frame or multi-record
  object name. For instance, if a table frame is
  named CUSTOMER and the field it contains is called
  CUSTID, the code

    CUSTID.MOVETO()

  should be changed to

    CUSTOMER.CUSTID.MOVETO()

  This is necessary only when you are referring to an
  object in the table from another object in that
  same table, AND the object you think you are
  referring to is not on the current record.

TCURSOR FUNCTIONALITY AFTER REMOVEPASSWORD()
- If a table attached to a TCursor has a password,
  you must now keep the password in memory as long as
  the TCursor remains open. If you remove the
  password with the RemovePassword() method, certain
  TCursor operations, such as Locate, will fail. It
  is recommended that you move the RemovePassword()
  method to the same location as your TCursor.Close()
  method.

SPEEDBAR METHODS CHANGED TO TOOLBAR METHODS
- All ObjectPAL methods and constants that referred
  to SpeedBars now refer to Toolbars. However, to
  preserve existing functionality in delivered
  applications, the SpeedBar methods and constants
  remain valid in ObjectPAL, but are now
  undocumented.

RECOMMEND RESAVING 4.5 FORMS
- Forms created in previous versions of Paradox might
  load slowly in Paradox 5.0 for Windows. If you open
  and resave the form in Paradox 5.0, the problem
  will not reoccur.

ERROR STACK
- Error stack no longer clears on entry to built-in
  methods, so checking the error code or showing the
  error stack upon entering built-in code might not
  render an empty stack.


4. TIPS AND TROUBLESHOOTING
---------------------------

WORKGROUP DESKTOP
- Address Book
  - If you install program files on a network, increase
    your network file handles to at least 100. Novell
    networks use the FILEHANDLES setting in the SHELL.CFG
    file.

  - The default address book is installed with the Pdox
    ANSI Intl language driver. To create an address book
    with a language driver corresponding to the IDAPI.CFG
    setting, use MailBook (File | New) and mark the book as
    the Current Book.
  
  - When you type in the Alias field of the Address Book
    Manager dialog box, do not enter names that use
    parentheses.
  
  - To prevent users from making changes to a shared
    address book, use the Admin password. To prevent a
    shared address book from accidental deletion on an
    operating system level, mark all the files in the
    address book directory as read-only.

- Transports
  - If you use the user password in WPO (WPO:Remote
    requires a password), start WPO before polling OBEX.

  - The MCI transport can compress attachments and
    publications based on a setting in the MCI account
    configuration dialog box in OBEX. When sending mail
    with attachments over MCI, make sure that compression
    is off (publications are automatically uncompressed
    upon receipt).

  - To set up an MHS account using Novell's VLM, add the
    following statement to your AUTOEXEC.BAT file:
  
      SET MAIL=<Drive letter of MHS directory>:
  
  - To use either the Lotus Notes or the cc:Mail transport,
    the executable directory must be on the DOS path. VIM
    support is included with Lotus Notes 3.0 and later, and
    cc:Mail version 2.0 and later. If you have older
    versions of these products, it is recommended that you
    upgrade.


TABLE REPAIR UTILITY (TUTILITY)
- Previous versions of Paradox included the DOS-based
  TUTILITY.EXE to rebuild damaged tables. A new Table
  Repair Utility (available from Tools|Utilities|Table
  Repair) is now integrated into Paradox 5.0 for Windows.

  If you have TUTILITY.EXE on your path or in your working
  or private directory, and you choose
  Tools|Utilities|Table Repair, Paradox displays the
  "Windows cannot load library" error message. To avoid
  this error, remove TUTILITY.EXE from your path, and move
  it out of your working or private directory. You can then
  choose Tools|Utilities|Table Repair to use the new Table
  Repair Utility.

- When using the Table Repair Utility, the table to verify
  or rebuild cannot be locked by any user.


SQL
- ODBC Connectivity
  - This release of Paradox for Windows has been certified
    with Microsoft's 2.0 ODBC Driver Manager. If you have a
    different version of the ODBC Driver Manager, back up
    your existing ODBC.DLL and ODBCINST.DLL files and copy
    the ODBC.NEW and ODBCINST.NEW files from your IDAPI
    directory into your existing ODBC directory (by default
    this is WINDOWS\SYSTEM), and rename them to ODBC.DLL
    and ODBCINST.DLL.

  - For information on how to create an ODBC driver
    connection and alias, search for "ODBC Driver
    Connection" in the IDAPI Configuration Utility online
    Help.

- Tips For Using ODBC Socket
  - This version of the ODBC Socket was qualified using
    Intersolv ODBC pack version 1.2. If you encounter any
    driver-specific problems with any Intersolv ODBC
    driver, please contact Intersolv by calling
    (800) 443-1601 and selecting option 3.
  
  - When using pass-through SQL, case-sensitive object
    names should be enclosed in the DBMS identifier quote
    character.
  
  - The driver description in the ODBC.INI must match the
    driver name exactly as found in ODBCINST.INI in order
    for the IDAPI Configuration Utility to add drivers to
    the IDAPI configuration file.
  
  - ODBC does not support owner qualified indexes. When
    opening a table with an index, do not specify an owner
    name as part of the index name parameter.

- ODBC Socket Datatype Identifiers
  The ODBC Socket supports standard ODBC datatype
  identifiers. For a list of those identifiers, refer to
  your ODBC documentation. Each individual ODBC driver
  allows you to create a table with only some of those
  datatype identifiers. For a list of driver-supported ODBC
  datatype identifiers, refer to your specific ODBC driver
  documentation.

- You might encounter problems when copying Oracle tables
  containing NUMERIC type columns to other Oracle tables.
  This is a known problem and is fixed in the Intersolv
  ODBC 2.0 Oracle driver.

- Netware SQL: When specifying Netware SQL BLOB\Memo fields
  it is necessary to specify a size <= 32765. The default
  of 32767 that is assumed by the driver is incorrect due
  to field header information.

- DB2/2 (Database Manager) does not support concatenation
  operators in queries.

- When creating a query using local SQL, you must use
  quotation marks around all date, time, and timestamp
  values, as shown in the following example:

    SELECT "Customer.db"."Customer No" from "Customer.db"
    WHERE
    ("Customer.db"."First Contact" = "04/03/1990")
  
- When querying fields that require quatation marks on local
  SQL tables, you must reference the table name with the
  field name. Otherwise, Paradox returns a "Capability not
  supported" error message. Field names that require
  quotation marks include keywords and names with blank
  spaces or special characters such as @, %, and /.


INTERNATIONAL ISSUES
- When configuring an OBEX LAN account, do not use extended
  characters in the directory names for the post office or
  mailbox path.

- When using local SQL on a table that contains extended
  characters in the table name, you must use a table alias
  rather than the table name. For example,

    SELECT DISTINCT alias."Field name"
    FROM "TABLEß.DB" alias
    ORDER BY "TABLEß.DB"."Field name"

- When using ObjectPAL to create a query that uses tildes,
  string variables are recommended. If the date, number or
  currency settings in IDAPI.CFG do not correspond to the
  default US settings, those variables must be converted to
  strings by the following steps:

  1. Set the appropriate format to correspond to the
     IDAPI setting using the formatSet command.
  2. Convert the variable to a string and use the
     result as the tilde variable.

  For example, if DATE was specified in IDAPI.CFG as
  DD/MM/YY, the following code works:

  var
      q query
      s string
      d date
  endVar

  formatSetDateDefault("DBDate")
  d = date("20/10/89")
  s = string(d)
  q = query
      customer.db | Date     |
                  | check ~s |
      endQuery

  q.executeqbe()


IMPORT/EXPORT
- When exporting to fixed length ASCII text, the length
  specified for a numeric field type must be less than or
  equal to 20. This applies to short, long integer, number,
  currency, and BCD fields in Paradox tables, and numeric
  and float fields in dBASE tables.

- When importing fixed length ASCII text, the width
  specified for numeric data columns must be less than or
  equal to 20. If this is not possible, you can insert a
  temporary record that contains a non-numeric character in
  that data column in the ASCII file . The column then
  generates an Alpha field when imported. You can then
  restructure the table, changing the Alpha field to the
  appropriate numeric type.

- When specifying a BCD field type for fixed-length ASCII
  import, use the format '#n' where n is the number of
  digits following the decimal.

- When importing Quattro Pro spreadsheets, cells containing
  the @IF() function import as blank.

- Importing Excel spreadsheets with custom date formats will
  create a field type of number instead of date. Removing
  the custom date formats in the spreadsheet before
  importing will cause Paradox to correctly import the data
  as a Date field.

- Use negative year values to import BC dates. After
  importing, the date appears as an AD date. Change the
  date format of the field to show the BC era.

  Note: dBASE tables do not support BC dates. You
        can import BC dates only into a Paradox table.

- When you import dates with years from 0001 to 0099,
  Paradox interprets them as 1900 to 1999 by default. Use
  the IDAPI Configuration Utility to change the IDAPI date
  parameters of FOURDIGITYEAR to TRUE and YEARBIASED to
  FALSE. Paradox then imports the dates as 0001 to 0099.

- Paradox imports timestamp data with negative year values
  as alpha fields. Restructure the table to change the
  field from alpha to timestamp after importing.

- When importing a fixed length ASCII text file, data
  imported to number, currency, short, long integer, date
  and timestamp fields might import as a blank value if the
  data within the text column is not right-aligned. This
  might also occur when importing to Logical fields if the
  data is not left-aligned within the column.


GENERAL
- When working in the ObjectPAL Editor, choosing
  Edit|Undo All Edits does not roll back changes if a
  compile or check syntax has been performed.

- To define a picture for a field that will be bound
  and unbound to different tables during runtime, set
  the picture on the unbound field. If you set the
  picture on a bound field it will be lost when the
  field is unbound.

- Spaces and punctuation characters are not allowed
  in table aliases (monikers). Defining such a table
  alias through ObjectPAL does not return an error,
  but calculated field expressions that refer to the
  table alias return the error "Expression is invalid
  in a calculated field."

- Although it is possible to use ObjectPAL to hide a
  maximized window, it is recommended that you don't
  do this. Windows might not handle a hidden
  maximized window correctly.

- When querying logical fields, the only values that
  evaluate to True are  T, Y, True, or Yes. These can be
  either lowercase or uppercase. Any other value evaluates
  to False.

  QBE evaluates only the first character of any condition
  entered into a logical field.

- Placing a bytes field in a report using the Mailing Label
  Expert results in an internal error when you run the
  report. If a bytes field is required in the report, you
  should add it in the Report Design window rather than
  using the Mailing Label Expert.

- dBASE tables do not support BC dates, which are available
  in Paradox 5.0 for Windows.

- It is recommended that you do not choose Generic
  Postscript as your default printer. This can cause
  problems, particularly when using the Report Expert.

- In ObjectPAL, if setWorkingDir(), setPrivDir(),
  setDirLock(), or clearDirLock() are passed an invalid
  drive or non-existent alias, the Error dialog box appears
  prior to the onFail code in a Try/onFail block. If
  setWorkingDir() or setPrivDir() are passed a not-ready
  drive, they report true and do not trigger a Try/onFail
  even though they failed.


5. DOCUMENTATION CORRECTIONS
----------------------------

USER'S GUIDE
- The System Requirements table should note that you
  might encounter problems using Novell 7 Personal
  NetWare. An upgrade is available from Novell. It is
  recommended that you use the upgrade.

- Page 84: The restrictions on field type and size
  for defining table lookup have been lessened. The
  sentence

  "The field that you're assigning the table lookup
  to must be the same field type and size as the
  first field of the lookup table."

  should be changed to

  "The field that you're assigning the table lookup
  to must have a field type compatible with the first
  field of the lookup table."

- Page 133: The description of the time format
  "DBTime" should note that although milliseconds are
  supported by IDAPI, they cannot be displayed in
  Paradox.

- Page 194: The description of the Check should note
  that a Check on a BLOB field does not eliminate
  duplicate records. A Check on a BLOB field behaves
  like a CheckPlus.

- Page 536: The note at the top of the page instructs
  you to copy the first and last Paradox disk to the
  network and to run Workstation Install from that
  directory. You should instead copy all Paradox
  disks to the network to run Workstation Install.

GUIDE TO ObjectPAL
- Page 274: The changeValue description states: "It
  is not called when someone changes a value across a
  network or through a lookup with fill-all-
  corresponding." In fact, changeValue is not called
  as a result of any kind of lookup.

WORKGROUP DESKTOP GUIDE
- Page 23: ccMail transport does not support post office
  names as part of an address. For example, OBEX treats
  "Frank Borland at PostOffice" as an invalid address.

- Page 29: The Set Password dialog box does not include the
  control for Reader Password.

- Page 64: The default installation location of the
  template form WGTMPLT.FSL is incorrectly shown as
  C:\PDOXWIN\WORKGRP. WGTMPLT.FSL is installed by
  default to C:\PDOXWIN\EXAMPLES.

ONLINE HELP
- The examples in the help for local SQL supported
  syntax are incomplete. The complete examples are:

  Blank space in field name:
       SELECT Employes."Emp ID" from Employees
       SELECT "Employee.db"."Emp ID" from
  "Employees.db"

  Keyword as field name:
       SELECT Employees."Date" from Employees
       SELECT "Employees.db"."Date" from
  "Employees.db"

ONLINE ObjectPAL REFERENCE
- The following methods should be added to the list of
  methods that are new in Paradox 5.0:
    Form::dmResync()
    system:getLanguageDriver()
    system:getUserLevel()
    system::setUserLevel()
    system::enumRTLErrors()
  
- The new method setLanguageDriver is available in the Query
  type. It takes the language driver name as its argument.
  Refer to Table::create to get a list of valid language
  drivers.

  EXAMPLE:

  var
     qry query
  endVar

  ;; set up the language driver for the qry to be intl850
       qry.setLanguageDriver("intl850")
  ;; or
  ;; reset the language driver of qry back to default
  ;;   qry.setLanguageDriver("")
  qry.executeQBE ()
  

- The following procedures were added to the System type.
  
  - appendASCIIFix
  
    Appends data to a table from an ASCII (text) file in
    which fields of each record are the same length. Works
    like importASCIIFix, except that data is appended to an
    existing table, and any data that doesn't fit into the
    existing table is automatically trimmed.

    Syntax:
    appendASCIIFix ( const fileName String,
                     const tableName String,
                     const specTableName String
                     [ , const ANSI Logical ] ) Logical
  
  - appendASCIIVar
  
    Appends data from a delimited (variable field length)
    text file to a table. Works like importASCIIVar, except
    that data is appended to an existing table, and any
    data that doesn't fit into the existing table is
    automatically trimmed.

    Syntax:
    appendASCIIVar ( const fileName String,
                     const tableName String
                     [ , const separator String,
                         const allFieldsDelimited Logical,
                         const ANSI Logical ] ) Logical

- The Help topic dlgNetLocks shows the structure of the
  LOCKS.DB table. Some field types are incorrect in this
  topic. The correct structure of LOCKS.DB as returned by
  the dlgNetLocks procedure is as follows:

  Type            A25
  Username        A15
  Net Session     S
  Our Session     S
  Record Number   A33

- In the topic FileBrowserFileTypes, the following two
  constants in listed in error. These two constants are not
  available for use:
    fbConfig
    fbPrintStyle
  
- The variables in the example for setMenu (Report Type) are
  incorrect.

    Menu var. "foOrders.setMenu(muOrderForm)"
    should be
    "reOrders.setMenu(muOrderRpt)"

  Also
    "muOrderForm.addPopUp"
    should be
    "muOrderRpt.addPopUp"
  
- The topic EventErrorCodes incorrectly states that
  CanNotArrive and CanNotDepart grant permission to arrive
  and depart. In fact, they deny permission to arrive and
  depart, respectively.

- The text of the example for FileSystem::accessRights
  refers to a custom procedure named launchEditor. It
  should refer to Notepad.

- In example 1 for Uses, the square bracket at the end of
  the fourth line of code should be deleted.

- In the example for Report::setMenu, the last two lines of
  code should be:

     muOrderRpt.addPopUp("&File", puRptFile)
     reOrders.setMenu(muOrderRpt)

- In the example for System::printerGetOptions, the constant
  LargeFmt should be prnLargeFmt.

- In the example for System::printerSetOptions, the constant
  Lower should be prnLower, the constant Landscape should
  be prnLandscape, and the constant High should be prnHigh.

- The PrintColor constants are prnColor and prnMonochrome.

- In the example for setQueryRestartOptions, the line

    if getQueryRestartOptions <> QueryRestart then

  should be

    if getQueryRestartOptions() <> QueryRestart then

- In the example for form::dmEnumLinkFields(), when this
  method is called on a data model with CUSTOMER.DB and
  ORDERS.DB linked by the field Customer No, a secondary
  index is generated on the detail table. When doing the
  enumeration, the index field returns the secondary index.

