PROGRAM scaler_operations;

TYPE days = (mon,tue,wed,thu,fri,sat,sun);
     work = mon..fri;
     rest = sat..sun;

VAR  day      : days; (* This is any day of the week *)
     workday  : work; (* These are the the working days *)
     weekend  : rest; (* The two weekend days only *)
     index    : 1..12;
     alphabet : 'a'..'z';
     start    : 'a'..'e';

BEGIN  (* main program *)
(*  The following statements are commented out because they contain
    various errors that will halt compilation.

  workday := sat;   sat is not part of workday's subrange.
  rest := fri;      fri is not part of weekend's subrange.
  index := 13;      index is only allowed to go up to 12,
  index := -1;        and down to 1.
  alphabet := 'A'   alphabet, as defined, includes only the
                      lower case alphabet.
  start := 'h'      h is not in the first five letters.

  End of commented out section.  *)

workday := tue;
weekend := sat;
day := workday;
day := weekend;
index := 3+2*2;
start := 'd';
alphabet := start;
                          (* since alphabet is "d"    *)
start := succ(alphabet);  (* start will be 'e'        *)
start := pred(alphabet);  (* start will be 'c'        *)
day := wed;
day := succ(day);  (* day will now be 'thu' *)
day := succ(day);  (* day will now be 'fri' *)
index := ord(day); (* index will be 4 (fri = 4) *)

END. (* of main program *)
