Documentation Comments
Use this form to comment on this topic. You can also provide any general observations about the Online Documentation, or request that additional information be added in a future release.
Reality V15.0 ()
New Features (Release Information) (M6862RN+NewFeatures.htm)
Reality V15.0 contains a large number of new features since the release of V14.0, such as full 64-bit support, outgoing web services, updated ODBC support, item time stamps and so on. Other important changes are listed under the broad heading of 'MultiValue'. Compatibility, including many features that are of immediate benefit to all Reality users – like the use of case insensitive searches while selecting and then editing data items. So be sure to review the following list of new features introduced by V15.0.
Some of the new features have come from the user feedback that we receive during the life of a release, so please continue to use the 'Comment on this topic' links at the top of each topic in the Online Documentation, or visit the Reality website at www.northgate-is.com/reality, in order to help us to improve your Reality.
Significant changes have been made to deliver optimal performance and extended datum sizes across all platforms. For Microsoft Windows, continued 32-bit compatibility ensures that Reality remains useable on legacy laptops and low end servers.
Reality's new outgoing web services feature enables DataBasic programmers to call third-party web services over HTTP.
Reality SQL/ODBC now complies with ODBC version 2.5 and the ODBC Applications Programming Interface (API) Level 2.
In addition, when using the AND operator, the higher key value can now precede the lower key value.
All of the direct index commands, plus automatic index access through ENGLISH, now work through remote QPTRs.
In the same way that it is possible to determine the date on which an item was last updated, Reality now allows you to determine the time of day when the item was last updated. This time is expressed as the number of milliseconds since midnight, although currently the granularity is 1000 milliseconds (that is, one second).
Time stamps are available for items read from standard Reality files, local or remote, and for items read from directory view files. When the item is remote the remote Reality must be release V15 or later. Non-zero time stamps are immediately available on directory view items which already exist, but are available on items in standard Reality files only when they are updated or created. Time stamps for items read from other types of file, such as (make) special files, are zero.
SYSTEM(111) returns the time when the most recently read item was last updated.
Time stamp values can be used as operands in algebraic (A code) and mathematical (F code) English conversion codes.
From V15.0, items that are saved from the local database by using the SAVE verb (or a derivative) include the item time stamp. When these saves are restored to the same release of Reality or later, the time stamps are applied to the restored items.
When a file which has been saved from an older version of Reality is restored, where the items do not include time stamps a time stamp of zero is applied to the restored items.
Items saved using T-DUMP do not include time stamps; T-DUMP save format is dictated by the SMA standard which does not include meta-data such as date and time stamps. Items restored using T-LOAD have a time stamp of zero applied.
Reality has always allowed dates to be entered into the system with a one- or two-digit year, but until now it has always used a fixed date window of 1930-2029 (so that, for example, 11 means 2011 rather than 1911).
With this release, this date window is configurable, either at the database level by means of the IDateWindow database configuration parameter, or at the user level by means of the IDATE-WINDOW TCL command.
Memory mapped I/O has been introduced in Reality for Windows, and may produce performance gains. If necessary it can be suppressed using the new environment variable, REALUSEMMAP.
Reality V15.0 has been further enhanced to improve compatibility with other MultiValue systems. In addition, the following features simplify migration to Reality from other MultiValue systems.
Case-insensitivity. Options are available to make Reality operate in either the default, case-sensitive mode or a D3 compatible, case-insensitive way. Refer to the sections Data Case-insensitivity, Keyword Case-insensitivity and Item-id Case-insensitivity.
You should not normally need to use these, as the correct options are set when you specify the MultiValue emulation for a database.
The mkdbase host command has an interactive menu interface which allows you to choose a MultiValue emulation (Reality, mvEnterprise, mvBase or D3) for a new database. This automatically enables data, keyword and item-id case-insensitivity if appropriate, sets the frame size to an appropriate value, and changes the default user operating environment to be compatible with the selected emulation (To find out which predefined environments are available and in which a particular option is set, use SSM option 4 (Define Environment Settings) or the DEFINE-ENVIRONMENT TCL command.).
The VendorEmulation database configuration parameter specifies the MultiValue emulation. If set in the master database configuration file, it sets the default value for this mkdbase menu option. The SYSTEM(102) function (DataBasic and Proc) returns the currently selected emulation.
This can only be used if enabled both for the database with the
If data case-insensitivity is enabled, the following features become case-insensitive:
DataBasic relational expressions.
In English selection clauses, case is ignored when comparing attribute values.
Notes:
The SYSTEM(101) function (DataBasic and Proc) returns the current state of data case-insensitivity. In D3 mode (set with the $OPTIONS statement) the SYSTEM(28) function returns the current case-insensitivity setting for DataBasic.
The SEARCH, ESEARCH and SSEARCH commands now accept additional options to control data case-insensitivity.
The editor commands that search for strings (DE,
The screen editor commands that search for strings (L and S) can now operate in both case-sensitive and -insensitive modes. The required mode can be specified when starting the editor (the default is the current data case setting) and changed while editing with the new = command.
The ME editor commands that search for strings (/, L and R) can now operate in both case-sensitive and -insensitive modes. The required mode can be specified when starting ME (the default is the current data case setting) and changed while editing with new CI, CS and = commands.
This can only be used if enabled both for the database with the KeyCaseControl database configuration parameter and for a particular user with the KEY.CC environment option. If enabled, the following features become case-insensitive as regards keywords:
The contents of account and file definition items (local, synonym and remote).
Note: Although the user can use mixed case when editing a D-pointer, attribute 1 is converted to upper case when saved.
The contents of command and command synonym definition items.
Notes:
The following features are always available and do not have to be enabled:
This is enabled by selecting the appropriate option from the mkdbase menu when creating a database. To set the default to case-insensitive, either set the IIDCaseControl database configuration parameter in the master configuration file or set the REALCASEINSENSITIVE host environment variable.
Note: You can change an existing database to be item-id case-insensitive when you rebuild it by using mkdbase with the -r and -c options.
Directory views. On UNIX hosts a directory view is made case-insensitive by making all item-ids lower case in the Reality file. As a result, all host files created as Reality items will have lower case names and only host files with lower case names are visible.
Note: Since Windows has a case insensitive file system, directory views are unchanged on this type of host.
The following item-id case-insensitivity features are also available:
For information about how item-id case-insensitivity affects Reality, refer to Case Sensitivity.
Although Reality files can now be case-insensitive as regards item-ids, SQL for Reality currently remains case-sensitive. The SQLM command has been enhanced to ignore case-insensitive files (and display an error message to that effect) when creating or regenerating SQL tables. A new option (W) allows you to force SQLM to convert case-insensitive files, but its use is not recommended because SQL access to Reality files is always case-sensitive.
This allows the run-time behaviour of a DataBasic program or subroutine to be determined by a combination of two factors:
The run-time version. There are two ways of setting this:
Each combination of compiler version and MultiValue compatibility mode sets a unique combination of compatibility switches that control individual DataBasic features. These allow Reality V15 to work in a similar way to both earlier versions and other MultiValue systems, so that existing applications can run with the minimum of modification.
This feature is enabled on a user-by-user basis by setting the LOGON.PROGS environment option.
This feature is enabled on a user-by-user basis by setting the ACCOUNT.LOGON environment option.
TCL macros provide an alternative to Proc for simple batch tasks. Four types of macro are available:
N-type macro These allow the execution of a sequence of TCL commands. Any input required from the user must be appended as values to the command concerned. When run, TCL options supplied on the command line are applied to the first command in the macro.
M-type macro This is similar to an N-type macro, but presents each command to the user for editing before execution.
S-type sentence This is similar to an N-type macro, but supports different item formats for compatibility with other MultiValue systems.
TCL menu This type of macro presents a list of options to the user and runs the TCL command associated with the selected option.
The following macro-only commands are provided:
DISPLAY statement
This displays a message to the user. The message can include literal text, the output of one or more TCL commands and various control sequences. An option allows the user to specify which MultiValue video codes are used (to simplify migration).
PROMPT statement
This displays a message to the user in the same way as the DISPLAY statement, but then waits for the user to enter C (continue) or Q (quit). If Q is entered, none of the subsequent commands are executed.
COMMENT statement
This is similar to the DISPLAY statement, but uses a different syntax.
REM statement This allows remarks to be inserted into macros. All text which follows, up to the end of the line, is ignored.
Macros are items in the MD of an account. The user can create them with any of the Reality editors, or by using the .C TCL Stacker command to save commands from the stack as an S-type sentence. If a different type of macro is required, the user must use one of the editors to modify the saved item.
Macros of any type can be run from the TCL command line. In addition, an S-type macro can be loaded onto the TCL stack using the .X TCL Stacker command command and the commands it contains executed from there. This is intended primarily for executing macros that were saved from the stack; any secondary input is ignored.
The information displayed by the WHO command and user exit U50BB depends on the selected MultiValue environment; for details, see MultiValue Compatibility.
In D3 compatibility mode (set with the $OPTIONS statement), the "R" type functions in the same way as "M".
It is also possible to set the video emulation for the current program module by using the ASSIGN or SYSTEM(98) statement.
When called from Proc, SYSTEM(98) always returns 0 (Reality).The latest version of Reality adds support for:
The WinSQLM client component has been discontinued.
If a File or Account definition item has less than 10 attributes, default values are used for the alignment and item-id column width (attributes 9 and 10).
A TIPH licence similar to the current Despooler licence is now available.
When a TCL command is run, the verb was previously searched for in the MD of the current account and then, if not found, in the file specified as the user's "Alternate Verbs File" (set in the user's security profile). This feature adds a third location - the MD of the GLOBAL.MD account.
An additional feature of this allows the user to bypass the local MD and the alternate file, and force selection of the global command. This is done by prefixing the command name with a tilde (~). By using this, the user could write a macro with the same name as a global command, but call the global version from with that macro.
A new environment option (INHIBIT~) allows the user to disable the latter feature, so that local commands with names beginning with tildes can still be run.
This new statement allows you to compare two dynamic arrays.
The performed command can now be a dynamic array that includes responses to input prompts generated by the command.
$IFDEF and $IFNDEF constructs allow the programmer to mark sections of code for inclusion or exclusion depending on whether a symbol has been defined (using the EQUATE statement or a new $DEFINE compiler directive). The $UNDEFINE statement allows you to undefine a symbol that was previously defined with $DEFINE.
Note: When you select a MultiValue compatibility mode with the $OPTIONS statement, an appropriate conditional compilation symbol is automatically defined.
The $TRUE, $T, $FALSE and $Fconditional compilation symbols provided by mvEnterprise are also supported.
The EQUATE statement will now accept the LITERALLY keyword, used with a value enclosed in quotes. This allows the substituted value to contain spaces and multiple statements (separated by semicolons).
A new element (34) has been added to the ACCESS function. When this is used in a dictionary subroutine, ACCESS returns a string containing the next conversion code, if any. This makes it possible for DataBasic to emulate certain historic types of user exit.
The following new functions are introduced:
ABSS function
Generates the absolute (positive) numeric values of the elements in a dynamic array.
ADSS function
Adds the elements in two dynamic arrays.
DIVS function
Divides the elements in one dynamic array by those in another.
MODS function
Divides the elements in one dynamic array by those in another, calculating the remainders.
MULS function
Multiplies the elements in two dynamic arrays.
NEGS function
Negates the elements in a dynamic array.
Two new DataBasic functions return information about a specified Reality file:
Two new TCL commands are available:
NC.LISTThis displays a list of the named common areas that have been defined and their current states.
NC.RESETThis resets one or more named common areas.
In addition, when you log to a different account, any open files referenced by variables in named common sections are closed.
The debugger displays a runtime error message if a variable is referenced before it has been assigned a value. The form of the message now includes the variable name, and depends on whether the variable is a simple variable, a vector entry or an array entry.
The default DataBasic compiler is a new version that supports all the new features described in this topic. Note that code generated by this compiler cannot be run on earlier versions of Reality.
The DataBasic history feature provides a mechanism to log history data to allow reporting and analysis of the usage of DataBasic programs, subroutines and external user functions. You create a separate HISTORY data section in your source files, and this section is used by the system to log the history usage of the code whenever it is complied and catalogued.
When any local source item is compiled and catalogued, a history log item with the same DataBasic program name is automatically written to the HISTORY data section of the source file (if such a section exists). Any previous history item is overwritten. The log item comprises the attributes shown in the following table (compilation is logged in attributes 1-7, cataloguing is logged in attributes 8-14).
Attribute | Description |
---|---|
1 |
Date of successful compilation (internal format) |
2 |
Time of successful compilation (internal format) |
3 |
PLID of successful compilation |
4 |
ID of user requesting compilation |
5 |
Account of successful compilation |
6 |
Location of source (filename - including the data section, if appropriate) |
7 |
Source item ID |
8 |
Date of successful catalog (internal format) |
9 |
Time of successful catalog (internal format) |
10 |
PLID of successful catalog |
11 |
ID of user requesting catalog |
12 |
Account of successful catalog |
13 |
Location of executable object (filename) |
14 |
Executable item ID |
The following dictionary definition items are supplied in the dictionary of the global POINTER-FILE. If cataloguing to the global POINTER-FILE then an item is created in the POINTER-FILE,HISTORY data section in addition to any in the source's HISTORY data section.
DH.COMP.DATE - Date of successful compilation
DH.COMP.TIME - Time of successful compilation
DH.COMP.PLID - PLID of successful compilation
DH.COMP.USER - ID of user requesting compilation
DH.COMP.ACCT - Account of successful compilation
DH.CAT.DATE - Date of successful catalog
DH.CAT.TIME - Time of successful catalog
DH.CAT.PLID - PLID of successful catalog
DH.CAT.USER - ID of user requesting catalog
DH.CAT.ACCT - Account of successful catalog
Note: By default, nothing is logged; the user has to enable compile/catalogue history logging (by adding the HISTORY data section).
If a Proc is called from another Proc with the P command, the result might not be as expected; in particular, on completion of the called Proc, it will not return to the calling Proc. In this version, this problem can be harder to identify and solve, in that a Proc could call a TCL Macro which calls a Proc, etc., so error messages have been added to warn the user of this situation. On emulations, these are enabled by default; they can be enabled or disabled as required with the TRAP.EMBEDDED.PROC environment option.
A new account will no longer contain a Q-pointer to the global POINTER-FILE, so it is no longer necessary to delete this before creating a local pointer file. Note however, that to access the global pointer file, you must include the account name (SYSFILES). For example:
LIST /SYSFILES/POINTER-FILE
Reality's command logging features (Audit and Support logs) have been enhanced to give the administrator greater control over what is logged and how the information is presented. For details, refer to the descriptions of the AutditTclLog, SupportTclLog, SizeTclLog and TimeTclLog database configuration parameters.
Two new commands, SYSINFO and WHAT, provide information about your Reality system that can be used for diagnostic purposes.
The way in which Reality updates are installed on Windows hosts now works in a similar way to on UNIX. This permits the installation of a single update if necessary without having to install a complete service pack. For details, refer to the Installing Updates section in the Reality on Windows Installation Guide and the install_fix host command.
It is now possible to remove Windows updates with install_fix. Note: After removing an update, you must run SYS-UPDATE on each database to update the system files.
On UNIX, it is no longer necessary to provide install_fix with the full path to the required update or the directory containing the updates.
Dictionaries can now be marked for auto file size.