home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / MADTRB16.ZIP / DATETIME.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1986-02-06  |  2.0 KB  |  44 lines

  1. PROGRAM DateTime;       (* Cary V. Millsap  18 Jun 85 *)
  2.  
  3. TYPE  Registers = RECORD
  4.                     AX, BX, CX, DX, BP, SI, DI, DS, ES, Flags: INTEGER; END;
  5.       Date =      RECORD
  6.                     DayOfWeek, Year, Month, Day: INTEGER; END;
  7.       Time =      RECORD
  8.                     Hours, Minutes, Seconds, Hundredths: INTEGER; END;
  9.  
  10. VAR   r     : Registers;
  11.       d     : Date;
  12.       t     : Time;
  13.  
  14. CONST WeekSt  : String[21] = 'SunMonTueWedThuFriSatSun';
  15.       MonthSt : String[36] = 'JanFebMarAprMayJunJulAugSepOctNovDec';
  16.  
  17. PROCEDURE GetDate(VAR d: Date);
  18.   BEGIN
  19.     r.AX:= $2A00;              (*Place function number $2A (Get date) into AH*)
  20.     MsDos (r);                 (*Invoke DOS interrupt $21                    *)
  21.     d.DayOfWeek:= LO(r.AX);    (*Assign value of AL to d.DayOfWeek           *)
  22.     d.Year     := r.CX;        (*Assign value of CX to d.Year                *)
  23.     d.Month    := HI(r.DX);    (*Assign value of DH to d.Month               *)
  24.     d.Day      := LO(r.DX);    (*Assign value of DL to d.Day                 *)
  25.   END;
  26.  
  27. PROCEDURE GetTime(VAR t: Time);
  28.   BEGIN
  29.     r.AX:= $2C00;              (*Place function number $2C (Get time) into AH*)
  30.     MsDos (r);                 (*Invoke DOS interrupt $21                    *)
  31.     t.Hours     := HI(r.CX);   (*Assign value of CH to t.Hours               *)
  32.     t.Minutes   := LO(r.CX);   (*Assign value of CL to t.Minutes             *)
  33.     t.Seconds   := HI(r.DX);   (*Assign value of DH to t.Seconds             *)
  34.     t.Hundredths:= LO(r.DX);   (*Assign value of DL to t.Hundredths          *)
  35.   END;
  36.  
  37. BEGIN
  38.   GetDate (d);
  39.   WriteLn ('Date is ',Copy(WeekSt,3 * d.DayOfWeek + 1,3),d.Day:3,' ',
  40.                       Copy(MonthSt,3 * d.Month - 2,3),d.Year:5);
  41.   GetTime (t);
  42.   WriteLn ('Time is ',t.Hours:2, ':',t.Minutes:2, ':',
  43.                       t.Seconds:2, '.', t.Hundredths:2);
  44. END.