|Powered by QM on a Linux server|
KnowledgeBase 00113: Use of Borland C
Prior to QM release 3.2-2, the 32-bit Windows version of QM was built using the Borland C++ Builder compiler. This compiler is no longer supported and the run time library has not been updated to extend its internal daylight saving time tables beyond their previous end point.
The effect of this problem only shows when using the SYSTEM(1035) function or the EPOCH() function to get a UTC time value. The returned value is offset from its correct value by one hour when daylight saving time is in effect. Other use of time related functions is not affected.
The only solution to this problem was to move to use of the Microsoft C compiler that is fully supported and continues to handle dates correctly. The 64-bit Windows version of QM was not affected as this was built using the Microsoft compiler from its introduction.
From a user's viewpoint, the core QM executable is not affected by this change except to fix the daylight saving time bug, however, there are possible implications for developers who use Borland C to interface with QM because Microsoft and Borland use different library formats that are incompatible. In particular, Borland links DLLs using a function number corresponding to their sequence in the source code whereas Microsoft locates a function by name in a sorted list.
The import library for the QMClilib.dll dynamic link library released in the bin subdirectory of the QMSYS account was previously present in two forms. The qmcllbms.lib library was for users of Microsoft C and the qmcllbbl.lib library was for users of Borland C.
From release 3.2-2, the Microsoft import library is renamed qmclilib.lib though a copy named qmcllbms.lib will continue to be present for at least a year. The Borland import library, qmcllbbl.lib, will no longer be present in the QM release package though the installer will not delete it.
Because the daylight saving time bug has the possibility of affecting user written application code, it is strongly recommended that any developer currently using Borland C should move to the Microsoft compiler. It is recognised, however, that this may take some time. A version of QMClilib.dll built with Borland C and an associated import library will continue to be available on request.
The QMExtCall.dll dynamic link library has the same issue. The import library has been renamed qmextcall.lib but a copy will using the old name qmextcallms.lib will continue to be released for at least a year. The Borland C equivalent, qmextcallbl.lib, will no longer be included in the release package.