The In-Memory driver reads and writes data stored in the memory of the program. One copy of the data is shared by all In-Memory files that have the same NAME. If no NAME is specified, then the label of the file is used to find the data to be used.
Files:
ClaMEML.LIB | Windows Static Link Library |
ClaMEM.LIB | Windows Export Library |
ClaMEM.DLL | Windows Dynamic Link Library |
Data Types:
BYTE | REAL | CSTRING |
SHORT | BFLOAT4 | PSTRING |
USHORT | BFLOAT8 | DATE |
LONG | DECIMAL | TIME |
ULONG | PDECIMAL | GROUP |
SREAL | STRING |
File Specifications:
File Size: | limited only by memory space |
Records per File: | 67,108,864 |
Record Size: | 2,147,483,648 bytes |
Field Size: | 2,147,483,648 bytes |
Fields per Record: | unlimited |
Keys/Indexes per File: | 255 |
Key Size: | 2,147,483,648 bytes |
Memo fields per File: | 255 |
Memo Field Size: | 2,147,483,648 bytes |
Open Data Files: | unlimited |
Driver Strings
There are switches or “driver strings” you can set to control the way your application creates, reads, and writes files with a specific driver. Driver strings are simply messages or parameters that are sent to the file driver at run-time to control its behavior. See Common Driver Features--Driver Strings for an overview of these runtime Database Driver switches.
Some driver strings have no effect after the file is open, so no SEND function syntax is listed for those strings. However, the SEND function syntax to return the value of the switch is listed for all driver strings.
The In-Memory Driver supports the following Driver String:
THREADEDCONTENT
DRIVER('Memory', '/THREADEDCONTENT')
The THREADEDCONTENT switch makes an in-memory table only visible on the thread where it was created. Any In-Memory table defined with the THREADEDCONTENT switch active is completely invisible to other threads.
Normally, an In-Memory file with the THREAD attribute shares the same data across all threads. However, if you want to have unique data on each thread, then you can set the driver string to /THREADEDCONTENT.
Supported Commands and Attributes
File Attributes | Supported |
CREATE | Y |
DRIVER(filetype [,driver string]) | Y |
NAME | Y |
ENCRYPT | N |
OWNER(password) | N |
RECLAIM | N |
PRE(prefix) | Y |
BINDABLE | Y |
THREAD | Y |
EXTERNAL(member) | Y |
DLL([flag]) | Y |
OEM | N |
File Structures | Supported |
INDEX | Y |
KEY | Y |
MEMO | Y |
BLOB | Y |
RECORD | Y |
Index, Key, Memo Attributes | Supported |
BINARY | Y |
DUP | Y |
NOCASE | Y |
OPT | Y |
PRIMARY | Y |
NAME | Y |
Ascending Components | Y |
Descending Components | Y |
Mixed Components | Y |
Field Attributes | Supported |
DIM | Y |
OVER | Y |
NAME | Y |
File Procedures | Supported |
BOF(file) | N |
BUFFER(file) | N |
BUILD(file) | Y |
BUILD(key) | Y |
BUILD(index) | Y |
BUILD(index, components) | Y |
BUILD(index, components, filter) | N |
BYTES(file) | N |
CLOSE(file) | Y |
COPY(file, new file) | Y (see Note 1) |
CREATE(file) | Y |
DUPLICATE(file) | Y |
DUPLICATE(key) | Y |
EMPTY(file) | Y |
EOF(file) | N |
FLUSH(file) | N |
LOCK(file) | N |
NAME(label) | Y |
OPEN(file, access mode) | Y (see Note 2) |
PACK(file) | N |
POINTER(file) | Y |
POINTER(key) | Y |
POSITION(file) | Y (see Note 3) |
POSITION(key) | Y (see Note 3) |
RECORDS(file) | Y |
RECORDS(key) | Y |
REMOVE(file) | Y (see Note 1) |
RENAME(file, new file) | Y (see Note 1) |
SEND(file, message) | N |
SHARE(file, access mode) | Y (see Note 2) |
STATUS(file) | Y |
STREAM(file) | N |
UNLOCK(file) | N |
Record Access | Supported |
ADD(file) | Y |
ADD(file, length) | N |
APPEND(file) | Y |
APPEND(file, length) | N |
DELETE(file) | Y |
GET(file,key) | Y |
GET(file, filepointer) | Y |
GET(file, filepointer, length) | N |
GET(key, keypointer) | Y |
HOLD(file) | N |
NEXT(file) | Y |
NOMEMO(file) | Y |
PREVIOUS(file) | Y |
PUT(file) | Y |
PUT(file, filepointer) | Y |
PUT(file, filepointer, length) | N |
RELEASE(file) | N |
REGET(file,string) | Y |
REGET(key,string) | Y |
RESET(file,string) | Y |
RESET(key,string) | Y |
SET(file) | Y |
SET(file, key) | Y |
SET(file, filepointer) | Y |
SET(key) | Y |
SET(key, key) | Y |
SET(key, keypointer) | Y |
SET(key, key, filepointer) | Y |
SKIP(file, count) | Y |
WATCH(file) | N |
Transaction Processing | Supported |
LOGOUT(timeout, file, …, file) | N |
COMMIT | N |
ROLLBACK | N |
Null Data Processing | Supported |
NULL(field) | Y |
SETNULL(field) | Y |
SETNULL(file,field) | Y |
SETNONNULL(field) | Y |
Notes:
1.COPY and RENAME can be used to make alternative copies of the In-Memory file in memory. If a file has the /THREADEDCONTENTS driver string switch, then COPY and RENAME will only work within the scope of the currently active thread.
2.The access mode of OPEN and SHARE is ignored.
3.POSITION(file) returns a STRING(4). POSITION(key) returns a STRING the size of the key fields + 4 bytes.
The complete documentation for the In-Memory Database Driver can be found in the IMDD install help file.