           Btrieve v6.15.430 for Windows NT/Windows 95
                         Developer Kit
                          March, 1997
                          READDK.TXT

======================================================================
Contents
========

 1. General Information
 2. Setup and Configuration Information
 3. File Listing
 4. Notes for Customers with Pre-v6.x Btrieve Files
 5. 16-Bit to 32-Bit Windows Application Support
 6. Utilities Issues
 7. Changes and Enhancements
 8. Application Programming Issues
 9. Known Issues
10. Customer Support
11. Product Updates
12. Disclaimer

======================================================================
1. General Information
======================

Btrieve Technologies, Inc., has changed its name to Pervasive Software
Inc. effective July 1, 1996.  The name change reflects the company's
expanding role as a leading supplier of database technology designed
to bring client/server computing to the mass market.

Btrieve v6.15 for Windows NT/Windows 95 does not support embedded
spaces in file specifications.  The space has been a valid termination
character for file specifications in earlier versions of Btrieve. In
order to maintain compatibility with current Btrieve applications,
this version continues to allow spaces as a termination character.

However, to fully support the Microsoft Windows 95 naming convention,
future versions of Btrieve will support embedded spaces in the file
specification. To allow your applications to take advantage of this
capability in future versions of Btrieve, terminate the file
specification with a binary zero.

As a workaround, you can use a standard Win32 API to obtain the short
name alias of the long filename. However, do not pass an alias name to
Btrieve to create the file. If you pass an alias when creating a file,
the engine creates the file using the alias as the actual filename.

======================================================================
2. Setup and Configuration Information
======================================

You can use the Setup utility to set up the MicroKernel Database
Engine in both its workstation and server editions on Windows NT. To
set up Btrieve for Windows NT/Windows 95, select "MKDE (Workstation
Edition)" in the Component drop-down list of the Setup utility. You
must also set up the "MKDE Interface" component.

The Setup configuration option Cache Allocation has a default value of
512 KB. You may find that you get better performance with the Cache
Allocation option set to 2048 KB or larger. If possible, set the cache
size to the total size of all of the Btrieve files that will be
accessed concurrently. To change the setting of this option, use the
Setup utility. Refer to the Installation and Operation manual for
details on using the Setup utility.

======================================================================
3. File Listing
===============

Installing all the components of the Btrieve Developer Kit for Windows
NT/Windows 95 places the following files by default in the specified
directories on your disk.

Windows NT 3.51:           TARGET_ROOT = c:\bti\win32
Windows NT 4.0/Windows 95: TARGET_ROOT = c:\Program Files\bti\win32

You can change these directories.

   TARGET_ROOT\BIN
      BGBMNG.EXE
      BTI.INI
      BUTIL.DLL
      BUTIL.EXE
      DBU_UI.DLL
      W32MKDE.EXE
      W32MKRC.DLL
      W32MKSET.DLL
      W32MKSET.EXE
      W32MKSET.HLP
      WBEXEC.EXE
      WBMANAGE.EXE
      WBMANAGE.HLP
      WBROLL.EXE
      WBROLLRS.DLL
      WBTRCALL.DLL
      WBTRTHNK.DLL
      WBTRV32.DLL
      WBTRVRES.DLL
      WDBUEI32.DLL
      WDBUMK32.DLL
      WDBUUI32.DLL

   TARGET_ROOT\DEMODATA
      UPPER.ALT

   TARGET_ROOT\DOC\BTR
      READDK.TXT

   TARGET_ROOT\INTF\C
      BTITYPES.H
      BTRAPI.C
      BTRAPI.H
      BTRCONST.H
      BTRSAMP.C

   TARGET_ROOT\INTF\VBASIC
      BTSAMP16.VBP
      BTRSAM16.BAS
      BTRFRM16.FRM
      BTSAMP32.VBP
      BTRSAM32.BAS
      BTRFRM32.FRM

   TARGET_ROOT\INTF\DELPHI
      BTR16.DPR
      BTRAPI16.PAS
      BTRSAM16.DFM
      BTRSAM16.PAS
      BTR32.DOF
      BTR32.DPR
      BTRAPI32.PAS
      BTRSAM32.DFM
      BTRSAM32.PAS
      BTRCONST.PAS

   TARGET_ROOT\INTF\PASCAL
      BTRAPIW.PAS
      BTRCONST.PAS
      BTRSAMPW.PAS

   TARGET_ROOT\INTF\SAMPLE
      SAMPLE.BTR

   TARGET_ROOT\INTF\LIB
      WBTRCALL.LIB
      WBTRV32.LIB
      WBTRV32X.LIB

