Powered by QM on a Linux server
Help and Support

What Was New in Release 2.10?

QM 2.10-4   (released 23 Jul 2010)

When installing a new QM system, the installer now asks whether the internal security system should be enabled. This prompt will not appear on an upgrade installation.

Installation of QM on a USB memory stick no longer has to be in a top level directory.

The PHANTOM command now includes an option to transfer the DATA queue from the parent process into the phantom process.

The SED editor now includes a View function (bound as Ctrl-X V by default) that prompts for a text string and displays a new buffer containing all lines of the original buffer that include the given text. Positioning on a line and pressing the return key goes to the corresponding line in the main buffer.

The SET.FILE command has been extended to allow creation of QMNet style Q-pointers to files on remote systems.

The SETPTR command has been extended to allow control of the character sequence sent where the data contains a form feed character. By default this is a CR FF pair as in previous releases and as required by some PCL printers. The FORM.FEED option of the SETPTR command can be used to change this to FF.

For improved compatibility with other systems, the QUERY.STRING.COMP mode of the OPTION command can be used to enforce string character comparison in the EQ and NE operators of the query processor, equivalent to use of the QMBasic COMPARE() function. With this option disabled, the comparison is equivalent to use of the QMBasic = relational operator in which case a numeric comparison is applied to numeric data.

The SEARCH command has been extended to allow the search strings to be taken from a file.

The BRK command of the QMBasic debugger, used with no qualifying data, shows a list of the currently defined breakpoints. Similarly, use of WATCH with no variable name shows the details of any active watch.

The UMASK configuration parameter can be used to override the default value of the operating system umask on Linux and Unix for direct telnet, QMClient and QMNet connections.

QM 2.10-3   (released 21 May 2010)

Logging in directly to QM via port 4242 (or as redirected) on Linux systems now supports use of additional password encryption methods within the operating system.

As a further step in enhancements to QM security, use of Q-pointers by users with account restrictions imposed using ADMIN.USER will not be able to process files in accounts to which access is denied.

A multifile component can now be used as an element of a distributed file.

QMNet can now open files where the VOC item on the remote system is a Q-pointer that leads to a file on the same server.

QMNet now supports private server definitions that are local to the QM session in which they are defined. See SET.PRIVATE.SERVER and DELETE.PRIVATE.SERVER. The ability to create private server definitions can be restricted using QM's security system.

The RELATIVE option to the CATALOGUE command, used when cataloguing in local mode, stores the pathname of the object file as a relative pathname so long as it is in a subdirectory of the account.

The QMBasic ARG.PRESENT() function provides an easier way than use of ARG.COUNT() to test whether an optional argument variable was passed by the caller to a subroutine or function declared with the VAR.ARGS option.

The QMBasic VSLICE() function has been extended to allow extraction of a subvalue slice from a dynamic array.

The QMClient API QMConnectionType() function now includes a mode to force use of an encrypted data connection. The session will fail to establish if the server does not support encryption.

The QMClient API no longer has a limit on the number of simultaneous connections that may be opened.

QM 2.10-2   (released 9 Apr 2010)

This release contains a critical security fix for Linux systems. IT IS STRONGLY RECOMMENDED THAT LINUX SITES SHOULD UPGRADE AS SOON AS POSSIBLE.

This release includes some enhancements to QM's user security system. The ADMIN.USER command has been extended to allow an optional list of valid or invalid account names to be set for each registered user. To enable this to be enforced correctly, the user names of QMConsole users on Windows systems are now validated in the same way as network users. Any user who is an administrator at the operating system level is not restricted by these changes.

The installer on Mac OS X on Intel systems adds the pathname of the QM binary directory to /etc/paths.d for use in automatic construction of the PATH environment variable.

The ADMIN.USER tool can also be used to control which users can create new accounts when the system is running in secure mode.

The SELECTINDEX command provides equivalent functionality to its QMBasic counterpart to allow construction of a select list containing all indexed values in a specified alternate key index.

The DELETE.INDEX command no longer requires exclusive access to the file.

The PSTAT command now shows the user name of the blocking user when a process is waiting for a lock.

The $QUERY.DEFAULTS record has been extended to allow specification of default options for select operations.

The QMBasic FLUSH.DH.CACHE statement has been extended to add options to give greater control over its effect.

The QMBasic MVEPOCH() function has ben extended to allow a variant with the date and time as separate arguments.

The analysis in a process dump file now includes the persistent data from object variables.

QM 2.10-1   (released 25 Feb 2010)

A minor change to commands that require exclusive access to a file now shows the user number of the blocking user if the action is unsuccessful.

Support has been added for Proc user exit U01A6 for screen painting.

The FILE.STAT command now support use of filenames to limit the report to the specified files.

The CREATE.FILE.NO.CASE mode of the OPTION command can be used to make the default behaviour of the CREATE.FILE command to create files with case insensitive record ids. The CASE option can be used with CREATE.FILE to override this setting.

The QMBasic compiler now supports use of statements such as IF MAT A = MAT B THEN ... to compare two dimensioned matrices for equality.

The OPENSEQ statement can now open a floopy disk drive or other block device. As a result of this, the account import tools can now process Pick style saves on floppy disks.

The FL$SEQTYPE key to the QMBasic FILEINFO() function can be used to identify special file types opened with OPENSEQ (port, character device, block device, FIFO).

The QMBasic SYSTEM() function with key value 1040 can be used to determine whether the underlying operating system file names are case insensitive.

The UVIMPORT tool (documented in the QM KnowledgeBase) has been enhanced to handle UniVerse type 1 files correctly and to add options to simplify import of a complete account.

QM 2.10-0   (released 11 Jan 2010)

Prior to release 2.10-0, the Linux, FreeBSD, Mac and AIX versions of QM used the operating system network server (inetd or related packages) to monitor for incoming connections on ports that were to be routed directly to QM (default 4242 and 4243). From release 2.10-0 onwards, the qmlnxd deamon assumes responsibility for monitoring these ports. Installation of an upgrade to a release that used the previous mechanism will prompt the use to confirm that the old network configuration files should be deleted. Unless use of inetd for QM ports is to be retained, these files should be deleted. It will be necessary to manually restart inetd or its equivalent process after installation before qmlnxd can take on monitoring of the QM ports. Alternatively, simply reboot the system. If there is a good reason to retain the old network monitoring system with inetd, respond N to the prompt regarding deleting the files and then edit the qmconfig configuration file to set the PORT and QMCLIENT parameters to zero.

QM now supports forced writing of every update to selected files for improved resilience to power failures and similar events where data may not be flushed to disk from the operating system cache. See the Dynamic Files section of the QM Reference Manual for a discussion of the ways in which this can be enabled.

As an aid to migration, QM now supports two methods by which string operations in correlatives can be made case insensitive. Firstly, the NOCASE; prefix can be inserted after the correlative type code to make the expression in which it appears case insensitive. Alternatively, the CORRELATIVE.NOCASE mode of the OPTION command can be used to make string operations in all correlatives case insensitive.

As a further aid to migration, field 8 of an A or S-type dictionary item may now contain an IF expression as an implied A-correlative. This code is not supported as a conversion code in field 7.

The QMBasic $MODE directive can now include multiple comma separated mode names.

The PWDELAY configuration parameter can be used to set the pause in seconds between successive attempts to enter the user name and password on network connections.

Other Releases