oberonbyexample/examples/enums_example/1/Days.Mod.ob2
Antranig Vartanian 95b512baf4
post rebranding
2024-05-11 19:17:23 +04:00

33 lines
597 B
Text

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.