Qu'
est ce qu' openqm ? Qu'est ce que les sources ouverts ?
Achetez qm aujourd'hui
Téléchargements
Qu'est qu'il y a de neuf dans les maj
récentes ?
Support
Questions
fréquemment posées
L'information de
développeurs
Applications et
outils de développement
Politique de
confidentialité
Liens
Contactez-nous
|
Qu'est qu'il y a de
neuf dans les maj récentes ? qm 3.0-7
(released 01 mar 13)
pick style
a/s-type dicitonary items can now use the call processing
code in the correlative expression (field 8). the output from
the config command now marks those parameters that have
been set in the qmconfig file or modified in the current
qm session. unmarked parameters take their default values. the find.file
command reports summary information about a file,
including details of the cause if a file cannot be opened. qmbasic includes
an experimental development to support the concept of try/catch
exception handling as found in many other programming
languages.
qm 3.0-6 (released 14 feb 13)
this
release introduces support for ipv6 network addresses in
all networking elements of qm, including direct entry to
qm via telnet, the qmbasic socket operations and qmnet.
ipv6 support must be enabled via the ipv6 configuration
parameter to indicate that it is available in the
underlying operating system. the mcp conversion code now has an
optional element to modify the charater used to replace
non-printing characters. the local.cat.relative setting of the option
command changes the default behaviour of the catalogue
command to store the relative pathname of the program in
the voc item. this makes it easier to move accounts to a
new location but prevents use of remote (r-type) voc
items that reference locally catalogued programs in other
accounts. the full.path option of the catalogue command
overrides this setting. the option command has been modified to show
an encoded version of the option settings that can be
used in place of option names when setting options. used
in, for example, the login paragraph, this can give a
small performance improvement to applications that set
many options in short life processes. the sp.view
command now has an optional by or by.dsnd clause to
modify the sort order of the displayed item list. qmbasic class
modules can now declare public and private variables
using the shared statement. variables declared in this
way are common across all instances of the same class in
a qm process. the new external call interface enables a
qmbasic application to call functions written in other
languages such as c. there is an internal change to the way in
which public qmnet server definitions are stored.
reverting to an older release will require that
definitions for any servers that use a non-default port
number will need to be re-entered.
qm 3.0-5 (released 10 dec 12)
this
release adds support for qm on ibm z-series systems
running suse linux. the command language if statement used in a
paragraph now supports the in and not.in opertors to test
whether an item is in or not in a list of alternative
values. use of this operator can simplify handling of
processing differences based on the @tty variable. the query
processor now supports the median, mode and range field
qualifiers for additional statistical data. the x breakpoint
control option can be used to capture the previous value
of a breakpoint field in @bpv. see the documentation of
the break.sup keyword for an example of how to use this
option. the
qmbasic ospath() function allows a variety of operations
within the underlying file system. as an aid to compiler error
checking, qmbasic now supports $mode explicit to require
all variables, including scalars, to be declared in a
dimension statement. a new configuration parameter, netwait, can
be used to set a timeout applied when opening a qmnet
connection. the default value is 10 seconds.
qm 3.0-4 (released 16 oct 12)
this
release adds support for qm on solaris 10 on intel
processors and for the raspberry pi. note that the
default weak password encryption mode of solaris is not
accepted for network connections to qm. the installation
section of the qm reference manual explains how to change
the encryption. the virtual file system has been extended to
add handler functions that correspond to qmbasic
alternate key index operations (selectindex, setleft,
setright, selectleft, selectright). also, vfs handlers
can now be written as external c programs that can be
used with api libraries provided by other database
vendors. because many vfs handlers may not be able to
support index scanning options, a new fileinfo() key, fl$index.scan,
allows an application to determine whether this
functionality is supported. use of the all keyword in a search
command includes the record id in the search. the setptr
command now supports font and font.size options for use
in conjuction with the gdi option on windows systems
allowing selection of a font name and size. there is a
growing trend for printer vendors to supply only gdi mode
drivers where the default font settings may not be
appropriate. a
new character type function, is.alnum(), has been added
to test whether a character is alphanumeric. the qmbasic
option() function can be used to retrieve the state of qm
options. key
value 1051 to the qmbasic system() function can be used
to determine whether qm is running from a usb memory
device installation. a new qmbasic function, is.widestr(), allows
an application running in ecs mode to determine whether a
string
contains any double width characters.
qm 3.0-3 (released 10 aug 12)
the
catalogue command now has an option to specify the prefix
character for a globally catalogued subroutine separately
from its call name, allowing use of a prefix when
cataloguing from a select list. the @line token can be used in
qmbasic programs as the source line number in the module
being compiled. the @where token is similar but includes
line numbers in nested include records in the form "21.4.31".
these tokens may be useful in constructing program error
messages. the
qmbasic field() function and the equivalent [d,i,n]
operator have been extended to allow use of an asterisk
in place of the number of elements of the string to be
extracted when all beyond the start position is required. key value 1029 (fl$last.part)
to the qmbasic fileinfo() function returns the last value
from evaluating the partitioning algorithm for a
distributed file, including where an error is reported
because the part does not exist. key value 1024 (pu$pathname) to
the qmbasic getpu() function returns the pathname of the
output file of an open print unit. qmbasic now has a redimension
statement (short form redim) that allows a default style
matrix passed as an argument into a subroutine to be
redimensioned in that subroutine. used with a matrix that
is not a subroutine argument or is a pick style matrix,
this statement is identical to use of dimension. two new key
values have been added to the system() function. key 1049
returns true (1) if terminal output has been suppressed
with hush. key 1050 returns true if the current user has
administrator rights. qmbasic subroutines can now be globally
catalogued with a hyphen prefix for improved
compatibility with other environments. the netdelay
configuration parameter can be used to set a period in
seconds for which the server connection for a qmnet file
will remain open after closing the last file in use on
that server. this can improve performance of applications
that repeatedly open files on the same qmnet server. the basic pre-processor
provided as source code in the bp file of the qmsys
account has been extended to allow use of and and or in
conditional compilation tests ($ifdef and $ifndef).
qm 3.0-2 (released 25 jun 12)
the value
of the fsync configuration parameter is temporarily set
to zero while building an alternate key index. qmbasic object
oriented programming method references can include an
empty pair of brackets for improved compatibility with
other oo langauages. the qmbasic swapmarks() function now returns
the original data when used on a non-ecs mode system. the equate token
handling added to the qmbasic debugger in release 3.0-0
has been extended to allow equated tokens on the right of
a set command and in the form /name to show the value of
the token. an
optional !errlog.filter subroutine can be catalogued to
provide error log filtering.
qm 3.0-0 (released 29 apr 12)
this
release includes the first stage of adding extended
character set (unicode) support to qm. handling of double
width glyph characters is known to be incomplete. the
installation process can install either the 8-bit
character version or the ecs version. both versions are
included in the installation download files. the maximum
length of a catalogued program call name has been
increased to the lower of 128 and the value of the
maxidlen configuration parameter. the ct command now supports the id.sup
and num.sup keywords. the qmbasic sselect, sselectn and sselectv
statements now all have an optional right.aligned clause
to cause the list to be generated using a right aligned
sort, typically for numeric data. key value 1047 to the qmbasic
system() function returns a globally unique identifier (guid)
string. key
value 1048 to the qmbasic system() function returns a
numeric value that is unique across all qm sessions. it
resets to 1 when qm is restarted. the qmbasic !findprog() subroutine
has been extended to return comment data inserted into a
program with the $* or $copyright compiler directives. a new qmclient
function, qmevalconv(), has been added. this is similar
to qmevaluate() but applies any conversion code specified
in the dictionary.
qm 2.12-8 (released 01 mar 12)
the qmbasic
compiler can now produce a concordance file that shows
the relationship between the modules that make up the
application. for details see the basic command in the qm
reference manual. for improved compatibility, the change(),
count(), counts(), index(), indexs() and swap() functions
are now influenced by $mode settings that determine
whether overlapping substrings are allowed. the qmbasic
execute and os.execute statements now have an optional
silent clause as an alternative to use of capturing when
the output is to be discarded. the qmbasic pause statement
returns the user number of the process that executed the
corresponding wake via the inmat() function. an extension to
the fsync configuration parameter allows force writing of
all replication log file updates. this gives best best
reliability through system failures but is likely to have
a severe impact on performance.
qm 2.12-7 (released 26 jan 12)
the di
correlative code (convert external date to internal day
number) can now be used in field 8 of an a or s-type
dictionary record. the execute.list command executes one or more
commands for each entry in a select list. the find.program
command now has a detail option for an extended report. the map command
now has a detail option to show the source pathname of
each catalogued item, if available. programs compiled on
earlier releases may not show this. the $ifdef and $ifndef qmbasic
compiler directives can now evaluate multiple tokens in a
simple and/or relationship. the qmbasic compiler now supports
$error and $warning for compilation messages generated
from within the source code. the qmbasic $mode directive trap.unused.main
setting has been added as an alternative to trap.unused.
the difference is that the new mode setting only traps
variables that are set in the main body of the program
and never referenced, ignoring any that are set in
include records. the qmbasic nv() and ns() functions build a
dynamic array of value and subvalue positions
corresponding to a supplied data item. the qmbasic
objinfo() function has been extended to return a dynamic
array containing all the public names in the class and
any inherited classes. the qmbasic parse() function parses a string
against a pattern match template, returning a copy of the
string with a delimter character inserted between the
portion of the string matching each pattern element. four new
qmclient functions have been added. qmiconv() and qmoconv()
apply
a conversion code to a supplied data item. qmevaluate()
evaluates a dictionary item such as an i-type.
qmclearfile() clears a file. the feature configuration
parameter controls miscellaneous product features. at
this release, the only supported key value is 1 to
suppress the prompt re updating the voc on entry to qm
after installation of a new release.
qm 2.12-6 (released 25 oct 11)
this is
a bug fix release only. there is no new functionality.
qm 2.12-5 (released 24 oct 11)
this
release corrects a potential security risk on linux
systems that could allow a qm process to run with the
incorrect access rights. the query processor can now produce xml
format reports. see the xml query processor keyword for
details. the
fmt qualifier to the vertically query processor keyword
has been extended to allow a default format code to be
specified that will be applied to all display clause
elements except those that are defined in the dictionary
as right justified or those with their own explicit fmt
qualifier. this enhancement allows unwanted line breaks
in data items to be omitted without needing to create
separate dictionary items for use in vertical reports. the qmbasic
readcsv and matreadcsv statements have been extended to
allow specification of an alternative delimiter. the qmbasic
server,window() function, available only on windows
systems, opens an asynchronous application window to run
programs such as excel, word or a web browser. it is of
particular use in qmconsole sessions where the client
side asynchronous command execution feature of accuterm
is not available. the qmclient c library on windows (qmclilib.dll)
now supports use in multi-threaded programs.
qm 2.12-4 (released 28 sep 11)
multiple
usb memory stick installations on windows can now run in
parallel with a server based installation. the pstat
command has been extended to allow display of qmnet
server details. the selectindex command to build a select
list from an alternate key index at the command prompt
now supports a value option to select records where the
indexed field has a specified value (as in the qmbasic
equivalent).
qm 2.12-3 (released 23 sep 11)
dictionary
link records can now be used to reference a/s type items. the default.mv
mode of the option command can be used to specify that c,
d or i type dictionary items in which the single/multivalue
flag is blank to be treated as multivalued instead of
defaulting to single valued. the qmbasic compiler now supports
use of most statements that have a then/else clause as
conditional elements in a while or until statement. for
compatibility with other systems, the adds(), divs(),
muls() and subs() functions as synonyms for the standard
arithmetic operators. these are mostly relevant when
migrating software that used these functions to perform
arithmetic operations on dynamic arrays. they are
strictly unnecessary in qm because the standard operators
support this capability. the qmbasic call statement has been extended
to allow the pick style call with a file name and program
name. the
qmbasic sselectn and sselectv statements have been added
to mirror the capabilities of the unsorted selectn and
selectv statements. as with the unsorted version, there
is a compiler mode switch to make sselect equate to
either of these.
qm 2.12-2 (released 18 aug 11)
this
release introduces 64-bit versions of qm though some are
available only on controlled release at this stage. a new mode flag,
r, has been added to field 6 of the f-type voc entry to
specify that the file is to be read-only. the mt
conversion code now includes an m option to specify that
the time value in an output conversion is in milliseconds.
the fractional seconds will be included in the converted
data if the s option is also present. the nls (national
language support) command and the corresponding qmbasic
operations have been extended to enable a different
decimal separator to be used for implicit conversions
than for oconv(). see the qm reference manual for the
rationale behind this capability. the qmbasic csv.mode statement has
been extended to allow an alternative delimiter character
to be specified. the qmbasic precision statement now has an
option to inherit the precision of the parent program. the !account.rules()
subroutine allows an application to determine the
accounts that a specified user may or may not enter
according to rules set in the qm application level
security system. a new keyword has been added to the $debug.options
record, no.source.warning, to suppress the message
displayed if a source file cannot be found when using the
qmbasic debugger.
qm 2.12-1 (released 03 may 11)
this is a
bug fix release. there is no new functionality.
qm 2.12-0 (released 27 apr 11)
this
release introduces the concept of a "user mode"
installation on linux, unix and mac based systems. an
installation of this type does not require the user to
have root access to the system but, as a result of this,
potentially reduces system security. it is possible to
install multiple user mode instances of qm on the same
system, each operating in its own isolated environment
and each separately licensed. there are some important
rules to observe when using a user mode installation as
detailed in the installation section of the qm reference
manual. qm
now has limited support for triggers on directory files.
these will be called for all updates made to the file
from within qm except for sequential file processing (writeseq,
etc) and use of oswrite or osdelete. it is no longer
necessary for trigger subroutines and subroutines called
from either triggers or alternate key index expressions
to be visible in the cataloguing system from the qmsys
account when using qmnet. the qmnet server process will
effectively execute in the account in which the file was
opened. a
similar modification to the replication subscriber
process means that it is also no longer necessary for
subroutines called from index expressions to be
catalogued in the qmsys account when using replication. account
replication now includes an option to prompt for
confirmation before replicating a command on a remote
system. the
dir_dict file in the qmsys account (a template dictionary
to use with directory files) has been extended to contain
three new items: days for the number of days since the
record was modified, dtm for the actual date/time of
modification, and owner for the username of the owner of
the record (not windows). the trans() function in a
dictionary i-type item can now return the value of an a,
s or c type item from the target file. the mcs
conversion code converts the first alphabetic character
of each sentence in the supplied data to uppercase. the create.account
and create.file commands now support options to set
ownership of the account or file to a specific user and
group on linux, unix and mac systems. in the case of
create.file, the behaviour when these options are not
present defaults to using the user and group of the
process that executes the command but can be set to
inherit ownership from the account directory by use of
the inherit.ownership mode of the option command. the create.index
and make.index commands now check for a voc record named
$index.path to specify the default location for indices.
a command option is available to override this action. the listf,
listfl and listfr commands can now include a with or
without clause that references encryption, replication or
trigger to show only files that meet the specified
criteria. the
list.replicated command can be used to report a summary
of files for which replication is active. the list.triggers
command has been extended to handle multi-files and to
report triggers applied to dictionaries. the redo command
can be used to repeat a command at specified intervals
and/or a specified number of times. the sp.assign command now shows
the form queue associated with the default printer if no
command options are present. the query processor search command
now includes a for keyword to allow search strings to be
specified on the command line. there is also now no limit
on the number of search strings that may be specified in
a search command. the qmbasic compiler now supports use of the
no.query keyword in either the $catalogue directive or
the catalogue entry in the $basic.options record to
suppress the prompt that normally appears if the program
is already catalogued in a different mode. key value 1045
to the qmbasic system() function returns the time at
which qm was started as an epoch value. a new command,
window, in the full screen mode of the qmbasic debugger
can be used to change the command window size. two new
functions, qmcallx() and qmgetarg(), are available in the
c version of the qmclient api. these remove the need for
an application to pre-allocate space for the longest
possible value of argument variables returned by a called
subroutine. a
new function, qmgetvar(), has been added to the qmclient
api to retrieve the value of an @-variable from the
server. the
security configuration parameter can be used to set
system wide security options. at this release the only
option available is to require the user to have write
access to the dictionary when using the eval clause in a
query. this
release introduces a new manual to the documentation set,
tyqm.pdf, that is a "teach yourself qm" self-study
training package. based on material used by ladybridge
systems for trainer led courses, this package assumes no
prior knowledge and works through a series of practical
exercises that ultimately construct a simple sales order
processing system.
qm 2.11-3 (released 09 feb 11)
the
optional master.login paragraph is now executed for
qmclient connections in the same way as for interactive
and phantom sessions. inline prompt control elements are now
largely case insensitive. the configure.file command now
supports a reporting option to show progress. the qmbasic csv.mode
statement can be used to set the conversion rules applied
by the formcsv(), printcsv and writecsv operations.
formcsv() is also new at this release. the current csv
mode can be determined using system(1043) and defaults to
one at each command processor level until changed. the qmbasic open.socket()
function now has an optional timeout value that will
terminate the attempt to connect to the remote system
after a given number of seconds. to avoid problems with run time
errors in qmclient applications that have no screen (e.g.
the server side of a web application), the
qmconnectiontype() function can be used to set a mode in
which errors are returned only via the qmerror() function,
never as displayed messages.
qm 2.11-2 (released 10 dec 10)
the data
replication system can now replicate updates to directory
files so long as these updates are from within qm. the
replication system has also been extended to allow "account
replication" where a user definable set of commands
that affect the structure of an account (e.g. create.file)
can be automatically replicated on a susbcriber system. the maximum
number of simultaneous replication subscribers that can
be active at one time on a publisher is now configurable
via the replmax parameter. this defaults to its previous
value of 8. the
qmbasic input, input@ and inputfield statements now
support a no.echo option to suppress echo of input data.
qm 2.11-1 (released 17 nov 10)
this
release supports use of a qmcfg.dat file to control
installation of qm, allowing developers to construct self-installing
applications without the need for third party installer
packages. see the "building a self-installing
application" in the qmbasic section of the qm
reference manual for details. the backslash.not.quote mode of
the option command can be used to cause the command
processor to treat backslashes as data characters instead
of recognising them as string
quotes. this option does not affect use qmbasic use of
string quotes.
qm 2.11-0 (released 20 oct 10)
this
release introduces data replication as a licence option.
for details, see the qm reference manual. there is a
change to the format of the qmconfig configuration
parameter file. in previous releases, the qmsvc, qmsrvr
or qmlnxd parameters were previously in a section with
tag [qmsrvr]. these parameters have been merged with the
[qm] section, renaming maxlog as srvrlog and qmclient as
cliport. the [qmterm] section that relates to the largely
obsolete qmterm terminal emulator has been moved to a
text file named qmterm.ini in the qmsys account directory.
the [qmnet] section that holds qmnet server definitions
has been moved to a separate file in the qmsys account
and extended to allow greater security of qmnet logins.
the qmconfig file will be converted automatically on
installation of this release or later. the original file
is retained as qmconfig.old. when running a program by entering
its catalogue name at the command prompt instead of the
name of a voc verb entry, the command processor will
examine the command arguments for the lptr and no.page
keywords. if these are found, the relevant mode is
applied, leaving the options in place for the program to
process separately if it performs its own command line
scan. the
admin.server command can be used to impose security rules
on qmnet server definitions. the admin.user command has been
extended to allow a user to be assigned to a qm user
group for use in other areas of qm's security system. the
group name of a qm process can be retrieved using the @qm.group
variable. a
no.map option has been added to the configure.file
command to set the t flag in the voc entry for a
directory file to suppress translation of reserved
characters in record ids. the disable.index command no
longer requires exclusive access to the file. the edit.config
command has been added for use by administrators in the
qmsys account to modify the configuration parameters. the file.stat
command now has an option to include dictionaries in the
report. a no.page
option has been added to the map command. the option
command paginate.on.heading mode can be used to enable
screen pagination when the application sets a page
heading or footing. this option would normally be used in
conjunction with the run.no.page option or the no.page
keyword to the run command. the pterm command has been
extended to add the mark option. this allows selection of
a mode where entry of characters 28 to 30 at the keyboard
will be translated to field, value and subvalue marks
respectively. the set.server command has been extended to
allow security settings to be copied from another server
definition. the
set.trigger command no longer requires exclusive access
to the file. the
sort.list command sorts a saved select list. use of the csv
or delimiter keywords to the query processor to create a
delimited report will treat value marks embedded in data
that is defined as single valued as normal data
characters, resulting in the entire multivalued item,
including the delimiters, as being output as a single
element of the report. this change improves compatibility
with some other systems. the vertically keyword of the query processor
now has an optional fmt qualifier to modify the format in
which the field name is output. the qmbasic select.socket()
function can be used to provide asynchronous operation of
multiple socket connections. the qmbasic set.socket.mode()
function has a new key, skt$info.trace, to enable socket
tracing where data transmitted in either direction is
written to a diagnostic log file. the qmclient api now includes new
functions qmchecksum(), qmencrypt() and qmdecrypt() that
are compatible with the qmbasic checksum(), encrypt() and
decrypt() functions.
qm 2.10-4 (released 23 jul 10)
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 10)
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 09 apr 10)
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 10)
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 10)
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.
qm 2.9-9 (released 04 nov 09)
this
release includes a modification to the sort algorithm
used for right justified fields in the query processor
and in alternate key indices. this modification provides
greater compatibility with other multivalue products
where the items contain a mix of numeric and non-numeric
data. it is recommended that any right justified
alternate key indices should be rebuilt in case of
incompatibility. note that this change does not affect
tha action of right justified items in the qmbasic locate
statement as this would potentially make existing data
inaccessible. the voc $private.catalogue record may now use
the american spelling, $private.catalog. if both records
are present, the british spelling takes priority. the listu, list.phantoms
and status commands now show the login time of the
processes reported in the local time zone of the user
executing the command. the query processor in and not.in operators
have been extended to allow the list of acceptable/unacceptable
values to be stored in files other than $savedlists. two new qmbasic
functions, file.event() and wait.file.event(), allow a
program to wait for changes in a windows directory in an
efficient manner. for compatibility with other systems, the
last accessed and last modified date/time values returned
by the qmbasic status statement are now in the user's
local timezone. two new fields have been added to the
returned data that hold the equivalent data in epoch
format. the
qmbasic debugger has been modified to show the
conditional element of a case statement prior to
executing the conditioned code. the cleanup configuration
parameter allows system administators to set the interval
in seconds between automated scans for qm processes that
have terminated abnormally, perhaps as a result of a
network connection loss. if not present, this interval
defaults to five minutes as in previous releases. the startup
configuration parameter has been extended to allow the
account name and user name to be specified. multiple
startup parameters may also be used.
qm 2.9-8 (released 08 oct 09)
this
release is primarilly to correct an issue where the
windows installer did not complete successfully. the correlative.reuse
mode of the option command causes all operators in
correlative expressions to behave as though the reuse (r)
option was present.
qm 2.9-7 (released 30 sep 09)
the copy
and copyp commands now both have an option to override
the default action of using binary mode data transfer
when both files are directory files. this is particularly
relevant when using qmnet to move data between linux and
windows. the
ed command now supports a fit.screen option in the $ed.options
record to cause the default display size of the p, pl and
pp commands to be set based on the screen size. as an aid to
diagnosing printing problems, the spool.command option of
the option command can be used to display the operating
system command used to initiate printing (not windows). the sed editor
has been extended to support esc-m as a shortcut to
compile a program from within the editor without running
it. the sed
editor search sequence for editor extensions now looks in
the &sed.extensions& file in the qmsys account if
the extension is not found in any of the defined search
location. this file is now shipped with the walk
extension that appears in the qm reference manual. multivalued
fields are now handled by delimited reports from the
query processor.
qm 2.9-6 (released 17 aug 09)
a bug fix
in the qmbasic locate statement means that programs
compiled on this release that use locate will not run on
earlier releases. forward compatibility for programs
compiled on earlier releases has been maintained. for improved
compatibility with other multivalue environments, the
default pick style select list variable used by selectv (and
select when the selectv option of $mode is active) if no
target variable is specificed is now the same as numbered
select list zero. the dir.dtm mode of the option command can be
used to cause qm to update the date/time modified of the
directory when writing to a directory file or on closing
a sequential file that has been written. this option is
not available on windows. the virtual file system (vfs) now
supports use of pick style select list variables. the
changes to add this new functionality also remove the
risk of a vfs handler overwriting a numbered select list
that is used by the application. for improved performance,
the vfs now also supports partial select list generation
where the list is generated as it is being processed.
applications that use the vfs may need changes to the vfs
handler select list generation functions. details are
included in the template vfs.cls in the bp file of the
qmsys account. the catalogue verb now skips items with
invalid catalogue names, reporting the error to the user. the option
command can now take multiple option names. the qmbasic
formlistv statement can be used to build a pick style
select list variable from a dynamic array. two new qmbasic
functions, rounddown() and roundup(), have been added. the qmbasic
return from program statement provides a neater and
faster way to return from a call regardless of internal
subroutine depth than use of repeated return to
statements. the
operating system level qm -u command now shows the
command line used to start a phantom process as an aid to
identifying specific qm processes. the qmsave tool, documented in the
qm knowledgebase on the openqm.com web site, can be used
to transfer data to qm from other environments.
qm 2.9-5 (released 08 jul 09)
two new
qmclient functions have been introduced. qmselectpartial()
builds a select list and returns multiple record ids in a
single operation. qmnextpartial() returns the next part
of the list. these functions provide better performance
than reading the list item by item with qmreadnext() or
in its entirety with qmreadlist().
qm 2.9-4 (released 26 jun 09)
the f-type
voc entry record has been extended to add open mode flags
in field 6. only one is currently defined. a letter t
suppresses translation of restricted characters in record
ids in directory files, leaving it up to the application
to ensure compliance with operating system naming rules. procs now
support the u01ad user exit. the command stack editor ctrl-r
function has been enhanced to work more like its
equivalent in other multivalue sytems. the basic
command now supports use of a $basic.ignore control
record which, determines which, if any, source records
are skipped when using a select list or the * option. the find.program
command can be used to locate and report details of a
catalogued program. the rebuild.all.indices command has been
extended to support the concurrent option. the qmbasic
function, subroutine, public function and public
subroutine statements now support provision of a default
value for arguments not passed by the caller when
declared using the var.args option. the no.map qualifier to the
qmbasic open, openpath, openseq and deleteseq statements
suppresses record id translation in directory files. use of the linux/unix
kill command with signal 1 or 15 will now pass this on to
the child process if the qm process is executing an
operating system command.
qm 2.9-2 (released 08 jun 09)
the windows
configuration editor and qmadmin tools are no longer
included with qm. this is because microsoft have
withdrawn functions that are needed by these tools.
configuration parameter changes can be applied to the
qmconfig file with any text editor. all functions of
qmadmin can be achieved using command line tools. for improved
consistency, both min.modulus and minimum.modulus are
accepted by the create.file command and the equivalent
qmbasic statement where previously each took just one of
these synonyms.
qm 2.9-1 (released 02 jun 09)
this is a
support release. there is no new functionality.
qm 2.9-0 (released 29 may 09)
this
release adds support for the powerpc variant of the ibm
rs6000 under aix. this release introduces distributed files
that provide a view of multiple separate hashed files as
though they were a single file. uses of distributed files
include improved query performance by working with a
reduced data set, load balancing over multiple disks,
avoiding operating system file size limits and
geographical separation of data over multiple servers. this release
extends date and time handling to include support for
applications that operate across multiple time zones. the
qmbasic epoch() function can be used to return the
current date and time in time zone independent epoch form.
the e conversion code can be used to convert this to
external form and vice versa. the time zone used by the e
conversion is determined by the timezone private
configuration parameter that may be updated for an
individual qm session using the config command or the
qmbasic set.timezone statement. the default time zone is
taken from the operating system tz environment variable.
as part of this development, the d conversion code has
been extended to support two iso 8601 date formats. there
are several functions to convert between epoch values and
traditional multivalue date/time values. note that epoch
handling is only fully supported in the linux, freebsd
and mac versions of qm. aix provides partial support.
windows support of time zones is very limited and cannot
provide the full functionality of other platforms. the number of
digits in the cyclic sequence number used by the next
option of the setptr and set.queue commands can be
changed from its default value of four by entering the
required number of digits in field 3 of the record named
$next in the dictionary of the $hold file. this value
must be in the range 3 to 9. the authenticate command has been
extended to support encrypted passwords. the copy.listp
command has been introduced as a pick syntax version of
copy.list. the
list.index command has been extended to allow the report
to be directed to a printer. it can now also report
indices in all files in the account. the list.phantoms
command provides a variant on the information shown by
listu and status. the list.triggers command has been added to
provide a summary of all trigger subroutines used by
files in an account. the pick style listdict command (as distinct
from use of list dict) has been enhanced to include d and
i-type records. the make.index and build.index command now
support a concurrent option that allows an index to be
built while the file is in use. there is a performance
penalty for this and the qmbasic selectindex, selectleft
and selectright statements may stall waiting for the
build to complete. the pstat command has been extended to allow
selection of the processes to report by user login name.
multiple user numbers or login names may be included in a
single command. the set.date command has been withdrawn. the chained.select
mode of the option command enables pick style behaviour
of a select operation where, if the data queue is active,
the command in the data queue will be executed on
completion of the select if at least one record was
selected. if no records were selected, the data queue is
cleared. the
option d3 and option mvbase commands provide shortcuts
for setting multiple options that provide closer
compatibility with other products. the implied.stop option of the $mode
compiler directive will insert an implied stop at the end
of a program, subroutine or function in place of the
return that is normally inserted. the qmbasic dir() function has
been modified to preserve the case of items in case
insensitive file systems (e.g. windows). this change may
require some applications that use this function to be
modified to convert the returned data to uppercase. this
function now also returns a third value containing the
file attributes for each item. the format of this new
data is platform dependant. the qmbasic flush.dh.cache
statement can be used to force other qm processes to
flush their cache of recently closed dynamic files. this
should rarely be needed but allows a process to ensure
that it is not blocked in an operating system level file
action by some other process having a file cached. two new styles
of the for/next loop have been introduced in qmbasic.
these allow execution of a loop for a comma separated
list of values and for each mark character delimited item
in a variable. when the selectv option of the $mode compiler
directive is in effect, the qmbasic select and readnext
statements treat the list variable as optional,
defaulting to an internal variable that is local to the
program in which these statements are used. the qmbasic
vocpath() function can be used to resolve a filename to
its corresponding pathname, following q-pointers and
applying extended filename syntax rules. the !phlog()
subroutine can be used to determine the name of the log
record for a phantom process. where both ends of the connection
support it, qmclient and qmnet now encrypt network
traffic. as a consequence of this change, the qmclilib.o
object module previously released on linux, freebsd and
mac has been replaced with the libqmclient.a library. the
only change required in non-windows qmclient applications
is to use this new library in place of the old qmclilib.o
when linking the program. existing programs will continue
to run but will not encrypt network traffic. the qmrevision()
function of the qmclient api can be used to determine the
version levels of the client and server sides of the
connection. a
new private configuration parameter, dhcache, has been
added to control the size of the dynamic file cache. in
most instances, the default value of 10 is probably
adequate. a
process started by the startup configuration parameter
now runs with @tty set to "startup". this
allows, for example, special handling in the login
paragraph.
qm 2.8-10 (released 16 mar 09)
the inline
prompt mechanism has been extended to allow the
equivalent of qmbasic change(), iconv() and oconv(). this
feature is most useful with nested inline prompts where
the change or conversion is applied to some other prompt
value. the
sed editor now supports a trim command to remove trailing
spaces from all lines in the record being edited. the synonym @account
may now be used in place of @who. the qmbasic filelock and
fileunlock statements have been extended to add optional
then and else clauses.
qm 2.8-9 (released 02 mar 09)
alternate
key indices may now be defined as being case insensitive
when they are created using create.index or make.index.
the internal sorting of a case insensitive index is based
on an uppercase version of the data but operations such
as selectindex will find data regardless of casing. note
that because indices are stored in sorted order, a case
sensitive index cannot be used in a query that uses case
insensitive comparisond or vice versa. the column
widths of the fstat command have been increased to allow
for the high performance of mft drives. the options to
the list.files command have been modified such that the
default action is to show the statistical counts and the
pathnames of open files. the brief option suppresses the
pathname display. the detail option extends the report to
show the user numbers and user names of the users with
each file open. a file name can also be provided to show
only users with that file open. the user option can be
used to show only files open to a specific user. when a print
unit is directed to a file, a check is made to see if
there is a catalogued subroutine named hold.file.logger
and, if there is, this is called when the file is opened
and again when it is closed. this subroutine can be used,
for example, to build a log of hold file entries or to
take some action after the file has been closed. the query.merge.print
mode of the option command causes a query report directed
to a printer to merge the output as a continuation of the
active print job if the printer is already active,
leaving the printer active on completion of the report.
without this option, the printer is closed at the end of
the report. the
rebuild.all.indices command rebuilds the alternate key
indices of all files referenced by f-type voc pointers in
the account from which it is executed. this may be of use
following a system power failure where some data may not
have been written to disk, ensuring that the indices
correctly reflect the data stored in the files. the setptr
command now has an eject option to force insertion of a
form feed at the end of the job. the query processor now supports
pick style explosion limiters on by.exp and by.exp.dsnd
if the qualified.display mode of the option command is
enabled. the
stacklist option of the qmbasic execute statement causes
qm to save the current state of the default select list (list
0) prior to executing the command and then restore it on
return to the program. this allows the executed command
to use the default select list internally. key value 1021 (fl$who)
to the qmbasic fileinfo() function returns a field mark
delimited list of the qm user numbers of user that have
the file open. the qmbasic md5() function encodes a string
to its md5 message digest value. the qmbasic open and openpath
statements now support a non.transactional option to
indicate that updates to the file are not to be treated
as part of any transaction in which they occur. the qmbasic
system() function has been extended to add key value 1036
to return the delay period for a login that had to wait
for a spare user to become available when using the
lgnwait configuration parameter. applications can use
this data to perform statistical analysis for determining
whether a larger licence is required. key value 1037
of the qmbasic system() function returns a list of all qm
files open in the system and the user numbers of the
users with them open. the full screen mode of the qmbasic debugger
has been extended to add the /* command to view all
variables in the program. the pda version of qm now supports
limited capabilities for incoming telnet connections. the terminfo
database now supports the stylus and pdakeys capabilities
for the pda version of qm.
qm 2.8-8 (released 19 jan 09)
for
compatibilty with other systems, a divide by zero in a
correlative now returns zero with no warning or fatal
error. divide by zero in qmbasic programs or i-type
dictionary items continues to behave as in previous
releases. the
pick.ml.conv.mask mode of the option command can be used
to modify the behaviour of the ml and mr conversion codes
so that the format mask element may be enclosed in round
brackets. use of this mode diables recognition of a left
round bracket as a code requesting negative values to be
enclosed in round brackets. the create.file command now
supports a mode option to set the access permissions for
the file (not windows). the delete command now reports a warning and
continues if a record cannot be deleted because it is
locked by another user. the inform option of the setptr command
causes the name of the output file to be displayed when a
mode 3 print job starts. the qmbasic clearcommon statement has been
extended to allow clearing of a specific named common
block. use
of mode 3 printer output to direct printer output to a
file now takes an update lock on the item while it is
being written.
qm 2.8-7 (released 17 dec 08)
validation
of directory file record ids has been modified to allow
an extended range of characters. the proc processor has been
enhanced to support [] as a call to a subroutine in the
same procedure and to allow an alternative fb syntax. for
compatibility with other multivalue systems, the if
conditional expression in a correlative now returns a
null string if the relevant then or else element is not
specified in the expression. the force.reload mode of the
option command can be used to force a complete reload of
the qmbasic object code cache when a program is compiled
or catalogued. this should be used with care as described
under the qmbasic call statement in the qm reference
manual. the
listu command has been extended to include a detail
option to show the current count of qm processes of each
type and the peak number of processes that consumed a
licence. the
query processor selection commands now treat a field name
on the command line that is not part of a selection or
sorting clause as being an implied use of saving
multivalued. this is for improved compatibility with
other systems. the query processor l breakpoint option is
ignore when used with the u option for improved
compatibility with other multivalue environments. qmbasic now
supports trailing substring assignment, e.g. a[3] = 'abc'. the qmbasic
testlock() function can be used to return the owner of a
specified task lock, zero if the lock is free. the trans(),
rtrans() and xlate() functions have been modified such
that failing to open the file will take the error action
defined by the error code argument to the function. local functions
and subroutines in qmbasic programs that take a whole
matrix as an argument, no longer need a dim statement to
declare the dimensionality of the matrix. the watch
command of the qmbasic debugger has been extended to
allow a condition that must be met for the program to
stop. the
lgnwait configuration parameter can be used to set a
period in tenth of a second units for which a process
will wait if it is unable to login because the user limit
has been reached, trying again every tenth of a second.
this feature can be useful in web server applications
where peak loads could briefly exceed the licensed user
limit. five
new terminfo codes have been defined; eblink, eprot, edim,
erev and ebold as the codes to turn off the corresponding
blink, prot, dim, rev or bold display attribute. if these
are not present in the terminal definition, the sgr0 code
is used as in previous releases. this change allows qm to
handle terminals that support multiple simulataneous
display attributes.
qm 2.8-6 (released 10 nov 08)
this
release fixes a bug in the linux installer that may set
permissions incorrectly. there is no new functionality.
qm 2.8-5 (released 06 nov 08)
this
release contains an important change for windows users.
qm is only usable while the qmsvc service (or qmsrvr on
windows 98/me) is running. this change has been
necessitated by a change in windows regarding how shared
memory works. for a detailed description of the reason
for the change, see the openqm knowledgebase at www.openqm.com/cgi/lbscgi.exe?t0=h&t1=kb.00008. the absent.ignore
keyword can be used in a query command to suppress the
list of unfound records when ids are present on the
command line or in a select list that are not present in
the file being processed. the query processor csv option now
supports a third mode (3) to quote all items. the basic
command no.query option can be used to suppress prompts
from the compiler. currently the only prompt that can
occur is the confirmation when replacing a catalogued
item. a new
command, file.stat, has been added to produce a summary
report of all files in one or more accounts. the if command
used in a paragraph now supports exists and not.exists to
check whether a record exists. the listu command now shows the
account name for each user. as part of this modification,
the process id column (pid) is now sized to fit the
longest pid value in the report with a minimum width of
four characters. this may affect any programs that
capture and post-process the output from listu. such
programs are probably better modified to use the !listu()
subroutine. the
reset option of the logto command has been extended to
add reset all which discards all programs, menus,
paragraphs, etc at all command levels. for improved
compatibility with other systems where phantom processes
can be started as specific user numbers, the phantom
command now has an optional user clause that specifies
that the user number for the new process. this number
must be in the range defined by the phantoms
configuration parameter. the set.file command has been modified to
allow creation of q-pointer chains though this not
recommended. the
qmfix tool has been extended to add a new option, -z,
that will clear the dead space at the end of a group.
this has been added to correct a security risk where an
encrypted file could have unencrypted data left in this
area after splitting a group. users with encrypted files
are recommended to run qmfix with this option once on
each encrypted file. the underlying error in the group
split process has been corrected so the problem will not
recur.
qm 2.8-4 (released 09 oct 08)
the
diagnostic data produced by the pdump command now shows
the length of a string variable. the md conversion code is now more
flexible in the order of its options. the !listu()
qmbasic subroutine now returns the account name for each
user.
qm 2.8-3 (released 03 oct 08)
to avoid
some operating system security restrictions, the
configuration file has been moved into the qmsys account
directory where it is now named qmconfig on all platforms.
an upgrade installation will automatically move this file.
use of the qmclient qmconnectlocal() api needs to know
the location of this file. if it is not in the default
location (c:\qmsys on windows, /usr/qmsys on other
platforms), the qmsys environment variable must be set to
specify the location. the authenticate command can be used by a qm
process started by the startup configuration parameter to
reduce its privileges to those of some other user known
to the operating system. the query processor break.on and break.sup
keywords now support the n option to reset the page
number to one at each breakpoint. this option implies the
p option if not used with b or p. the $mode compiler directive can
be used to enable support for the default file variable
found in some other multivalue products. two variants of
the default variable are provided; one in which the
variable is local to the program in which it is used (as
in d3 and unidata), the other in which the variable is
common to all programs at the same command processor
level (as in universe). the qmbasic statements that
support use of the default file variable are clearfile,
close, delete, deleteu, filelock, fileunlock, matread,
matreadl, matreadu, matwrite, matwriteu, open, openpath,
read, readl, readu, release, select, selectn, selectv,
sselect, write and writeu. other statements and functions
can use @stdfil to reference the default file variable. a new qmbasic
getpu() function mode, pu$form.queue, can be used to
retrieve the form queue number from the last use of sp.assign
for a print unit. the qmbasic debugger now supports a "step
over" command to step over a call to an internal or
external subroutine without debugging its execution
unless it contains a debug statement to force entry to
the debugger. a qmbasic program can now test the status()
function immediately after an end transaction statement
to determine whether the transaction committed
successfully. the qmbasic system() function supports two
new key values. key 1033 returns true if a como file is
active. key 1034 returns true if como output has been
suspended. entering
a blank command line in the qmbasic debugger now repeats
the last command.
qm 2.8-2 (released 12 sep 08)
the como
command has been extended to allow an existing record to
be appended. also, logging of output can be suspended and
subsequently resumed with the suspend and resume keywords
to the como command. records in the $como file now go through the
same process as other directory file records to transform
names that contain invalid characters. the delete.account
command now checks for subdirectories that are also
accounts before deleting an account. the force option
suppresses this check. the listdict command reports a and s-type
dictionary records in a format similar to that used by
pick style systems. the keep.old.object mode of the option
command causes the qmbasic compiler to leave any previous
version of the object code in place after a failed
compilation instead of deleting it. use of this mode
provides compatibility with some other products but is
not recommended as a developer who fails to notice the
compilation error may then go on to debug a program that
has not actually been compiled. the qmbasic child() function can
be used to determine whether a phantom process started
from the session in which this function is used is still
running. the
qmbasic dquotes(), quotes() and squotes() functions
provide multivalued equivalents of the dquote(), quote()
and squote() functions, enclosing each element of a
dynamic array in the appropriate type of quote. the !listu()
qmbasic subroutine can be used to obtain the raw data
used by the listu command. the way in which qm searches for
public names in a class module has been changed to
provide a substantial performance improvement to classes
with very large numbers of public names. as a result of
this change, class modules compiled at this release
cannot be run on earlier releases of qm. older class
modules will run on the new version without recompilation. entries in the
error log now include the account name of the process
that generated the message.
qm 2.8-0 (released 25 jul 08)
important
note: release 2.8-0 renames the subfiles that form a
dynamic hashed file. in earlier releases these were ~0, ~1,
etc. they have been renamed to %0, %1, etc because two pc
cleanup utilities have been indentified that incorrectly
assume that any files with names commencing with a tilde
are temporary items that can be deleted. conversion to
the new names is automatic when a file is first opened by
the new release but reverting to an earlier release will
require manual renaming of the subfiles. use of qmnet to
access files on a different revision is not affected. a
quick way to convert all files in an account is to use
listf as this will open each file referenced by the voc. qm now supports
use of a and f-correlatives as conversion codes. these
are provided to ease migration from other systems and
their use is not recommended in new developments. in
particular, the performance of an a-correlative used as a
conversion code with the iconv() or oconv() function will
be poor as the expression must be transformed to the
equivalent f-correlative and then executed interpretively
for every use of the conversion function. when used in
the query processor, this transformation is performed
only once as part of parsing the query. the copyp
command has been modified for improved compatibility with
other systems such that entering a null response to the
to: prompt will display the records at the terminal. the stacked.account
mode of the option command causes a program that performs
an execute which directly or indirectly logs to a
different account to revert to the original account on
return from the execute. the query processor in operator can be used
in a with or when clause to restrict output to only those
items where the content of a field is in a previously
saved select list. this can simplify queries that test
against a large number of values. the corresponding not.in
operator reports only items not in the named list. the qmbasic
abort and stop statements now automatically use pick
style message handling if there is a comma after the
message. the
qmbasic removef() function can be used to extract
successive delimited items from a string using the same
performance optimisation as remove. the qmbasic debugger now includes
the pdump command to generate a full process dump file
and the xeq command to execute commands. a new qmclient
function, qmtrapcallabort, has been introduced to allow a
qmclient session to trap aborts that occur in a
subroutine called by qmcall.
Les maj plus anciennes n'ont pas été mise
sur cette page
|