The file listed below is installed in the %WINDIR%\system directory of
Windows NT or Windows 95. For example

   On Windows NT:  c:\winnt\system
   On Windows 95:  c:\windows\system

You cannot change these directories.

      NWLOCALE.DLL

======================================================================
4. Notes for Customers with Pre-v6.x Btrieve Files
==================================================

If you are upgrading to Btrieve for Windows NT/Windows 95 from a
previous version of Btrieve (v5.x or earlier), you can convert files
in pre-v6.x format to v6.x format. Doing so enables you to take
advantage of the v6.x features and also may improve performance.

To convert pre-v6.x files to v6.x format, complete the following
steps:

1. Set the Setup option "Create Files in Pre-6x Format" to Off,
   the default value, using the Setup utility, MKDE
   (Workstation) component, File Settings category.

2. Using the 32-bit command line File Manager utility
   (BUTIL.EXE), issue the command BUTIL -CLONE, followed by the
   new filename and the old filename.

   For example: BUTIL -CLONE PAT6X.DTA PATIENTS.DTA

4. Issue the command BUTIL -COPY, followed by the old filename
   and the new filename.

   For example: BUTIL -COPY PATIENTS.DTA PAT6X.DTA

5. Rename the old files.

   For example, rename PATIENTS.DTA to PATIENTS.OLD.

6. Rename the new files to the names of the old files.

   For example, rename PAT6X.DTA to PATIENTS.DTA.

======================================================================
5. 16-Bit to 32-Bit Windows Application Support
===============================================

To access Btrieve for Windows NT/Windows 95 from a 16-bit Windows
application, you must have the following files in your path:

        WBTRCALL.DLL (Btrieve 16-bit Windows Requester)
        WBTRTHNK.DLL (16-bit to 32-bit Thunker)
        WBTRV32.DLL (Btrieve 32-bit Interface)
        WBTRVRES.DLL (Resource)

You must also add the directory of your Btrieve installation to your
path. (Alternatively, in Windows NT this can be accomplished by
modifying the System environment variables setting in the Control
Panel.)

To activate 16-bit Windows to 32-bit support, ensure that the Thunk
parameter is set to its default value of Yes in the BTI.INI file,
Btrieve Engine [Btrieve] section.

     [Btrieve]
     Thunk=Yes

     Range   : [Yes | No]
     Default : Yes

The Thunk entry activates 16-bit Windows to 32-bit support.
WBTRCALL.DLL is the dynamic link library that functions as the
interface to the workstation database engine for 16-bit Windows
applications.  It provides thunking, via WBTRTHNK.DLL, to WBTRV32.DLL
which in turn handles the request as it would from a Windows NT or
Windows 95 application.

You cannot set the Thunk entry from the Setup utility. To change this
entry, edit the BTI.INI file using an ASCII text editor.

======================================================================
6. Utilities Issues
===================

This release contains several 16-bit utilities, including File
Manager, Function Executor, and Roll Forward. To run these utilities
under Windows 95, make sure the file BTI.INI is in your default
Windows 95 directory. If you have a previous version of BTI.INI
installed in this directory, you must manually merge the settings for
the two files.

The Btrieve File Manager utility enables you to create, manipulate,
and recover Btrieve-formatted files. You can use the Btrieve File
Manager utility as a 16-bit interactive workstation application
(WBMANAGE.EXE) or as a 32-bit command line utility (BUTIL.EXE).

