t_sysclock.mod 791 B

12345678910111213141516171819202122232425
  1. MODULE TSysClock;
  2. // ISO SysClock: CanGetClock/CanSetClock, GetClock fills a valid UTC
  3. // DateTime, IsValidDateTime accepts it, SetClock is a no-op. Exit 42.
  4. IMPORT SysClock;
  5. VAR ExitCode : INTEGER;
  6. VAR dt : SysClock.DateTime;
  7. BEGIN
  8. IF SysClock.CanGetClock() AND NOT SysClock.CanSetClock() THEN
  9. SysClock.GetClock(dt);
  10. SysClock.SetClock(dt);
  11. IF SysClock.IsValidDateTime(dt)
  12. AND (dt.year >= 2020) AND (dt.year <= 2100)
  13. AND (dt.month >= 1) AND (dt.month <= 12)
  14. AND (dt.day >= 1) AND (dt.day <= 31)
  15. AND (dt.hour <= 23) AND (dt.minute <= 59) AND (dt.second <= 59)
  16. AND (dt.fractions = 0) AND (dt.zone = 0)
  17. AND NOT dt.summerTimeFlag THEN
  18. ExitCode := 42
  19. ELSE
  20. ExitCode := 1
  21. END
  22. ELSE
  23. ExitCode := 2
  24. END
  25. END TSysClock.