| (* Library module defined by the International Standard |
| Information technology - programming languages |
| BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. |
| |
| Copyright ISO/IEC (International Organization for Standardization |
| and International Electrotechnical Commission) 1996-2021. |
| |
| It may be freely copied for the purpose of implementation (see page |
| 707 of the Information technology - Programming languages Part 1: |
| Modula-2, Base Language. BS ISO/IEC 10514-1:1996). *) |
| |
| DEFINITION MODULE SysClock; |
| |
| (* Facilities for accessing a system clock that records the date |
| and time of day *) |
| |
| CONST |
| maxSecondParts = 1000000 ; |
| |
| TYPE |
| Month = [1 .. 12]; |
| Day = [1 .. 31]; |
| Hour = [0 .. 23]; |
| Min = [0 .. 59]; |
| Sec = [0 .. 59]; |
| Fraction = [0 .. maxSecondParts]; |
| UTCDiff = [-780 .. 720]; |
| 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; |
| |
| PROCEDURE CanGetClock(): BOOLEAN; |
| (* Tests if the clock can be read *) |
| |
| PROCEDURE CanSetClock(): BOOLEAN; |
| (* Tests if the clock can be set *) |
| |
| PROCEDURE IsValidDateTime(userData: DateTime): BOOLEAN; |
| (* Tests if the value of userData is a valid *) |
| |
| PROCEDURE GetClock(VAR userData: DateTime); |
| (* Assigns local date and time of the day to userData *) |
| |
| PROCEDURE SetClock(userData: DateTime); |
| (* Sets the system time clock to the given local date and |
| time *) |
| |
| END SysClock. |