The Btrieve for Windows NT/Windows 95 workstation engine does not
support continuous operations (backing up files that are in use). If
you attempt to use one of the continuous operations commands with
BUTIL.EXE, the MicroKernel returns a status code 1.

In the Btrieve File Manager utility, the Save, Load, and Copy
functions in the Data menu do not support long filenames.  You can use
the Browse button to select the short name alias, but typing the long
filename in the Save, Load, or Copy dialog returns a File Not Found
error.

======================================================================
7. Changes and Enhancements
===========================

Following is a description of the changes that have been made in this
product update; only changes made after the initial product release
are listed.

* This version of the MicroKernel supports execution on Windows NT
4.0.  The previous release would cause either a system hang or a GPF
on Windows NT 4.0.

* With this release of the MicroKernel, files located on a read-only
device (such as a CD-ROM) or files marked as read-only by the
operating system are opened in multi-engine file sharing (MEFS) mode
without creating a .LCK file. In the previous release this could cause
problems since .LCK files could not be created on a read-only device.

* This update no longer experiences problems related to receiving
status code 20 (MicroKernel or Btrieve requester is inactive) when
the first Btrieve call made by an application on a fast machine.
The WBTRV32.DLL 32-bit interface requester now retries to load
the MicroKernel several times before returning a status code 20.
The default number of retries is 5, but you can change this number
by using the Windows 95 or Windows NT Registry Editor to change
the value of the following key: HKEY_LOCAL_MACHINE\Btrieve
Technologies\Microkernel Workstation Engine\Version 6.15\
Microkernel Interface\Settings\Load Retries.

* Several problems related to using forward slashes ('/') in
file pathname specifications (e.g., server/volume:\dir1\file.btr)
have been corrected. Prior to this fix, the WBTRV32.DLL 32-bit
interface could either reject certain Btrieve operations with
a status 12 (MicroKernel cannot find specified file) or, in some
cases, generate a GPF.

* An attempt to create a file on a NetWare file server with a filename
containing more than 8 characters now returns a status code 25
(specified file cannot be created). Previously, the MicroKernel was
returning status 2 (I/O error).

* A special registry key is now available to avoid status code 81
(lock error) problems in peer-to-peer environments.  The MicroKernel
uses temporary files to control access between multiple engines. The
temporary files are created with the data filename extension replaced
with a .LCK extension. On some peer-to-peer networks, deleting the
.LCK file in multi-engine sharing causes the application to receive
status code 81. To avoid this problem, use the Windows 95 or Windows
NT Registry Editor to change the value of the following key to 0 (the
default value is 1): HKEY_LOCAL_MACHINE\Btrieve Technologies\
Microkernel Workstation Engine\Version 6.15\ Microkernel
Interface\Settings\Delete Tmp Files. Setting this key to 0 will
instruct the MicroKernel to not delete temporary files in multi-engine
file sharing (MEFS) mode.

* In previous versions, if more than one workstation attempted a file
recovery against a remote file, one of the workstations successfully
opened the preimage file, while the other workstations received a
status code 14 (Preimage Open Error).  In this update, the other
workstations wait until the file recovery is complete, instead of
returning the error.

* When an application performs several Gets with explicit Lock
operations on a record that has just been updated, the MicroKernel may
cause multiple locks to be applied against the same record before the
system transaction completes the update operation.  These extra locks
are not released even if an explicit unlock operation is executed,
causing another application to receive status 84 when it attempts to
read the same record.  This problem is fixed in this update.

* In some situations, the MicroKernel does not correctly distinguish
between explicit and implicit record locks.  This can also result in
an application receiving status 84 when it attempts to read records
with lock.  This problem is fixed in this update.

* If your application is performing a high degree of concurrent
updates in a peer-to-peer environment using the multi-engine file
sharing option, you can realize a performance improvement by setting
the /g parameter to the value 1:1.  This parameter setting causes the
engine to release file locks on any read or write operation, thus
allowing other workstations quicker access to the same file or files.

