
December, 1994
SuccessWare International
Technical Paper


  =========================================
  |                                       |
  |              ROCKET (tm)              |
  |                                       |
  =========================================


Product Description:
--------------------

ROCKET (formerly known as SIxBase) provides Microsoft(r) Visual Basic(tm)
and Visual C++(tm),  Borland(r) C++ v4.0,  Borland dBASE(tm) for Windows
v5.0, and  PowerBuilder(tm) programmers with high-performance, multi-user
access to the data and index files used by CA-Clipper(r) (.DBF/.DBT/.NTX),
FoxPro(r) (.DBF/.FPT/.IDX*/.CDX), as well as our super-speed, compact /
compound HiPer-SIx(r) .NSX/.SMT index and memo file formats.  (* FoxPro
compact .IDX format only.  The older FoxBASE(r) non-compact .IDX format is
not supported.)  Other features include index Scoping, Conditional
Indexing, Sub-indexing, and record-level Data Encryption (non-DES).


Bound Data Controls (.VBXs):
----------------------------

ROCKET includes bound controls (.VBXs) for data access and flexible
browses, supporting input masks (like an Xbase PICTURE clause) and pre and
post-validation of data.  Display colors, formatting, and source of the
data for individual columns in the browse are easily handled through the
browse control's GetLine event.


Native Record/File Locking:
---------------------------

ROCKET uses the file and record locking schemes native to the file format
it's accessing (CA-Clipper, FoxPro, and HiPer-SIx).   For example, if you
open a FoxPro database with ROCKET and update it concurrently with a
FoxPro application, each application will respect the other's locks.


Direct File Access:
-------------------

By providing direct access to the data and index files, ROCKET is able to
outperform systems using middle- ware, such as ODBC drivers.  Instead,
ROCKET uses it's own Replaceable Database Engine (RDE) system, which
allows your code to remain virtually unchanged, while selecting from any
of the three ROCKET data and index file formats.


Query Optimization:
-------------------

