program ART;
{by Andrea Eugenio Naimoli - Activate Recording Time [RUN 3.0]}

{ INIZIALIZZAZIONE VARIABILI }

{$M 8192,0,0}
uses crt,Dos;
var args,c,cd,ch,cm,cs,name:string;
    a:integer;
    h,m,s,d,h1,m1,s1:word;
    ss,se,t,h2,m2,s2,day:longint;
    f:text;

{ LA PROCEDURA Esci(code) RESTITUISCE UN CODICE DI ERRORE }

procedure Esci(e:byte);
begin
 case e of
 1:writeln('Usage: ART filename.ext [args,...]');
 2:writeln('Error #2 - COMMAND.COM not executable')
 end;
 halt(e)
end;

BEGIN
 writeln;writeln('Andrea Eugenio Naimoli presents ART');writeln;

{ SE CI SONO DEI PARAMETRI LI ACCODA AL NOME DEL FILE }

 if paramcount=0 then Esci(1);
 if paramcount>1 then for a:=2 to paramcount do args:=args+' '+paramstr(a);
 c:='/c '+paramstr(1)+args;

{ LEGGE IL TEMPO INIZIALE E LO MEMORIZZA TUTTO IN SECONDI }

 gettime(h,m,s,d);h2:=h;m2:=m;s2:=s;ss:=s2+m2*60+h2*3600;

{ ESEGUE IL PROGRAMMA RICHIAMATO }

 SwapVectors;
 Exec(GetEnv('COMSPEC'), c);
 SwapVectors;

{ LEGGE IL TEMPO FINALE E CALCOLA IL TEMPO TRASCORSO }

 gettime(h,m,s,d);h2:=h;m2:=m;s2:=s;se:=s2+m2*60+h2*3600;
 se:=se-ss;
 h2:=se div 3600;h1:=h2;
 m2:=(se-h1*3600) div 60;m1:=m2;
 s2:=se-h1*3600-m1*60;s1:=s2;
 if DosError <> 0 then Esci(2);

{ IL FILE-DATI E' IL NOME DEL FILE ESEGUITO + .ART}

 a:=pos('.',paramstr(1));
 if a=0 then name:=paramstr(1)+'.art'
 else name:=copy(paramstr(1),1,a-1)+'.art';

{ VERIFICA LA PRESENZA DEL FILE-DATI }

 {$I-}
 assign(f,name);
 reset(f);
 close(f);
 {$I+}

{ SE CI SONO DATI MEMORIZZATI LI LEGGE }

 if ioresult=0 then begin
  reset(f);
  read(f,c);
  close(f);
  cd:=copy(c,1,pos('-',c)-1);
  ch:=copy(c,pos('-',c)+1,pos(':',c)-pos('-',c)-1);
  cm:=copy(c,pos(':',c)+1,length(c));
  cs:=copy(cm,pos(':',cm)+1,length(cm));
  cm:=copy(cm,1,pos(':',cm)-1);
  val(cd,day,a);
  val(ch,h2,a);
  val(cm,m2,a);
  val(cs,s2,a);
  ss:=s2+m2*60+h2*3600+day*86400
 end
 else ss:=0;

{ CALCOLA IL TEMPO TOTALE (ATTUALE+MEMORIZZATO) E MOSTRA I DATI }

 t:=ss+se;day:=t div 86400;h2:=(t-day*86400) div 3600;
 m2:=(t-day*86400-h2*3600) div 60;s2:=t-day*86400-h2*3600-m2*60;
 writeln('Actual time is - ',h1:2,':',m1:2,':',s1:2);
 writeln('Total time is	- ',day:2,'-',h2:2,':',m2:2,':',s2:2);

{ MEMORIZZA I NUOVI DATI SUL FILE-DATI }

 rewrite(f);
 writeln(f,day,'-',h2,':',m2,':',s2);
 close(f);
 writeln
END.