What's new in KCML 6.40
Compiler
The following compiled mode statements are also available in a limited form in interpreted mode
- DEF ENUM defines enumerated constants in a typesafe way.
- Support DIM AS for types Boolean, Integer or Numeric as well as an enumeration. AS is also allowed for the return type of a DEFSUB. CONST is allowed for DEFSUB arguments. There is no runtime effect and these facilities are provided to embellish the auto generated documentation.
- AS SYM() can be used to type SYM values and aid the compilers error checking
- STRING_CAST() function to convert a base record into a derived record bypassing type checking.
- ENUM_CAST() function to convert a numeric expression into an enumerated type without any check that it is a valid member of the enumeration.
Database
- Row oriented KI_START_ROW and KI_READ_RANDOM remove the necessity of calling KI_BUILD.
- Added a KI_END to allow timely release of sequential result sets resources
- There is now a concept of a default connection and the connection number may therefore be omitted in a WHILE TRANS.
- More specific error message text is now associated with data base error codes. Displayed when tooltipping a handle.
- Table names can be reformatted to conform to a different filename pattern when opening a KDB table.
- KI_GET_COL_LIST has been removed in favor of the new DEFVIEW. The experimental KI_SET_COL_LIST is still supported for temporary dynamic views that persist for a single result set.
- Cached database tables. Most useful on 2 tier Oracle installations but also a performance boost for KDB.
Oracle
There is new support for Oracle which supports all the KDB type 7 functionality transparently. Requires Oracle 9.2 or later. Old Oracle support still there as connection type koracle7.
- DEFVIEW provides an extensible structure defining the columns of interest in row buffer so that only the columns of interest are sent to KCML from the server
- DEFQUERY allows a result set to be generated on the server minimizing round trips.
- Long term locks that persist outside transactions.
- Autonomous transactions
- KI_PREFETCH_ROWS can control how many rows of a sequential result set are read at a time thus reducing server round trips.
Workbench
The KCML workbench has been completely overhauled. See KCML workbench manual.
- It can edit now more than one source component. You don't have to have first loaded this component into the foreground.
- It supports JIT (Just-in-time) compiling so you can edit libraries directly.
- The presentation and content of tooltips has been massively improved.
- The three variable windows now allow drilling in to DEFRECORDs and some objects to view there component data.
- The editor window allows collapsing statements, so that you can focus on the code you need to.
- You can place bookmarks on statements. This allows you to move quickly between points of reference.
- Provides an integrated way of documenting your code.
- Auto-suggestion of variable names, DEFRECORD flds and object members.
Client
- Better support for computers with two monitors. Centering, tooltips and popup menus will take place in the appropriate physical monitor.
- Expose support for rasterized printing in the print preferences dialog.
- New splash dialog with branding
- New methods, properties and events to support generic handling of form events through a single event handler. Specific events can be added to a control through the AddEvent() method. All events added in this way trigger the single form event EventHandler(). The control triggering the event and the id of the event may be found in the form properties EventControl andEventId.
- To help in passing form information to subroutines, all controls now support the FormObject property to return the object reference to the form. In addition, a grid cell object can use the GridObject property to access the grid.
Miscellaneous
- The automatic generation of system wide documentation with khelp utility
- Built in functions
- Memory mapped files using a built in function 'KCML_map_file
- Individual FLDs can be PRIVATE in a DEFRECORD.
- Profiling of function calls
- Dropped support for SAVE<G>.
- Support for SSL encryption on sockets and SOAP connections
- LDAP support
- Experimental simple list object which can act as an associative array