| 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 |