C-Index/II Home Page
|CI2 Home|Literature|Support|Documentation|Y2K|Order|License|
Next

Advanced Features

Product Specification

The following information is provided as an overview of the C-Index/II capabilities based on Release 5.0. Additional information can be found in the documentation supplied with C-Index/II. All features are subject to change without notice.

General Information

  • Uses the B+Tree indexing method with extensions for variable length record storage and faster access performance.
  • Portable to most computers, including Intel, 68000 and RISC. Written entirely in portable C code, with compatibility for both ANSI and K&R standards.
  • Test utilities for porting to new compilers.
  • All memory models are supported.
  • Object code size is approximately 75K bytes for code and 15K for data, depending on the compiler, the memory model used and what features are being used. Additional space may be required for standard C libraries that will also be linked with the completed application.
  • Default B+Tree node size is 1K bytes. Can be adjusted at library compile time.
  • Over 80 API function calls.
  • Complete record and key space reclamation.
  • Cross-platform program and file compatibility.
  • Complete printed documentation (User Guide and Reference Guide).

Key Management

  • Keys are variable length, 0-240 characters. Key type may be:
    • null terminated string
    • short
    • unsigned short
    • int
    • long
    • float
    • double
    • fixed length binary
    • variable length binary
    • custom binary
  • Variable length segmented keys can be specified. Segmented keys can be any mixture of types in ascending or descending order.
  • Duplicate and unique keys may be specified.
  • Multiple key indexes are supported in a single file. The standard number of indexes in one file is 15 and can be configured with up to 60 indexes per file.
  • Indexes may be used for random access by key value with a specification of key comparison: exact match, greater than, greater than or equal, less than, less than or equal.
  • Sequential index access (sorted order) includes first, last, next and previous key retrieval.
  • Ability to search for key values only, with retrieval of records as a separate operation.
  • Complete control over key definition.
  • Automatic maintenance of indexes for multi-keyed records.

Record Management

  • Data and indexes in the same file.
  • More than one type of record can be stored in a single C-Index/II file. This permits the storage of all the information for an application in a single operating system file.
  • New record types may be created at run-time.
  • Records may be retrieved by record number or by using random and sequential key access.
  • Variable length records are supported. Fields in a record may be anywhere in memory, including mixtures of arrays, structures and individual variables. The variable length record is built automatically according to the specification of the fields contained in the record. Record specification is completely under the control of the application program. No external data definition routines are used.
  • Maximum number of records is 4 Billion.
  • No limit on the maximum number of fields.
  • Maximum record size is 30K bytes.

File Management

  • Maximum number of files open simultaneously is limited only by the operating system.
  • The virtual memory buffering uses an efficient Least Recently Used storage algorithm. The application program has complete control over writing of buffers to disk.
  • Any combination of files can be opened by the application program. No special record definition files are used that would restrict this process.
  • Maximum file size is virtually unlimited (8 Terabytes).
  • Data space is automatically reclaimed for variable length records.

PowerFail Protection

  • The application program controls the manner in which virtual memory buffers are written to disk.
  • Optional buffer write through forces all changes to disk immediately.
  • The operating system can optionally be required to update allocation tables when C-Index/II files are extended.
  • When using the maximum speed buffering option, the buffer flush function can be used to force changed information to the disk.
  • Active data protection with Image Backup feature which can restore file contents to a consistent state in the event of hardware or software failure.
  • Ability to check the condition of the file for corruption and rebuild the file if an error exists.

Multi-User Support

  • Supports Local Area Networks using MSDOS 3.1+, Windows for Workgroups, Windows 95, Windows NT and Unix Workstations.
  • Supports Unix System V and other variants of Unix.
  • Can easily be ported to most operating systems that supports byte level record locking.
  • All record locking and semaphore functions are operating system independent at the application program level.
  • Permits mixing single and multi-user file access. "Exclusive Use" (file locking) or "Shared Use" (multi-user) access to a file is specified when the file is opened.
  • Record and file locking under program control:
    • High level record locking for multi-keyed records.
    • Low level record locking for creating custom record management systems.
    • Semaphore management functions for complex file access that requires deadlock control.
    • Locked records remain readable by all processes.
    • Records can be tested for lock status.
  • Automatic management of virtual buffers in a shared environment. Flexible control over virtual buffers for performance optimization.




Alphabetical Function List

A

addrootassign an index to an alternate root node tree

 

B

bbuild rebuild btree file structure

bcheck test btree for corrupted structure

bcreate C-Index/II single-key create function

bopen new single-key open function

_bopen low level file open

C

cbuild rebuild a file

cchange change an entry

ccheck check the integrity of a file

_ccheck low level repair to btree files

cchgcur change the current record

cchgndx change the index type after file creation

cclose close an open file

cconvert convert to C-Index/II file format

ccreate create and leave open a new file

cdelcur delete the current entry

cdelete delete an entry by key value

cdupadd add an entry, allowing duplicate keys

cfind find an entry by key value

cfirst find the first entry in an index

cflush flush C-Index/II buffers

cgetcnt get count of multi-key records in file

cgetcur get current entry

cgetcust retrieve custom information from header

cibufnum set number of virtual memory buffers

cigetrel determine relative location in index of current key

cipspsize test size of application psp

cisetrel set the relative current index position using percentage

cispeedoff turn off SpeedRead

cispeedon turn on SpeedRead

clast get last entry in an index

clrwrit clear write interrupt flag

cnext get next entry in an index

cnextrec retrieve the next available record number

cnextrep fast cnext using callback

cnextrep2 fast cnext using callback, more flexible than cnextrep

copen open a C-Index/II file for access

cprev get previous entry from an index

csave save an entry

csetcnt set the count of active records

csetcust store custom information in header

csetfile set level of data integrity

csetrec set next available record number

cunqadd add unique key entry

D

dadd add a data record

dbcreate C-Index/II multi-key create function

dbopen new multi-key open function

dbuild rebuild multi-key records

dcheck validate multi-key records

dclose close a file

dcreate create a file

ddelete delete a multi-key reocrd

dfind find a record by key value

dgetcnt return the count of records in a file

dgetid read idbyte of current record

dmclose close a file

dmcreate create a file with multi-user access

dmopen open a file for multi-user access

dopen open a file

dread read the current record into the datalist

droproot drop alternate root

dseq find a record in sequence

dsetkey build a segmented key for searching

dupdate update the current record

E

endbcb free allocated buffer storage

endread end a series of index file read operations

endwrit end a series of index file write operations

I

imageback make backup of modified file data

imagerest restore C-Index file using image backup

imgclose close image backup file

imgopen open image backup file

M

mclose close a file

mclrlock unlock the current entry

mclrrec unlock the current record

mclrsema clear semaphore

mcreate create new file for multi-user access

mopen open a C-Index/II file for multi-user access

msetlock lock current entry

msetrec lock current record

msetsema set a semaphore

mtstlock test lock status of current entry

mtstrec test lock status of current record

mtstsema test the status of a semaphore

S

strtread start a series on index read operations

strtwrit start a series on index write operations


C-Index/II Home Page