However, setting this option will degrade performance for applications
that are performing bulk read/write operations in a single user mode.

======================================================================
9. Application Programming Issues
=================================

The following Developer Kit enhancements affect the information
provided in the Appendixes of the Btrieve Programmer's Manual:

- Full language interfaces and sample programs for 16-bit and 32-bit
  Delphi have been added to the Developer Kit.

- Full language interfaces and sample programs for 16-bit and 32-bit
  Visual Basic are now provided.  As a result, the BTRSAM32.VBP (32-bit)
  file is obsolete.

- Most of the sample programs have been updated to use the sample
  Btrieve file contained in INTF\SAMPLE\SAMPLE.BTR.  Please examine
  each language-specific sample application for details.

======================================================================
10. Known Issues
================

* You may experience one or more of the following problems when you
uninstall Btrieve using Add/Remove Programs under the Control Panel in
Windows 95 or Windows NT 4.0 or the Uninstall icon in the Btrieve
Technologies Database program group in Windows NT 3.51. (1) Registry
keys may not be completely removed: Use the Registry Editor on Windows
95 (REGEDIT.EXE) or Windows NT (REGEDT32.EXE) to delete the following
key before re-installing this product on the same machine:
HKEY_LOCAL_MACHINE\Btrieve Technologies. (2) The Btrieve Technologies
Database program group/folder may not be removed. On Windows NT 3.51,
you can delete this program group from the Program Manager. On Windows
95 and Windows NT 4.0, from the Start button select Taskbar->Start
Menu Programs->Advanced and delete the program folder shortcut from
within the Programs file folder. (3) Btrieve files installed in the
%WINDIR%\system directory (as described in the File Listing section of
this file) may not be completely removed by uninstall.  These can be
removed using a DOS command prompt, Windows File Manager, or Windows
Explorer.

* Btrieve for Windows NT/Windows 95 v6.15 does not support using
locale-specific alternate collating sequences (ACS) by passing a
locale's country ID and code page number to the MicroKernel via the
Create (14) operation. To use an ACS other than the one for the
default locale, you must create a user-defined collating sequence. For
more information on ACS files and their use, see the Btrieve
Programmer's Manual.

* If you are developing a multi-threaded console application targeting
either Windows 95 or Windows NT, you must set up a control handler
routine to handle a potential CTRL-C keystroke.  In this control
handler routine you must clean up all of your Btrieve clients by
issuing either of the following Btrieve operations: B_RESET(28) or
B_STOP(25). The cleanup process must complete before the application
passes on the event to the operating system. If there are still active
clients (of that application) when the system terminates the threads,
the MKDE cannot clean up its connection with the application and is
forced to allocate more system resources. This causes performance
degradation and significantly increases the time needed for the engine
to shut down. For more information about control handler routines,
refer to the Microsoft WIN32 Reference Guide.

* The Btrieve utilities Roll Forward and File Manager do not fully
support long filenames.  These will be addressed in a future release.
The following limitations are in effect for this release:

   Roll Forward Utility
     - The pathname is limited to 120 bytes.

   File Manager Utility
     - The FILE|OPEN and FILE|SAVE AS menu options are
       limited to 64 bytes.
     - The file specifications for the SET/CLEAR OWNER
       and CREATE/DROP INDEX are limited to 120 bytes.
     - The file specifications for the LOAD, COPY, and
       SAVE DATA operations are limited to 8.3 filenames.

*  In this release, the maximum length of a filename supported by
the MicroKernel Database Engine is 255 characters.

* When developing 32-bit applications with Visual BASIC 4.0 and above, 
a structure alignment issue may cause problems with Btrieve
calls.  VB adds extra bytes into structures to perform double word 
alignment on some fields in the structure; this is done for 
performance optimization.  This is commonly seen when a structure 
contains a Long (4-byte) integer or a single (4-byte) or double 
(8-byte) precision floating point field.  For example:

   Type DataBuffer
       Fld1     As String * 2
       Fld2     As Long 
   End Type

