Home
PowerForce 
Section 
There is an art to having an efficient data base. Some seem to miss the most important.
1) I have my Virtual Memory, paging file, on a separate physical drive than the data base. And I do not have it on a mirrored volume.
Having your data base on a mirrored drive will slow it down considerably. Although you should consider this option very carefully before you do it.
2) I have my processor scheduling set for "programs", and the memory usage set for "system cache".
3) I program my indexing to be very efficient. I also have my selects programmed efficiently.
4) When you consider manually setting the table configuration, be sure to test it and see if you get the desired results. Most of the time, it is index updating and selecting that is the problem. Unless your tables are horribly over sized.
5) Try to not to make your selects go through the entire table when selecting. Use indexes when possible. And too many indexes is even worse! Basically what you need to do is to gather up all your selects and see what common criteria you have in them, and how often they are used. That is how to determine what indexes to have and not have.
I did some very serious testing before I released my product. I found that I was able to speed up about 600% just by making my selects and indexing more efficient. Programming techniques are a part also. I do not have performance issues.
There are so many ways to tune up your data base. Without knowing what your data base does, it is very hard to know how to respond to you.
You really need to be a software developer, designer, and tune up (doctor) expert to get or have a very efficient system.
Your problem could be something very simple, something like how your users access the server and the data base.
Remember that data transferred from memory (cached) is the quickest. Data transferred from physical disk is second quickest. Data transferred via network is way slower. And data transferred via the internet is the slowest.
If your data base total size is like two gigs or so, then you might consider more memory so that, if you choose, you can have more caching.
Windows server 2008 has a program called "perfmon". Set it up to monitor the "fast reads, cache (reads per second)", network activity (bytes per second), paging file (% usage), each physical disk (% disk time), each CPU (% processor time). This might help you see what needs to be looked at.
My opinion... Windows defragging does not help! It might save you one or two seconds a day. Using the OpenInsight "compress" utility does not help! Compressing only removes unused overflow frames. The unused overflow frames are queued to be used again when needed.
Top of Page
Storing data in-memory
RPT65
Top of Page
Release 9.x functionality 
- A new function named RTI_OS_DIRECTORY has been created. It supports methods such as Create, Delete, Rename and other methods for dealing
with OS directories.
- A new type of indexing has been added – Bitmap Indexing. Bitmap indexes
have nothing to do with images, but rather with bit arrays (the 'bit map'). We
do the work internally with bitwise operators. They are mostly used for
indexes where the number of indexed values are relatively small; e.g. Sex
(M, F), Active(Yes, No), etc. Basically, there is one index node per index
value, as opposed to our Btree or Xref indexes, which could have many
nodes per value, or multiple values in a node.
• Some issues with IDX_SETS have been corrected; IDX_SETS now runs
faster.
- A new function named OI_GET_LOCALE_DATE is now available. It will
display a passed date in the format as determined by either LND setting in
the database manager, or by the Windows Local settings.
• A number of binary operators, used to work in terms of BYTES rather than
CHARACTERS have been added to the Basic+ language. These include
GetBinaryValue, PutBinaryValue,GetBtyteSize,CreateBinaryData, BCol2,
BRemove, and more. Please see the What's New in 9.2 guide.
- Added drop downs and scroll bar to the Popup window.
- A program named RTI_TASKMANAGER has been added to the system,
allowing developers to schedule processes through the Windows Operating
System.
- OpenInsight now supports Single Sign-on using LDAP. Single Sign-On (SSO) allows OpenInsight users and system administrator to
simplify their OI security and administrative tasks. By configuring SSO,
OpenInsight users can be authenticated via traditional OpenInsight methods,
via Windows security, or via a combination of both.
- IDX_SETS
An error in IDX_SETS has been fixed. Under certain circumstances, especially in
the CTO and AREV32 environments, IDX_SETS performance was seriously
degraded. A new version of IDX_SETS has been written using .NET libraries,
instead of the original C and Assembler routines.
The default behavior of IDX_SETS will be to use the original Assembler/C routines.
To use the .NET libraries, the ClientSetup.exe needs to be run on each
workstation. This will install the idxSets_Setup.msi that was placed in
OpenInsight's root directory during the upgrade. The idxSets_Setup.msi will install
the .Net libraries needed to execute IDX_SETS.
There is a new record in the SYSENV table called CFG_IDX_SETS. This record,
as shipped, contains the value "IDX_SETS1" in field 1. When IDX_SETS is
invoked, the system will interrogate the CFG_IDX_SETS record to determine
which version of IDX_SETS should be used. If the value of the record is
"IDX_SETS1" the original Assembly/C interface is used. If the value of the record
is "IDX_SETS2", then the .NET library is used.
- RTI_Getnetworkusername
- Added REVDOTNET API to allow OpenInsight to integrate with .NET
controls.
- Added DOTNETEXPLORER window to explore .NET controls.
• Added RTI_TASK_SCHEDULER as an OI front end to the Windows control
panel scheduled tasks. ( SCHTASKS.EXE )
• Added RTI_INDEXER_CONFIG as a front end to schedule indexing utilizing
the RTI_TASK_SCHEDULER and the Engine Server.
• Added OERUN.exe for use with the RTI_TASK_SCHEDULER. It is intended
to be called from the windows task scheduler, but can be called from batch
files too.
• Added RTI_CDOMAIL to send email from OpenInsight using authenticated
login and or SSL.
• Added RTI_SENDFAX to provide the ability to send a fax from OpenInsight
using the standard Windows Fax Server (included in XP, Vista, Server 2003
and Server 2008).
• Added RTI_CreateGUID to generate a GUID. This provides a way to get
unique keys without using locking.
• Added RTI_MD5 to enable one-way MD5 hashes. This can let you validate
passwords, credit cards or SSN without storing them.
• Added RTI_JSON to allow you to generate JSON formatted data. This is
useful for custom web programming using AJAX techniques
• Added RTI_RSS as an example of reading RSS feeds in JSON format
• Added RTI_GETNETWORKUSERNAME to get the network user
• Enhanced XML Import Wizard to import of XML without a schema. Replaced
in-house parser with use of MSXML parsers. Provided underlying RTI_XML
object.
• Some of the new IDE screen handling has been updated.
• Fixed issue where Collect.IXVals response was limited to 64k.
• Fixed issue where SYSENV*SYSPROCNAMES was being deployed empty.
• Fixed a bug in LH_VERIFY_SUB that incorrectly calculated the average row
size.
- Added new 'Code Templates'. These are prebuilt chunks of code stored in
the SYSCODETEMPLATES table. Revelation ships some examples;
developers can extend them as needed.
• The Basic+ commands for working with .Net assemblies have been modified.
These include STARTDOTNET, SET_PROPERTY.NET,
GET_PROPERTY.NET, GET_INFO.NET, EVENTS.NET,
SEND_MESSAGE.NET, CREATE_CLASS.NET, FREE_CLASS.NET,
CREATEINTERNALOBJECT.NET, and PARSEDOTNET.
• A new series of Rlist Callback routines have been created or modified. These
include RLIST_XML_CALLBACK, RLIST_JSON_CALLBACK,
RLIST_CSV_CALLBACK, RLIST_TEXT_CALLBACK,
RLIST_TAB_CALLBACK, RLIST_HTML_CALLBACK, and
RLIST_EDT_CALLBACK.
- Form Designer/Presentation Manager
• The ComboBox Populator has been enhanced to support a SORTBY: tag,
allowing an AL/AR/DL/DR sort. Also, additional literal items can be added to
the list, and they will appear at the top of the dropdown.
• A new set of FocusCell properties has been added. Details are:
FOCUSCELLFONT, where a specific font can be set for the cell that has
focus; FOCUSCELLCOLOR, where colors can be set for the foreground and
background color for the cell that has focus, for EditTables where row
selection is or is not set; FOCUSRECTWEIGHT, where the thickness of the
rectangle surrounding the EditTable cell that has focus can be set to light,
medium, or thick; FOCUSRECTSTYLE, where the rectangle surrounding the
EditTable cell that has focus can be either a solid or dashed line; and
FOCUSRECTCOLOR, where the color of this rectangle can be specified.
• Menus have been modified to support graphics and textual separators. The
contextmenu designer and menu designer have been modified as required.
• Sample screens have been added to the build to show examples of using a
number of features in OpenInsight. They include TEST_EDITTABLE_DND
for testing EditTable drag and drop; TEST_CONTEXTMENU for testing
context menus; TEST_NEW_ET_STYLES, for testing the new EditTable
styles included in OpenInsight 9.0; TEST_EDITTABLE_DROPDOWN and
TEST_EDITTABLE_CHECKBOX for testing EditTable dropdown lists and
checkboxes.
• The QBF Query parsing Logic has been revamped. In prior versions, QBF
was not using the same WITH clause logic that RLIST uses. QBF now uses
the same META parser that Rlist uses. Range selects are now supported, for
example A...Z will find items from Aardvark to Zebra
• The maximum number of controls supported in a form has been increased
from 920 to 2048. This will be the maximum number of controls in a form.
- Commuter Module Generator (RTI_Commuter window)
• Some issues with all events not being converted have been addressed.
• Clicking on the 'All Controls/Supported Events on the Form' checkbox now
gives a warning about how many program stubs will be created.
- The IDE can be launched manually through the System Monitor by typing
"EXEC RTI_IDE_MDI"
• The IDE can be launched automatically through a new IDE command line
switch on your Windows Shortcut. The switch takes the form: \IDE=<FIELD
POS>. When launching OpenInsight the SWAP_DATABASE command
reads the CFG_IDE record in the SYSENV table. It will use the field position
specified in the <FIELD_POS> value of the IDE command line switch. The
CFG_IDE record has a default of RTI_IDE_MDI. Therefore if one specifies
\IDE=1 on the command line when launching OpenInsight, then the new IDE
will be displayed. The CFG_IDE record is available for use by developers. If
one specifies \IDE=2, the system will look at the second field in the CFG_IDE
record and launch the appropriate window. The system expects to launch a
window.
- Basic+
• Edit Table Functionality. There have been numerous enhancements to the
Edit Table control for OpenInsight 9.0. These include: Multiline Cells,
Combo Box and Check Box processing for individual cells, rows and
columns.
New Messages for the Send_Message function for manipulating an edit table
have been added. These include:
STYLE_BY_POS - Set and retrieve the Style for an entire column, row or
particular cell
Setting the STYLE_BY_POS: retval = Send_Message(CtrlEntId,
"STYLE_BY_POS", column, row, style)
Retrieving the STYLE_BY_POS: retval = Send_Message(CtrlEntId,
"STYLE_BY_POS", column, row)
Please review the Programmer's Reference Manual, STYLE_BY_POS
message for examples on how to use the new styles.
• New Styles in that have been added are:
OPTIONSBUTTON (will create a button within edit table cells. When the
button is clicked the table's OPTIONS event is raised.)
DROPDOWNEDIT (will create a drop down type of Combo Box within edit
table cells.)
• The CLEAR_TABLE command has been modified to that if there are indexes
on the file, they are rebuilt.
- A Window (SYSCOPYAPPS) has been added to copy entities or applications
to a different application.
- WebOI
• A new Web Publishing tool named WebOI has been created. It can be
accessed by typing Exec WebOI from the system monitor.
• The WebOI screen's 'Tools' tab has a Commuter Module Generator. See the
WebOI Quick start for details.
- The RTI_POPULATE_COMBO stored procedure
- OCX/OLE
• An error in handling keystrokes in OLE controls has been remedied. The
NOACCELTRANSLATION property has been added, as well as, the
SUPPRESSKEYTRANSLATE message. The NOACCELTRANSLATION
property is a boolean property that may need to be set when the keys used
within the OCX should not be passed to the OpenInsight Presentation
Server. This fixes the issue where the RichTx32.ocx embedded in
OpenInsight forms loses the ability to use navigational keys (arrows, page
up, page down, home, etc., etc., etc.) within the ocx. Using the following
Set_Property command will ensure that the keystrokes within the OCX
control process properly:
call Set_Property( oleControl, "NOACCELTRANSLATION", TRUE$).
• The SUPPRESSKEYTRANSLATE message provides
NOACCELTRANSLATION functionality for specific keys. This message is
used in the Send_Message routine as follows:
equ VK_BACK$ to 8
call Send_Message( oleControl, "SUPPRESSKEYTRANSLATE",
VK_BACK$, TRUE$)
This example will stop the BACKSPACE key from being processed by the
OpenInsight Presentation Server but all other keys will be processed by
OpenInsight.
• The FORCEKEYDISPATCH message will force the OpenInsight
Presentation Server to handle an individual keystroke regardless of the OCX
translation. It has the same syntax as the SUPPRESSKEYTRANSLATE
message: Send_Message(controlName, Message, keystroke, boolean). This
message is used as follows:
equ VK_RETURN$ to 13
call Send_Message( oleControl, "FORCEKEYDISPATCH",
VK_RETURN$, TRUE$)
This example will force the Presentation Server to handle the ENTER key, as
well as the OCX.
- Added Utility to remove style sheets from individual forms in routine
RTI_REMOVE_STYLE_SHEET.
- • Added a new Equates RTI_STYLE_EQUATES as a more comprehensive update to the antiquated
STYLE_EQUATES.
• Fixed issue where RTI_LOCK_OWNER program was missing.
• The maximum number of indexed fields that can be searched with the INDEXLOOKUP command was
increased from 16 to 24.
• The Copy-Row command has been modified to accept a seventh parameter, a Boolean indicating whether
the source rows should be deleted after the copy.
• Updated User32.dll Functions from the Sprezzatura Windows API Library. This library can be downloaded
from the following link on Sprezzatura's website:
o http://sprezzblog.blogspot.com/2010/06/sprezzatura-windows-api-library.html
• RTI_DISTINCTLIST - Pass in a set of information, get back a distinct set. Relies on RTI_SETS, which relies
on the client install.
o Usage:
distinctList = RTI_DistinctList("A A A B B A B C D A B", " ")
• RTI_STRINGBUILDER - A wrapper for [] based string manipulation. Loosely mimics .Net stringbuilder
o Usage:
sb = ''
orig_mediaIDs = ''
rti_StringBuilder(sb, 'New')
Done = false$
Select hMedia
Loop
Readnext id Else done = True$
Until done
rti_StringBuilder(sb, 'Append', id:@vm)
Repeat
rti_StringBuilder(sb, 'ToString', orig_mediaIDs, True$ )
rti_StringBuilder(sb, 'Destroy')
• RTI_HASHTABLE2 - Rewritten in Javascript instead of .Net hashtable. Better implementation of Keys
method. In memory hashtable. Useful full for caching information used by one engine. Useful for caching
<idispatch> objects
• RTI_MEMCACHED – New function. A sandbox implementation of memcached hashtable service. Useful for
sharing information across instances of OpenInsight without writing to disk, for example for caching
intermediate results in a large OECGI3 installation. See
http://code.google.com/p/memcached/wiki/MemcacheBinaryProtocol
• RTI_DIFF – New function. A diff engine for comparing two strings. See
http://snowtide.com/files/media/jsdifflib/difflib.js
• RTI_CRYPTO - New function that is a wrapper for RTI_MD5, RTI_SHA1. It implements Cryptographic
functions from http://pajhome.org.uk/crypt/md5/index.html
o Read that site to see the code and examples of usage. The scripts are implemented verbatim OI
without change and without need to access external web server.
o Usage:
RTI_Crypto(method, param1,param2,param3)
ans = RTI_Crypto( 'hex_md5', string )
ans = RTI_Crypto( 'b64_md5', string )
ans = RTI_Crypto( 'str_md5', string )
ans = RTI_Crypto( 'hex_hmac_md5', key, data )
ans = RTI_Crypto( 'b64_hmac_md5', key, data )
ans = RTI_Crypto( 'str_hmac_md5', key, data )
ans = RTI_Crypto( 'hex_sha1', string )
ans = RTI_Crypto( 'b64_sha1', string )
ans = RTI_Crypto( 'str_sha1', string )
ans = RTI_Crypto( 'any_sha1', s, e )
ans = RTI_Crypto( 'hex_hmac_sha1', key, data )
ans = RTI_Crypto( 'b64_hmac_sha1', key, data )
ans = RTI_Crypto( 'any_hmac_sha1', key, data, e)
ans = RTI_Crypto( 'str_hmac_sha1', key, data )
• RTI_JSON - Improved functionality / stability. Many thanks to Jensen Thomassen for his input on this.
• RTI_CREATEGUID - added outFormat parameter – rti_CreateGuid("{") returns the GUID in string format:
{C8383395-0000-B7BE-0000-45C7918EF371}
• RTI_SET_DEBUGGER - Can now toggle debugging on fly, so can debug a CTO session or Arev32 session
using OI debugger.
o Usage:
Call RTI_SetDebugger(0, '') mode=0 to disable.
Call RTI_SetDebugger(1, '') to break.
Call RTI_SetDebugger(2, procedureName) to intercept using the specified procedure.
• RTI_LOAD_DATABASE - Can Load a different DBT programmatically.
o Usage:
Call RTI_Load_Database("MYDB") to load MYDB.DBT
• DSBFS_GET_IDENTITY - Can obtain the key created after an inserting a row into a table with an identity key
• Added 'UTF8' to the 'SYSTEM' property. This setting will maintain allows application level enforcement of
UTF8 mode, outside of the existing SETUTF8 function.
• Fixed bug in FIX_LH where setting a sizelock value would cause a VNAV error.
• Fixed issue with the Dir function where size values were returned as negative when the filesize was between
2 and 4 GB.
- Form Designer
• The ability to load previous values into controls within a window has been introduced in OpenInsight. A new
function OIWin_FormLoadPrev( windowName, controlName) should be called for the ALT-C/ALT-O type
processing. This equates to the AREV functionality of :
o The "Ditto" prompt default. See the Form Designer Property window for details.
o The "Alt-C" softkey that duplicates the most recently saved form data into the form's controls (All
non-key controls are updated)
o The "Alt-O" softkey that duplicates the most recent saved form data into the form's controls (only a
single control is updated)
- Delete_table command will now remove the bang table from the database.
• Get_env now returns values above 53.
• Fixed issue where any popup would not return any value if last popup had a system error.
• Added new Basic program (RTI_REMOVE_INDEX) to remove all indexes from a table including
deleting the bang table and SI.MFS.
• New Extended Math Operators have been added. The _addx, _subx, _mulx and _divx functions
perform math operations using full precicsion or a specified precsion. These functions are intrinsic
and do not need to be declared.
- Data Encryption
• OI 9.3 includes a module to encrypt your data. The major pieces are an encryption server ,
rtiDERServer, an encryption client, rtiDERClient and a bfs, RTP57E. Encryption works in conjunction
with the Linear hash filing system. When you use DER the linear hash service just stores encrypted
keys and rows rather than plaintext. Data Encryption is mostly transparent. Once you install the
server and client, you create an encrypted volume and copy tables to that volume. Tables and
indexes function normally, but if you look at the .LK or .OV files with a text editor you will see
encrypted data.
• Added new functionality to create "encrypted" volumes
• Updated CREATE_TABLE, COPY_TABLE to support creation and copy of tables in encrypted
volumes
• Added CREATE_VOLUME_PASS, ATTACH_TABLE_PASS to create and attach PASS (Password
Authenticated Single Session) volumes
Banded Report Writer
• Entirely new Banded Report Writer, using industry-standard UI
• RTI_BRW_FILTER provided so that system administrators and developers can customize which
tables and fields are available for the BRW
• RTI_BRW_GenerateReport (reportFile, reportName, outputName, reportType,
OverRideList,bUseGUI) stored procedure provided to generate BRW output
• O4W_BRWReport routine provided to generate BRW output from O4W
• OIPI.Net call "LOADREPORT" added to allow for inclusion of BRW output in OIPI (note: only
available via SET_PRINTER2 or with VSPRINTER2 specified in configuration file)
- NOTE: The name of the Report builder has changed. If a system is currently launching the Report
Builder by starting the ORMAIN_32 window, any references to this must be changes to
ORMAIN_32_MDI.
- DOTNETEXPLORER4
• NET 4.0 version of the DotNetExplorer form is now included; exec the DotNetExplorer4 window
(instead of DotNetExplorer for .NET 2.0)
RevDotNet
• StartDotNet({existingObject},{version}): StartDotNet now supports an optional second parameter.
Leave blank or pass in "2.0" to use .NET 2.0 assemblies, or pass in "4.0" to use .NET 4.0 assemblies
Utility_DotNet
• For each supported command (RUNWIN, CHECKWIN, GETWINHNDL, KILLWIN, MAKEDIR,
REMOVEDIR, ZIP, UNZIP, TIMEZONE, and SHUTDOWN) there is now a corresponding .NET 4.0
command (RUNWIN4, CHECKWIN4, GETWINHNDL4, KILLWIN4, MAKEDIR4, REMOVEDIR4, ZIP4,
UNZIP4, TIMEZONE4, and SHUTDOWN4) which will use the .NET 4.0 framework instead of the
default .NET 2.0 framework
NetOI
• Revelation Software now provides two different assemblies to support both .NET 2.0 and .NET 4.0
framework projects. Include the RevelationDotNet.dll assembly when targeting .NET 2.0 framework,
and RevelationDotNet4.dll assembly when targeting .NET 4.0. The namespace when using the .NET
2.0 version will be Revelation; the namespace for .NET 4.0 will be Revelation4.
- Banded report Writer
Fixed handling of multipart keys
Can now omit report name in call to BRW_GENERATEREPORT and default report in group will be used
Can now omit report name in call to SET_PRINTER2 "LOADREPORT" and default report in group will be
used
Added "DEFAULT" action to RTI_BRWSUPPORT to return name of default report in group
RTI_BRW_GENERATEREPORT can now be run with 'shared' oengine mode
Fixed failure in RTI_BRW_GENERATEREPORT to terminate NetOI connection after report generation
Changed behavior of "exploded" subreports - if single-valued fields are on the subreport, they will always return
the first value (and not the specified exploded subvalue)
Provided the ability to include XLATE's
- Added array_utility.net to allow for array manipulation
Enhanced create_class to "fall back" to non-visible object creation if visible flag is set but no parent property
found in object
Enhanced create_class to support creation of basic .NET types (ie, System.String, System.Int32, etc.) as objects
General Fixes
An issue with the DUMP and TEMP table creation failure when they already exist during an LHREPAIR
function has been corrected.
RTI_CDOMail: added new parameter "OtherOptions" to support priority, read receipt requests
Usage
* OtherOptions is associated mv list of optionNames and OptionValues
optionNames = ''
optionValues = ''
optionNames<1,1> = 'Priority'
optionValues<1,1> = 'High' ; * Can be alpha 'High', 'Low', or 'Normal' or numeric 1, -1, or 0. default is
0, Normal
optionNames<1,2> = 'Receipt'
optionValues<1,3> = '[email protected]' ; * Email address for read receipt
otheroptions = optionNames:@fm:optionValues
call rti_CDOMail(mailservername, sendername, recipient, subject, body,cc, bcc, replyto, content,
attachmentfilelist, Username, Password, useSSL, otherOptions)
RTI_LOAD_DATABASE: added new parameter "bUseAppIdforDBid".
for example, in an application named MYAPP
call RTI_LOAD_DATABASE(MYDBT)
will load the files in MYDBT.dbt and set @DBID to"MYDBT"
call RTI_LOAD_DATABASE(MYDBT, 1)
will load the files in MYDBT.Dbt and set @DBID to"MYAPP"
This should allow developers to create context-specific dbt files and attach them using
RTI_LOAD_DATABASE without changing @DBID
REV_BGND_UPDATE: fixed a bug which could cause a background indexer to hang upon encountering a
corrupt indexing file.
RTI_OEMONITOR_INDEX: Set_Status(0) before and after each index update call.
IDX_SETS: Changed default behavior to use IDX_SETS2. Issued a CFG_IDX_SETS record to force
IDX_SETS2. . Also modified REDUCE, RLIST, BTREE.UTIL, INDEX.REDUCER to trigger an error if
IDX_SETS fails.
RTI_DOCEX_MERGE: Changed to _not_ return mysterious, auto-added "_GoBack" bookmark
RTI_WNETGETUNIVERSALNAME - stopped throwing an error when examining a non-network drive.
Background: RTI_WNETGETUNIVERSALNAME(mypath) returns the UNC for the provided path. It was added to RTP49 / Attach table in 9.3 reduce problems when people attach the same unc with different mapped paths. The spurios message could cause BFS attach problems at application startup.
ATTACH_TABLE fixed to attach the bitmap index table upon attaching the data table
INET_PDF_EXAMPLE, a sample program showing a non-o4w way to launch a reports and return a PDF to the browser
- Provided sample programs TEST_MVBFS_SUBCALL, TEST_TGBFS_SUBCALL,
TEST_U2UBFS_SUBCALL how to make command and subroutines to the back end server from the OI client.
DSBFS_EXEC_SQL is enhanced to call parameterized stored procdures, return values. Provided sample
program TEST_DSBFS_EXEC_SQL showing how to use the program to execute custom SQL statements.
RTI_MEMBFS, a proof-of-concept in-memory filing system. RTI_MEMBFS creates in-memory tables. Tables and dictionaries are not shared between oengines and disappear when the volume is detached or the Oengine closes. Useful for creating temporary reporting tables or caching the contents of popups and dropdowns. The program TEST_RTI_MEMBFS illustrates usage. Note that TEST_RTI_MEMBFS shows how to implement a SYSLISTS table in memory too.
RTI_CACHE_MFS, a proof-of-concept caching MFS that keeps records in memory for 10 minutes or until a lock or select occurs. The goal is to reduce network traffic by using "good-enough" records, while ensuring that lock, read will obtains the current record from disk and to test the utility of volume mfses. Applied as volume MFS, you can attach tables in cached_mode for reporting, or normally for updated. To create a volume mfs, create a record in the SYSPTRS table. For example, create a record SYSPTRS, DATAVOL_CACHED
<1> = "VOLUME"
<2,1> = "RTI_CACHE_MFS"
<2,2> = "RTP57"
<3> = DATAVOL
then DETACH_VOLUME "DATAVOL", ATTACH_TABLE "DATAVOL_CACHED"
RTI_READU, RTI_WRITEU and RTI_WRITERELEASE functions have been added to allow programiing in a traditional Pick data processing style. The functions will pass throught to the server for the QM or D3 connectors, and use OI lock and unlock for other data sources. See TEST_RTI_READU for a example usage.
Top of Page
Section
XX
Top of Page
See Also 
PowerForce Controls
|