This release includes features requested by OpenQM users.
The locking system now records the time at which a record or file lock was acquired as an aid to debugging locking issues. The time is included in the LIST.READU report if the DETAIL option is used and also appears in process dump files or deadlock diagnostics.
The optional replacement character in an MCP conversion code can be enclosed in single or double quotes. Empty quotes cause nonprinting characters to be removed without replacement.
The I-type compiler now supports a subset of the options to the $MODE QMBasic compiler directive.
Overwriting an existing local catalog pointer in the VOC now queries for confirmation if the pathname of the object code is different.
The Hot Spot Monitor (HSM) now reports i/o counters (open, read, write, delete).
A new @-variable, @PSTAT, has been added. This can be used to set diagnostic information that will be displayed by the PSTAT command.
The USER, GROUP and MODE keywords have been added to CREATE.ACCOUNT, CREATE.FILE and CONFIGURE.FILE to allow setting of ownership and access permissions on Linux/Unix systems.
The SAVE.LIST, GET.LIST and DELETE.LIST commands now all support an alternative file name.
The SHOW command has a new keyword, SORT.SUP to suppress the default @ID sort.
The WRITE.DELETE.THEN.ELSE setting of the $MODE compiler directive has been extended to include the MATWRITE and MATWRITEU statements.
The SETPTR and SET.QUEUE commands now accept the AT clause in mode 5 to identify the printer to be used on the client PC. This is applicable only to AccuTerm when using a terminal type with the -at suffix.
The FL$LOCKS key to the QMBasic FILEINFO() function returns a list of the locks in the file owned by the calling process. Attempting to enter the debugger in a phantom process raises exception SYS.PROGRAM.NO_PDEBUG if no interactive process is waiting in the PDEBUG command.
The QMClient API now includes QMSystem() to return the value of a SYSTEM() function on the server and QMTrans()/QMRTrans() to perform the equivalent QMBasic TRANS() and RTRANS() operations.
Setting the DEADLOCK configuration parameter to 2 extends the action of mode 1 to save the state of the lock tables as an aid to diagnosis.