This structure actually occupies eight bytes rather than 6, because
two extra "dummy" bytes will be inserted into the structure to move
Fld2 to a double-word boundary.

Note that this problem actually exists in most compilers, including
C/C++ and Pascal.  However, other compilers provide a configuration 
option where you can specify what type of structure alignment you 
would like used; Visual Basic 4 does not provide such a configuration
option.

When using a VB Type structure as a databuffer in a Btrieve call,
these extra bytes will not be apparent to Btrieve.  For example, if
reading a 6-byte record from a file with a GetFirst using the
structure defined above, Btrieve will return the six bytes of data in
the first 6 bytes of the structure.  Btrieve will not add any extra
bytes.  Subsequent access to Fld2 will not produce the correct data. 

There are several ways to workaround this problem in your Visual 
Basic application.  Refer to the sample code in BTRSAM32.BAS for one 
example of a workaround.  Following is an outline of another 
workaround for reading records using some intermediary type structures.

  1) Declare all type buffers with String fields with the same size
     as the number field that you would otherwise use.
  2) Declare two intermediate type buffers: one that consists of 
     just a 4-byte string field, and one that consists of just a
     4-byte long or float field.
  3) Use this type buffer from step 1 to read a record from the 
     Btrieve file.
  4) Copy the 4-byte string from the Btrieve databuffer into the 
     intermediary buffer containing only the string field.
  5) LSet (VB operation) the numeric intermediary buffer equal to
     the string intermediary buffer.  This is equivalent to a C 
     memmove function where the bytes are copied regardless of 
     the underlying field types in the structure.

Similar steps can be used to workaround the problem when doing insert
or update operations.

======================================================================
11. Customer Support
===================

Pervasive Software Inc. provides Customer Support to assist you with
your Btrieve product.  Refer to your documentation for details and
contact information on Pervasive Software's Customer Support programs.

======================================================================
12. Product Updates
===================

Pervasive Software Inc. may periodically release product updates for
some of the components in this package.  These product updates may
provide new functionality, support new application environments, or
fix problems identified after product release.

These updates often address a specific problem that a particular site
experienced. This product is used in a very diverse set of
configurations worldwide. Updates may or may not be needed for your
particular installation. We recommend that you carefully review the
documentation included with the update prior to installation of the
update to determine if your application requires it.  However, if you
are experiencing problems with this product, it is recommended that
you try the latest update to see if the problem has already been
resolved before contacting Pervasive Software Inc. Customer Support.

To determine if there is a product update available for this package,
check the Btrieve forum on CompuServe (GO BTRIEVE) or the Customer
Support section of the Pervasive Software Inc. Web site
(www.pervasive-sw.com) for Product Update Information.  If an update
is available, instructions for obtaining the update are also provided.

======================================================================
13. Disclaimer
==============

PERVASIVE SOFTWARE INC. LICENSES THE SOFTWARE AND DOCUMENTATION
PRODUCT TO YOU OR YOUR COMPANY SOLELY ON AN "AS IS" BASIS AND SOLELY
IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF THE ACCOMPANYING
LICENSE AGREEMENT.  PERVASIVE SOFTWARE INC. MAKES NO OTHER WARRANTIES
WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE SOFTWARE OR THE
CONTENT OF THE DOCUMENTATION; PERVASIVE SOFTWARE INC.  HEREBY
EXPRESSLY STATES AND YOU OR YOUR COMPANY ACKNOWLEDGES THAT PERVASIVE
SOFTWARE INC.  DOES NOT MAKE ANY WARRANTIES, INCLUDING, FOR EXAMPLE,
WITH RESPECT TO MERCHANTABILITY, TITLE, OR FITNESS FOR ANY PARTICULAR
PURPOSE OR ARISING FROM COURSE OF DEALING OR USAGE OF TRADE, AMONG
OTHERS.

======================================================================

(c) Copyright 1982-1997, Pervasive Software Inc.
All Rights Reserved Worldwide

**End of READDK.TXT**
