Modula-2 Reloaded

A Modern Typesafe & Literate Programming Notation

Site Menu

Project

Specification

Implementation

Recommendations

Reference

Needs Updating

Work in Progress

Wastebasket

Wiki Manual

edit SideBar

Sys Clock

DEFINITION MODULE SysClock;

(* Interface to the System's Clock *)


IMPORT CARDINAL64;


TYPE
    MilliSecs = ALIAS OF CARDINAL64;

    Status = ( success, invalidValue, invalidOffset, accessDenied );


(* Constants defining the start reference value of the system's clock *)

CONST
    startYear = <target system dependent value>;  (* any integer value *)
    startMonth = <target system dependent value>; (*      1 .. 12      *)
    startDay = <target system dependent value>;   (*      1 .. 31      *)
    startHour = <target system dependent value>;  (*      0 .. 23      *)
    startMin = <target system dependent value>;   (*      0 .. 59      *)
    startSecs = <target system dependent value>;  (*    0.0 .. 59.999  *)


(* Read the Clock *)

PROCEDURE GetClock ( VAR elapsed  : MilliSecs;
                     VAR tzOffset : INTEGER;
                     VAR status   : Status );
(* Reads the value of the system clock. Passes the elapsed time since the
   system clock's start value back in elapsed and the time zone offset in
   tzOffset. The value of elapsed is measured in milli-seconds, the value
   of tzOffset is measured in minutes relative to UTC. Values of tzOffset
   range from -720 minutes (UTC-1200hrs) to +720 minutes (UTC+1200hrs). *)


(* Write to the Clock *)

PROCEDURE SetClock ( newValue   : MilliSecs;
                     tzOffset   : INTEGER;
                     VAR status : Status );
(* Sets the value of the system clock. NewValue is a value of elapsed time
   since the system clock's defined start value in milli-seconds and
   tzOffset is the time zone offset in minutes relative to UTC. *)


(* Check Writing Privilege *)

PROCEDURE ProcessMaySetClock : BOOLEAN;
(* Returns TRUE if the current process is privileged to set the system clock,
   otherwise FALSE. *)

END SysClock.