To provide super-fast queries, SuccessWare's Mach SIx(tm) query
optimization (similar to FoxPro's Rushmore(tm) technology) is built in.
Mach SIx uses existing index files to determine the records meeting a
query condition, in many cases, without the need to access the database
file.  The query result can be obtained up to 1000 times faster than
conventional database filters.


Xbase-Like Syntax:
------------------

ROCKET's syntax was designed to leverage the existing knowledge of Xbase
programmers migrating to a Windows environment.  With this in mind, each
ROCKET function name is based on the equivalent Xbase command or function
name.  For example, to open a database file, you call sx_Use().  To create
a new index file, call sx_Index().  Append a new record with sx_Append(),
search for a record in the active index with sx_Seek(), ZAP the database
with sx_Zap(), and so on.  Built-in Xbase functions allow you to continue
using indexes created with Xbase-native functions like UPPER() and DTOS().


Memo File Enhancements:
-----------------------

ROCKET's memo fields support storage of anything from text to graphic
images and other Binary Large Objects (BLOBs).  Windows bitmap (.BMP)
images can even be displayed directly from within a ROCKET memo field,
without the use of any other add-on product.  Memo file packing is also
supported, eliminating the memo file bloat problem typical with all Xbase
memo file formats.


Visual Navigator(tm) Utility:
-----------------------------

ROCKET also includes the Visual Navigator utility, which is a stand-alone
Windows executable program that lets you open, browse, and edit any of the
database and index file formats supported by ROCKET.   Visual Navigator
includes standard CUA menus, a toolbar of the most common DBMS operations,
and a command-line interpreter, similar to an Xbase dot-prompt.


Programming Languages Supported:
--------------------------------

Although ROCKET is designed primarily for use with Microsoft Visual Basic
and Visual C++, it can also be used with Borland C++ v4.0, Borland dBASE
for Windows v5.0, PowerBuilder, and any other Windows development language
that supports standard Windows .DLLs and .VBX custom controls.


Documentation:
--------------

ROCKET includes a 300 page manual with comprehensive documentation on
every ROCKET feature, with samples for each function in both Visual Basic
and Visual C++.  Three comprehensive Windows help (.HLP) files are also
included.


Sample Applications:
--------------------

ROCKET includes complete source code for two sample database applications,
one written in Visual Basic and the other in Visual C++.   These can be
used as a starting point for your own application, or as overall examples
of how ROCKET can be used in your existing application.


Automatic OEM / ANSI Conversion:
--------------------------------

ROCKET automatically translates European OEM character set databases and
indexes into Windows ANSI and vice-versa.  This allows you to run DOS
based applications concurrently with Windows applications using the same
data.


.DLL/.VBX File Sizes:
---------------------

ROCKET.DLL    (required for all ROCKET applications)................64k
SXDBFNTX.DLL  (required only for CA-Clipper data/index support)....189k
SXDBFCDX.DLL  (required only for FoxPro data/index support)........215k
SXDBFNSX.DLL  (required only for HiPer-SIx data/index support).....209k
6BROW.VBX     (browse grid control).................................58k
6DATA.VBX     (data edit control, combo box, list box, check box)..107k


Runtime License / Royalty Requirements:
---------------------------------------

ROCKET has no runtime license or royalty requirements.  You are free to
distribute ROCKET's .DLL and .VBX controls with your applications.  The
Visual Navigator utility can also be freely distributed with your ROCKET
applications.


System Requirements:
--------------------

If your PC can run Windows, it can use ROCKET.  Nothing additional is
required to use ROCKET, above and beyond the standard requirements of the
Windows development language you are using.


Coding Examples:
----------------

  Visual Basic Example:
  ---------------------

    Sub ButtonPack_Click ()
       If Not sx_Use("c:\vb\cust.dbf", "cust", EXCLUSIVE, SIXNTX) Then
          MsgBox "File in use. Try again later."
       Else
          iRet = sx_IndexOpen("c:\vb\sxcust1.ntx")
          iRet = sx_IndexOpen("c:\vb\sxcust2.ntx")
          iRet = sx_IndexOpen("c:\vb\sxcust3.ntx")
          sx_SetGaugeHook GaugeBox.hWnd
          GaugeFiles = 4
          sx_Pack
          sx_SetGaugeHook 0
          sx_Close
       End If
    End Sub



  MFC/C++ Example:
  ----------------

    if (!sx_Use("c:\\vb\\cust.dbf", "cust", EXCLUSIVE, SIXNTX))
       AfxMessageBox((LPCSTR) "File in use. Try again later.");
    else
       {
       sx_IndexOpen("c:\\vb\\sxcust1.ntx");
       sx_IndexOpen("c:\\vb\\sxcust2.ntx");
       sx_IndexOpen("c:\\vb\\sxcust3.ntx");
       sx_Pack();
       sx_Close();
       }


ROCKET Limits:
--------------

  =============================================================
    Database Files                               Limit
  =============================================================
    Max records per database                     1 billion (1)
    Max characters per record                    64k
    Max fields per record                        1022
    Max databases open all tasks                 250 (2)

  =============================================================
    Index Files                                  Limit
  =============================================================
    Max characters per key (NTX)                 338
    Max characters per key (CDX/IDX/NSX)         240
    Max length of index expression               255
    Max length of conditional expression         255
    Max open index files per database            249 (2)
    Max open index files per task                249 (2)

  =============================================================
    Fields                                       Limit
  =============================================================
    Max characters per field: Character          1023 (3)
    Max characters per field: Numeric            19
    Max characters per field: Logical            14
    Max characters per field: Date               84
    Max characters per field: memo ref in DBF    10 (4)
    Max characters per memo in DBT/FPT/SMT       64k
    Max BLOB size stored in a memo               16 megabytes
    Max characters in a field name               10
    Numeric precision                            16


  (1) Actual file size is limited to 1 gigabyte.

  (2) Limited by memory and number of file handles available.  Windows
      allows 255 file handles per  task, of which 5 are reserved.

  (3) Up to 32k if sx_GetRecord is used to read the entire record buffer.

  (4) Non adjustable field size.



