home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / modula2 / tutorial / programs / entypes.mod < prev    next >
Text File  |  1993-03-14  |  2KB  |  63 lines

  1.                                         (* Chapter 10 - Program 1 *)
  2. MODULE Entypes;
  3.  
  4. FROM InOut IMPORT WriteString, WriteLn;
  5. FROM RealInOut IMPORT WriteReal;
  6.  
  7. TYPE Days = (mon,tue,wed,thu,fri,sat,sun);
  8.      TimeOfDay = (morning,afternoon,evening,night);
  9.  
  10. VAR Day             : Days;
  11.     Time            : TimeOfDay;
  12.     RegularRate     : REAL;
  13.     EveningPremium  : REAL;
  14.     NightPremium    : REAL;
  15.     WeekendPremium  : REAL;
  16.     TotalPay        : REAL;
  17.  
  18. BEGIN    (* Main program *)
  19.    WriteString('                         Pay rate table');
  20.    WriteLn;
  21.    WriteLn;
  22.    WriteString('  DAY       Morning    Afternoon');
  23.    WriteString('    Evening      Night');
  24.    WriteLn;
  25.  
  26.    RegularRate := 12.00;      (* This is the normal pay rate *)
  27.    EveningPremium := 1.10;    (* 10 percent extra for working late *)
  28.    NightPremium := 1.33;      (* 33 percent extra for graveyard *)
  29.    WeekendPremium := 1.25;    (* 25 percent extra for weekends *)
  30.  
  31.    FOR Day := mon TO sun DO
  32.  
  33.       CASE Day OF
  34.         mon : WriteString('Monday   '); |
  35.         tue : WriteString('Tuesday  '); |
  36.         wed : WriteString('Wednesday'); |
  37.         thu : WriteString('Thursday '); |
  38.         fri : WriteString('Friday   '); |
  39.         sat : WriteString('Saturday '); |
  40.         sun : WriteString('Sunday   ');
  41.       END;    (* of CASE statment *)
  42.  
  43.       FOR Time := morning TO night DO
  44.          CASE Time OF
  45.            morning   : TotalPay := RegularRate; |
  46.            afternoon : TotalPay := RegularRate; |
  47.            evening   : TotalPay := RegularRate * EveningPremium; |
  48.            night     : TotalPay := RegularRate * NightPremium;
  49.          END;  (* of CASE statement *)
  50.  
  51.          CASE Day OF
  52.            sat : TotalPay := TotalPay * WeekendPremium; |
  53.            sun : TotalPay := TotalPay * WeekendPremium;
  54.          ELSE (* Do nothing *)
  55.          END;  (* of CASE statement *)
  56.  
  57.          WriteReal(TotalPay,12);
  58.       END;  (* of Time loop *)
  59.       WriteLn;
  60.    END;  (* of FOR loop *)
  61.  
  62. END Entypes.
  63.