Changes in 1.2 ~~~~~~~~~~~~~~ It has been pointed out to me that I forgot to specify the default rexx extension of ".rexx". Thus, scripts in the form of foo.rexx would not be started unless you actually stated :REXX foo.rexx instead of being able to use :REXX foo alone. Also added a semaphore lock in the GetJobNum()/FreeJobNum() routines to prevent the job table from possibly being clobbered by EndSystemJob() getting called at the same time CyberCron was trying to start another job. Changes in 1.3 ~~~~~~~~~~~~~~ It has been requested that CyberCron become sensitive to small changes backwards in time. This is usually caused by reloading the system clock from the battery backed clock once a day (as the battery backed clock tends to keep better time on some machines). Before running the event scan, CyberCron will now check to see if time has gone backwards and will delay event scans until it reaches the next minute that it would have actually run a scan at if the time hadn't shifted backwards. There is a 5 minute threshhold limit, however, so if time goes backwards more than that (for instance, daylight savings time changes state and you go back an hour) then CyberCron assumes you know what you are doing and will use the new time without delay. I also switched the static declarations of struct RDArgs to AllocDosObject()/FreeDosObject() pairs. This should help insure that CyberCron will run on any future versions of the OS, even if it will be a few eons before I actually would have had to worry about this... :-)