![]() |
Kerridge ToolSet DivisionYear 2000 and KCML |
KCML itself has no date dependencies that will stop it operating after 1999-12-31. Nor are there any date dependencies in the licenses or dongles used to secure KCML. The new millennium is much more an issue for applications, and especially database applications, written in KCML rather than for KCML itself.
There are some issues to do with date functions within KCML that may impact certain applications but if applications written in KCML do not use any of these functions, and many do not, then they will not have any Y2K problem with respect to KCML. Contact your applications vendor for guidance on application date dependency within that application.
The DATE function
This returns today's date in a 6 byte string using a YYMMDD format. On 1 January 2000 it will return 000101 and so will be ambiguous with 1 January 1900. To help software developers resolve this ambiguity a new $TODAY function was introduced in KCML 4.0.18 which will return today's date in an 8 byte string as CCYYMMDD. Software developers should replace DATE with $TODAY.
There was a bug in the DATE function which caused the 2000-01-01 date to be returned as 0:0101. This bug was found in 1996 and fixed from KCML 4.0.18.2100 and all KCML 5
Platter image program files
When a program is saved to a program platter image the date is written into the program trailer sector. This had the same problem as the DATE function and will save a date of 200:0101 on 2000-01-01. This is extremely unlikely to affect the running of an operational system and is probably only of concern to certain program developers who may wish to inspect these dates. This is fixed in all Unix KCML builds from 4.0.20.4215, 5.01.00.4205 and 5.02.00.4215. It does not affect any Kerridge written application software.
NOTE:Through an oversight, this problem with program date stamps was not fixed on dongled DOS or Windows KCML 4.0.20 build 4336. Despite the build number this code actually preceeds the fix. A special release with a build number of 6007 was issued in January 2000 to update this and is available from this site.
Julian date conversions
Some specific application programs (e.g. Kerridge Rev7 and Rev8) use the External Functions CALL R7_J2DATE and CALL R7_DATE2J which are supplied with KCML to convert dates in DD/MM/YY or DD/MM/CCYY format to and from Julian dates. A Julian date is a uniform count of the number of days from a remote epoch in the past (24 Nov 4714 BCE). There were some bugs with dates in the year 2000 itself which are fixed in KCML 4.0.20. and all versions of KCML 5. Also in this fix is support for a rule to handle conversions from dates with no specified century. The value of $OPTIONS RUN byte 48 is interpreted as the start year for dates in the 1900 century. The default value is HEX(20) so dates with a year of 00 to 31 will be considered to be in the range 2000 to 2031. Dates of a year of 32 to 99 will be considered as 1932 to 1999.
In KCML5 the CONVERT DATE function can be used to convert dates in ISO format CCYY-MM-DD to and from julian date numbers. This should be preferred to the CALL functions in all cases.
There are no issues with the year 2000 revealed in testing Kclient.
There are no issues with the year 2000 revealed in testing the WDW terminal emulator.
Back to KCML developers contents page