oberonbyexample/enums_example/1/Days.Mod
2017-06-02 21:52:31 +04:00

33 lines
597 B
Modula-2

MODULE Days;
TYPE
Day* = POINTER TO DayDesc;
DayDesc = RECORD
num: INTEGER
END;
Week* = ARRAY 7 OF Day;
VAR
sun*, mon*, tue*, wed*, thu*, fri*, sat* : Day;
week: Week;
PROCEDURE Next*(d : Day): Day;
BEGIN RETURN week[(d.num + 1) MOD 7];
END Next;
PROCEDURE Prev*(d: Day): Day;
BEGIN RETURN week[(d.num - 1) MOD 7];
END Prev;
PROCEDURE day(VAR d: Day; num: INTEGER);
BEGIN NEW(d); d.num := num; week[num] := d;
END day;
BEGIN
day(sun, 0);
day(mon, 1);
day(tue, 2);
day(wed, 3);
day(thu, 4);
day(fri, 5);
day(sat, 6);
END Days.