Powered by QM on a Linux server
Help and Support

KnowledgeBase 00093: Application Portability Between Platforms

Top level index       Full Index Search Tips
Previous article     Next article

This article describes issues that may arise when moving an application between different platforms.

QMBasic Programs

QMBasic object code is portable across all QM platforms so long as it does not make use of platform specific features.

If object code is moved to a platform where the byte ordering differs from the system on which it was compiled, the process of loading the program into memory will automatically convert the program to the new architecture. There is a small performance advantage in either recompiling the programs for the correct byte ordering or using the qmconv tool (documented in the QM Reference Manual) to convert the object code on disk.

Application developers should use the @DS token where it is necessary to embed pathnames in programs. This token evaluates to the directory delimiter character appropriate to the system on which the program is executed.


Hashed files and indices are fully portable across all QM platforms of the same byte ordering but must be converted using the qmconv tool if the byte ordering is different. Attempting to open a file of the wrong byte ordering will fail.

Directory files are portable across all QM platforms and require no conversion. There is no platform specific difference in the reserved character substitions that are applied to the underlying file names.


Compiled dictionary items (C/I-type or A/S-type with a correlative) use the same automatic object code conversion as described above for QMBasic. Again, there is some minor benefit in recompiling dictionaries if the byte ordering is different.


F, Q or V-type VOC items may contain pathnames. If the file structure names on the system to which the application is moved match those of the original system but use a different pathname delimiter, this can be corrected automatically using a simple tool that is in the standard global catalogue:

   *fixpath {account.name | account.path} 
where account.name or account.path specify the name or location of the account to be converted. If omitted, the current account is used.

Related Articles

00096: Moving QM Accounts Between Systems

Please tell us if this article was helpful
Very     Slightly     Not at all
Email (optional)