gm2-libs-iso/SysClock#

DEFINITION MODULE SysClock;

(* Facilities for accessing a system clock that records the date
   and time of day *)

CONST
maxSecondParts  (const)
  maxSecondParts = 1000000 ;

TYPE
Month (type)
  Month    = [1 .. 12];
Day (type)
  Day      = [1 .. 31];
Hour (type)
  Hour     = [0 .. 23];
Min (type)
  Min      = [0 .. 59];
Sec (type)
  Sec      = [0 .. 59];
Fraction (type)
  Fraction = [0 .. maxSecondParts];
UTCDiff (type)
  UTCDiff  = [-780 .. 720];
DateTime (type)
  DateTime =
    RECORD
      year:      CARDINAL;
      month:     Month;
      day:       Day;
      hour:      Hour;
      minute:    Min;
      second:    Sec;
      fractions: Fraction;      (* parts of a second *)
      zone:      UTCDiff;       (* Time zone differential
                                   factor which is the number
                                   of minutes to add to local
                                   time to obtain UTC. *)
      summerTimeFlag: BOOLEAN;  (* Interpretation of flag
                                   depends on local usage. *)
    END;

CanGetClock
PROCEDURE CanGetClock(): BOOLEAN;
(* Tests if the clock can be read *)

CanSetClock
PROCEDURE CanSetClock(): BOOLEAN;
(* Tests if the clock can be set *)

IsValidDateTime
PROCEDURE IsValidDateTime(userData: DateTime): BOOLEAN;
(* Tests if the value of userData is a valid *)

GetClock
PROCEDURE GetClock(VAR userData: DateTime);
(* Assigns local date and time of the day to userData *)

SetClock
PROCEDURE SetClock(userData: DateTime);
(* Sets the system time clock to the given local date and
   time *)

END SysClock.