home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol023 / brkdate.lib < prev    next >
Text File  |  1984-04-29  |  866b  |  40 lines

  1.  
  2. {    BRKDATE
  3.  
  4.     Converts days stored as integer and converts into month, day,
  5.     year and day of week.
  6. }
  7.  
  8. PROCEDURE brkdate (days : integer; VAR mo, da, yr, weekday : byte);
  9.  
  10. CONST    yrbase = 10;
  11.     yrfix = yrbase - 1;
  12.  
  13. VAR    data, temp, adjust, yradj : integer;
  14.  
  15. begin
  16.     adjust := 1 + yrfix mod 4 + (((yrfix mod 28) div 4) * 5);
  17.     yradj := (yrbase mod 4) * 365;
  18.     weekday := (days + adjust) mod 7;
  19.     data := trunc((days + yradj) / 365.25) - yrbase mod 4;
  20.     yr := data + yrbase;
  21.     temp := days - (365 * data) - (data + yrfix mod 4) div 4;
  22.     mo := 0;
  23.     data := 0;
  24.     repeat
  25.         if (data < temp) then
  26.             begin
  27.             mo := mo + 1;
  28.             temp := temp - data
  29.             end;
  30.         case mo of
  31.             1,3,5,7,8,10,12 : data := 31;
  32.             4,6,9,11 : data := 30;
  33.             2 : if (yr mod 4 = 0) then data := 29
  34.                 else data := 28
  35.             end
  36.     until (data >= temp) or (mo = 12);
  37.     da := temp
  38. end;
  39.  
  40.