[Back to DATETIME SWAG index] [Back to Main SWAG index] [Original]

    {$R-,S+,I+,D+,T-,F-,V+,B-,N-,L+ }
    {$M 16384,0,1024 }
    program ifday;
    {
    ***********************************************************************

    IFDAY.PAS
    8/18/93
    by Bryan Valencia.

    Shows use of the EXEC Command to run Command.com with a command line
    taken from user entered parameters.

    Include IFDAY in Batch Files to Run lines only on certain days.

    ***********************************************************************
    }
    uses DOS, CRT;
    var
            y,m,d,dow:word;

    procedure help;
    begin
            textattr:=yellow;
            gotoxy(1,wherey); ClrEOL;
            Writeln('IFDAY by Bryan Valencia [71553,3102]');
            Writeln('SYNTAX');
            textattr:=lightgreen;
            Writeln('IFDAY [DAYOFWEEK,DAYNO] COMMAND');
            WRiteln('IFDAY 4 MIRROR c:  (if today is the 4th, mirror the C: drive).');
            WRiteln('IFDAY MON SD C: /Unfrag  (if today is Monday, run speed disk).');
            Halt;
    end;

    Procedure PerformCommand;
    var
            s:string;
            t:byte;
    Begin
            s:='';
            for t:=2 to paramcount do s:=s+paramstr(t)+' ';
            Writeln(s);
            Exec('c:\Command.Com','/c '+s);
            Halt;
    end;

    Function Checknum(i:integer):boolean;
    var
            y,m,d,dow:word;
    begin
            Getdate(y,m,d,dow);
            if i=d then Checknum:=true else Checknum:=False;
    end;
    Function CheckDay(S:String):boolean;
    var
            y,m,d,dow:word;
            ss:string[3];
    begin
            Getdate(y,m,d,dow);
            Case dow of
                    0:SS:='SU';
                    1:SS:='MO';
                    2:SS:='TU';
                    3:SS:='WE';
                    4:SS:='TH';
                    5:SS:='FR';
                    6:SS:='SA';
            end;
            if S=SS then CheckDay:=true else CheckDay:=False;
    end;

    Procedure GO;
    var
            s:string[2];
            v,t:byte;
            e:integer;

    Begin
            s:=paramstr(1);
            for t:=1 to 2 do s[t]:=upcase(s[t]);
            Val(s,v,e);
            if e=0 then if Checknum(v) then PerformCommand;
            if e<>0 then if CheckDay(S) then PerformCommand;
    end;

    Begin
            if paramcount<2 then help else GO;
    End.

[Back to DATETIME SWAG index] [Back to Main SWAG index] [Original]