home *** CD-ROM | disk | FTP | other *** search
- {->>>>GetDate<<<<----------------------------------------------}
- { }
- { Filename: GETDATE.SRC -- Last Modified 10/25/85 }
- { }
- { This routine returns the current system date through DOS }
- { call $2A. It requires a prior definition of types DateRec }
- { and String80. DateString is formatted this way: }
- { }
- { Wednesday, July 17, 1986 }
- { }
- { DateRec = RECORD }
- { DateComp : Integer; }
- { DateString : String80; }
- { Year,Month,Day : Integer; }
- { DayOfWeek : Integer }
- { END; }
- { }
- { DayOfWeek is a code from 0-6, with 0 = Sunday. }
- { DateComp is an integer generated by the formula: }
- { DateComp = (Year-1980)*512 + (Month*64) + Day }
- { It is used for comparing two dates to determine which is }
- { earlier. }
- {--------------------------------------------------------------}
-
- PROCEDURE GetDate(VAR Today : DateRec);
-
- TYPE
- String9 = String[9];
- Reg = RECORD
- CASE Boolean OF
- False : (Word : Integer);
- True : (LoByte,HiByte : Byte)
- END;
-
- Regpack = RECORD
- AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags : Reg
- END;
-
-
- CONST
- MonthTags : ARRAY [1..12] of String9 =
- ('January','February','March','April','May','June','July',
- 'August','September','October','November','December');
- DayTags : ARRAY [0..6] OF String9 =
- ('Sunday','Monday','Tuesday','Wednesday',
- 'Thursday','Friday','Saturday');
-
- VAR
- Regs : RegPack;
- Temp1 : String80;
-
- BEGIN
- Regs.AX.HiByte := $2A; MSDOS(Regs);
- WITH Today DO
- BEGIN
- Year := Regs.CX.Word;
- Month := Regs.DX.HiByte;
- Day := Regs.DX.LoByte;
- DayOfWeek := Regs.AX.LoByte;
- DateString := DayTags[DayOfWeek] + ', ';
- Str(Day,Temp1);
- DateString := DateString +
- MonthTags[Month] + ' ' + Temp1 + ', ';
- Str(Year,Temp1);
- DateString := DateString + Temp1;
- DateComp := (Year - 1980) * 512 + (Month * 64) + Day
- END
- END;