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.