{$S Dates}
{$e err.log.text}
{****************************************************************************}
{                                                                            }
{                            File: Pas/Dates                                 }
{                                                                            }
{                    (C) Copyright 1984  Apple Computer, Inc.                }
{                                                                            }
{                                                                11-Feb-84   }
{****************************************************************************}

{$I Flags.text }
{$r-} {$u-}

UNIT Dates;

  INTERFACE

    USES {$U n/SULib} StdUnit,
         {$U SysCall} SysCall;

    PROCEDURE GetTD(TD: SUStrP);

  IMPLEMENTATION

    PROCEDURE GetTD{TD: SUStrP};

      VAR
        ErrNum, MM, DD, YY: Integer;
        DaysInMonth: ARRAY [1..12] OF 1..31;
        MonthName: ARRAY [1..12] OF PACKED ARRAY [1..3] OF Char;
        S: String[40];
        SysTime: Time_Rec;

      PROCEDURE InitYear;

        BEGIN {InitYear} {!} {[g=2]}
          DaysInMonth[01] := 31;              MonthName[01] := 'Jan';
          DaysInMonth[02] := 28;              MonthName[02] := 'Feb';
          DaysInMonth[03] := 31;              MonthName[03] := 'Mar';
          DaysInMonth[04] := 30;              MonthName[04] := 'Apr';
          DaysInMonth[05] := 31;              MonthName[05] := 'May';
          DaysInMonth[06] := 30;              MonthName[06] := 'Jun';
          DaysInMonth[07] := 31;              MonthName[07] := 'Jul';
          DaysInMonth[08] := 31;              MonthName[08] := 'Aug';
          DaysInMonth[09] := 30;              MonthName[09] := 'Sep';
          DaysInMonth[10] := 31;              MonthName[10] := 'Oct';
          DaysInMonth[11] := 30;              MonthName[11] := 'Nov';
          DaysInMonth[12] := 31;              MonthName[12] := 'Dec'; {!} {[g=1]}
        END; {InitYear}

      PROCEDURE SetDigits(N, Offset: Integer);

        BEGIN {SetDigits - convert n to a character pair and place the characters
               in td^[Offset]}
          TD^[Offset] := Chr(Ord('0') + (N DIV 10));
          TD^[Offset + 1] := Chr(Ord('0') + (N MOD 10));
        END; {SetDigits}

      BEGIN {GetTD}
        InitYear;
        Get_Time(ErrNum, SysTime);
        IF ErrNum <> 0 THEN
          BEGIN
          S := 'Get_Time Error!!!';
          SUSetStr(TD, @S);
          END
        ELSE
          BEGIN
          S := 'HH:MM:SS DD-MMM-YY ';
          SUSetStr(TD, @S);
          WITH SysTime DO
            BEGIN
            DD := Day;
            YY := Year MOD 100;
            SetDigits(Hour, 1); SetDigits(Minute, 4); SetDigits(Second, 7);
            END;
          MM := 1;
          IF (YY MOD 4) = 0 THEN DaysInMonth[2] := 29;
          WHILE DD > DaysInMonth[MM] DO
            BEGIN
            DD := DD - DaysInMonth[MM];
            MM := MM + 1;
            END;
          DaysInMonth[2] := 28;

          SetDigits(DD, 10);
          TD^[13] := MonthName[MM, 1]; TD^[14] := MonthName[MM, 2];
          TD^[15] := MonthName[MM, 3];
          SetDigits(YY, 17);
          END;
      END; {GetTD}
END.

